Mysql自定義監控node
需求:公司須要作mysql的數據監控,對mysql的狀態,流量進行監控。mysql
分析:zabbix自動就有Template App MySQL模版,咱們只要添加mysql監控腳本就能夠實現自定義監控。web
配置以下:sql
zabbix的服務端搭建,這裏再也不演示,我這裏的zabbixserver已經配置好的了,直接進入mysql監控構建。 數據庫
mysql模板是 zabbix系統提供的,進入 zabbix web 後臺,配置-->主機羣組-->點擊「建立主機羣組」-->選擇template羣組,選擇模板「TemplateApp MySQL,Templdate OS Linux」,TemplateApp Zabbix Agen;TemplateApp MySQL依賴於模板TemplateApp Zabbix Agent因此也要添加。如圖一、圖2所示:vim
圖1bash
二、部署agent客戶端,使用ansible一健安裝,詳細能夠參考我安裝過程http://www.javashuo.com/article/p-wdxsjyjm-cq.htmlide
三、創建主機,添加zabbix戶端主機,添加模板。性能
配置-->主機-->點擊建立主機--> 建立zabbix客戶機(我這裏是node2.1)-->選擇模板選項,選擇模板「Template App MySQL」、「Templdate OS Linux」,「TemplateApp Zabbix Agent「,最後點擊左邊的「添加」按鈕,最後點擊「更新」完成建立。如圖三、圖4所示:
圖3
圖4
這裏能夠採用zabbix自帶的mysql模版,可是也須要在mysql服務器上準備獲取mysql status的腳本chk_mysql.sh,zabbix經過調用這個腳原本獲取mysql的運行信息。
在配置zabbix客戶端文件zabbix_agentd.conf裏面添加mysql監控信息:
[root@node2 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
UserParameter=mysql.version,mysql -V UserParameter=mysql.status[*],/usr/local/zabbix/scripts/chk_mysql.sh $1 #這個是放腳本的路徑 UserParameter=mysql.ping,netstat -ntpl |grep 3306 |grep mysql |wc |awk '{print $1}'
五、進入數據庫添加mysql賬號,(我這裏的數據庫是用yum裝的)
MariaDB [(none)]> GRANT PROCESS,SUPER,REPLICATION CLIENT ON *.* TO zabbix@'127.0.0.1' IDENTIFIED BY 'xiaozhang';
六、接下來準備mysql的運行信息監控,須要準備新的mysql監控腳本chk_mysql.sh。(名稱要與在zabbix客戶端添加的腳本路徑的名稱一致)
[root@node2 scripts]# mkdir /usr/local/zabbix/scripts/
[root@node2 scripts]# cat /usr/local/zabbix/scripts/chk_mysql.sh
#!/bin/sh # ------------------------------------------------------------------------------- # FileName: check_mysql.sh # Date: 2018/1/10 # Author: xiaozhang # Email: 847536944@qq.com MYSQL_SOCK="/var/lib/mysql/mysql.sock" MYSQL_USER='zabbix' MYSQL_PWD='xiaozhang' MYSQL_HOST='127.0.0.1' MYSQL_PORT='3306' ARGS=1 if [ $# -ne "$ARGS" ];then echo "Please input one arguement:" fi case $1 in Uptime) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f2 -d":"|cut -f1 -d"T"` echo $result ;; Com_update) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_update"|cut -d"|" -f3` echo $result ;; Slow_queries) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK status |cut -f5 -d":"|cut -f1 -d"O"` echo $result ;; Com_select) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_select"|cut -d"|" -f3` echo $result ;; Com_rollback) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_rollback"|cut -d"|" -f3` echo $result ;; Questions) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f4 -d":"|cut -f1 -d"S"` echo $result ;; Com_insert) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_insert"|cut -d"|" -f3` echo $result ;; Com_delete) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_delete"|cut -d"|" -f3` echo $result ;; Com_commit) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_commit"|cut -d"|" -f3` echo $result ;; Bytes_sent) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_sent" |cut -d"|" -f3` echo $result ;; Bytes_received) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_received" |cut -d"|" -f3` echo $result ;; Com_begin) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_begin"|cut -d"|" -f3` echo $result ;; *) echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions)" ;; esac
7、添加chec_mysql腳本權限:
[root@node2 ~]#chmod u+x /usr/local/zabbix/scripts/chk_mysql.sh [root@node2 ~]#chown -R zabbix.zabbix /usr/local/zabbix/scripts/chk_mysql.sh
8、重啓agent,在zabbix服務器上面檢查基本mysql服務器信息是否能正常獲取到。
重啓客戶端
[root@node2 ~]# /etc/init.d/zabbix_agentd restart
服務測試,獲取mysql監控數據
[root@node1 ~]# zabbix_get -s 172.25.0.30 -p10050 -k "system.cpu.load[all,avg15]"; 0.050000 [root@node1 ~]# zabbix_get -s 172.25.0.30 -p10050 -k mysql.status[Com_update] 0 [root@node1 ~]# zabbix_get -s 172.25.0.30 -p10050 -k mysql.status[Com_insert] 0
監控腳本運行正常後,就會在zabbix-server的「監控中」的下面的「圖形「裏面看到mysql的監控性能視圖,選擇選擇主機node2.1(zabbix_agent),圖形選擇MySQL operations能夠看到性能監控視圖,如圖5所示:
圖5
十、zabbix自帶模版默認有2個性能圖,固然也能夠新建其餘圖,只須要找到主機所在,建立圖形就能夠了,如圖六、圖7所示:
圖6
圖7