MON-DB-mysql通過zabbix監控processlist數量
本方案基本思路為先通過指令碼將mysql的processlist數量輸出至文字檔案,之後通過zabbix_agent的自定義引數方式獲取檔案內的值並傳輸至zabbix的伺服器端
1.mysql主從複製及同步延遲輸出至文字檔案
指令碼以及狀態文字檔案的存放路徑:/data/myscript (可按需配置)
建立目錄
命令:mkdir /data/myscript
進入目錄
命令:cd /data/myscript
建立processlist數量記錄檔案
命令:touch processlist_num
建立指令碼檔案:mysql_processlist_monitor.sh
命令:vi mysql_processlist_monitor.sh
###新增如下內容###
#!/bin/bash
cd /data/myscript
/usr/local/mysql/bin/mysql -uroot -pXXXXXXXX -e "select count(*) from information_schema.processlist;"|awk '{print $(NF-1)}'|sed -n "2,2p" > processlist_num
###以上###
說明:
其中XXXX為mysql資料庫root使用者的密碼,建議建立一個只能檢視資料庫連線情況的賬號status_check。
/usr/local/mysql/bin/mysql 為mysql命令全路徑
為指令碼新增可執行許可權:
chmod +x mysql_processlist_monitor.sh
測試指令碼:
命令:/data/myscript/mysql_processlist_monitor.sh #執行指令碼
命令:more /data/myscript/processlist_num #檢視是否有返回值
2.調整zabbix_agent配置,新增自定義引數
zabbix_agent配置檔案路徑:/usr/local/zabbix/etc/zabbix_agentd.conf
配置zabbix_agentd.conf
命令:vi /usr/local/zabbix/etc/zabbix_agentd.conf
###新增如下內容###
UserParameter=mysql_processlist_count,cat /data/myscript/processlist_num
###以上###
說明:
zabbix的自定義引數的格式為
UserParameter=key,command #key為定義的鍵值,command為獲得返回引數的命令
通過定義mysql_processlist_count並讀取對應檔案獲取對應的返回值
重啟zabbix
1)儲存檔案後重啟zabbix_agent
命令:ps -ef|grep zabbix
2)獲取所有zabbix的程序,並使用 kill -9 命令清除zabbix程序
命令:kill -9 程序號
3)確認zabbix程序清除完畢後使用systemctl啟動zabbix
命令:systemctl start zabbix_agentd
4)檢查zabbix平臺上該伺服器是否有多的返回值
3.配置定時任務持續刷連線數狀態
命令:crontab -e
###新增如下內容###
*/5 * * * * /data/myscript/mysql_processlist_monitor.sh
###以上###
4.zabbix監控內容
zabbix平臺通過監控mysql_processlist_count的值實現告警
mysql.processlist_count的值若大於1200,觸發告警通知管理員