當前位置:
首頁 > 知識 > 使用 zabbix 自動發現監控 MySQL

使用 zabbix 自動發現監控 MySQL

介紹

使用 zabbix 的 low-level 自動發現功能完成單主機多埠的監控, 詳見low_level_discovery, 整體上監控類似 percona 的zabbix監控插件, 不過使用mymonitor.pl替換了腳本ss_get_mysql_stats.php, 而且配置有點不同.

具體代碼及配置詳見: zabbix_mysql

1. 結構說明:

zabbix_mysql/
|-- README.md
|-- bin
| |-- get_mysql_stats_wrapper.sh # 對 mymonitor.pl 運行結果的一個封裝腳本, 默認 5 分鐘運行一次
| |-- mymonitor.pl # 等同 ss_get_mysql_stats.php 腳本
| `-- mysql_port.pl # 自動發現 MySQL 埠的腳本, 返回 json 格式的輸出
|-- install.sh # 安裝腳本
`-- templates
|-- userparameter_discovery_mysql.conf # zabbix_agent 配置參數
`-- zabbix_mysql_multiport.xml # zabbix_server 端模板

mymonitor.pl腳本依賴以下模塊:

perl-DBI
perl-DBD-mysql

監控需要的許可權包括: PROCESS, SUPER, REPLICATION SLAVE, 在mysql_port.pl腳本中通過netstat命令獲取運行 MySQL 的埠, 腳本以 zabbix 用戶(或普通用戶)啟動, 為避免許可權問題, 腳本 install.sh 默認執行chmod +s /bin/netstat命令.

mymonitor.pl 腳本默認以 monitor/monitor用戶及口令的方式連接 MySQL 獲取狀態, 可以在腳本的初始處修改默認密碼, 或者在運行時指定--user--password相關參數信息, 也可以在/home/mysql/.my.cnf指定用戶信息, 詳細可參見perldoc mymonitor.pl

get_mysql_stats_wrapper.sh腳本默認讀取mymonitor.pl生成的文件以響應 zabbix 的請求, 默認5分鐘一次; 同時因為需要頻繁(默認1分鐘)檢測 slave 運行狀態, 需要提供 MySQL 登錄信息, 以便 slave 的檢測.

2. 安裝說明

在 agent 端操作:

# git clone https://github.com/chenzhe07/zabbix_mysql.git /usr/local/zabbix_mysql
# bash /usr/local/zabbix_mysql/install.sh 192.168.1.2

192.168.1.2為內網 ip 地址, 這裡考慮到可能存在多個內網ip, 所以沒有自動獲取, 需要用戶手動添加.

在 server 端操作:

import templates/zabbix_mysql_multiport.xml using Zabbix UI(Configuration -> Templates -> Import),
and Create/edit hosts by assigning them 「MySQL」 group and linking the template 「MySQL_zabbix」 (Templates tab).

導入模板, 並將模板加到待監控的機器里.

3. 測試

# perl mymonitor.pl --host 10.0.0.10 --port 3300 --items hv
hv:36968
# perl mymonitor.pl --host 10.0.0.10 --port 3300 --items kx
kx:1070879944

# php ss_get_mysql_stats.php --host 10.0.0.10 --port 3300 --items hv
hv:36968
# php ss_get_mysql_stats.php --host 10.0.0.10 --port 3300 --items kx
kx:1070911408

# zabbix_get -s 10.0.0.10 -p 10050 -k "MySQL.Bytes-received[3300]"
472339244134

其它特性

較新的版本增加了 innodb 事務, 鎖, 長語句運行檢測:

item throttle
max_duration if > 100s, then trigger an alarm
waiter_count if > 10, then trigger an alarm
idle_blocker_duration if > 200s, then trigger an alarm

如下測試:

# zabbix_get -s cz-test2 -p 10050 -k "MySQL.max_duration[3301]"
max_duration:longest transaction active seconds: max time: 18, thread_id: 4838781, user: root@10.0.21.5:59980

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 達人科技 的精彩文章:

圖像工具包VintaSoftImaging.NET SDK v8.5,新增獨立web服務
UIDebuggingInformationOverlay在OC語法中使用
Zxing 的集成——Maven 對應 Gradle 的寫法
python 字元串常用方法
尚學堂高琪JAVA300篇視頻筆記(31-37)

TAG:達人科技 |

您可能感興趣

教你如何利用zabbix自動發現監控mongo資料庫
dubbo+zipkin調用鏈監控
zabbix監控linux磁碟性能
Zabbix低級發現監控supervisor管理的進程
FortiAppMonitor:用於監控macOS上的系統活動的強大工具
Linux上監控Tomcat down掉後自動重啟Tomcat
Apache SkyWalking 為.NET Core帶來開箱即用的分散式追蹤和應用性能監控
如何用zabbix 監控 tomcat
Python 腳本實現對 Linux 伺服器的監控
Spring Boot監控與管理的實現
監控管理之Spring Boot Admin使用
Prometheus+Grafana打造Mysql監控平台
在 Linux 中如何使用 iotop 和 iostat 監控磁碟 I/O 活動?
配置SAP Solution Manager連接監控遠程Microsoft SQL Server
springboot:使用Spring Boot Actuator監控應用
Spring Boot應用監控實戰
在 Linux 上用 Bash 腳本監控 messages 日誌
如何利用Pspy監控沒有Root許可權的Linux進程
利用Skywalking-netcore監控你的應用性能
在Linux終端中監控CPU利用率:Stress Terminal UI(s-tui)