MySQL自定義監(jiān)控
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了雙臺(tái)子免費(fèi)建站歡迎大家使用!
需求:公司需要做mysql的數(shù)據(jù)監(jiān)控,對(duì)mysql的狀態(tài),流量進(jìn)行監(jiān)控。
分析:zabbix自動(dòng)就有Template App MySQL模版,我們只要添加mysql監(jiān)控腳本就可以實(shí)現(xiàn)自定義監(jiān)控。
配置如下:
zabbix的服務(wù)端搭建,這里不再演示,我這里的zabbixserver已經(jīng)配置好的了,直接進(jìn)入mysql監(jiān)控構(gòu)建。
mysql模板是 zabbix系統(tǒng)提供的,進(jìn)入 zabbix web 后臺(tái),配置-->主機(jī)群組-->點(diǎn)擊“創(chuàng)建主機(jī)群組”-->選擇template群組,選擇模板“TemplateApp MySQL,Templdate OS Linux”,TemplateApp Zabbix Agen;TemplateApp MySQL依賴于模板TemplateApp Zabbix Agent所以也要添加。如圖1、圖2所示:
圖1
圖2
2、部署agent客戶端,使用ansible一健安裝,詳細(xì)可以參考我安裝過程https://blog.51cto.com/xiaozhagn/1975084
3、建立主機(jī),添加zabbix戶端主機(jī),添加模板。
配置-->主機(jī)-->點(diǎn)擊創(chuàng)建主機(jī)--> 創(chuàng)建zabbix客戶機(jī)(我這里是node2.1)-->選擇模板選項(xiàng),選擇模板“Template App MySQL”、“Templdate OS Linux”,“TemplateApp Zabbix Agent“,最后點(diǎn)擊左邊的“添加”按鈕,最后點(diǎn)擊“更新”完成創(chuàng)建。如圖3、圖4所示:
圖3
圖4
4,開啟mysql性能監(jiān)控。
這里可以采用zabbix自帶的mysql模版,但是也需要在mysql服務(wù)器上準(zhǔn)備獲取mysql status的腳本chk_mysql.sh,zabbix通過調(diào)用這個(gè)腳本來獲取mysql的運(yùn)行信息。
在配置zabbix客戶端文件zabbix_agentd.conf里面添加mysql監(jiān)控信息:
[root@node2 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
#添加以下內(nèi)容
UserParameter=mysql.version,mysql -V UserParameter=mysql.status[*],/usr/local/zabbix/scripts/chk_mysql.sh $1 #這個(gè)是放腳本的路徑 UserParameter=mysql.ping,netstat -ntpl |grep 3306 |grep mysql |wc |awk '{print $1}'
5、進(jìn)入數(shù)據(jù)庫添加mysql帳號(hào),(我這里的數(shù)據(jù)庫是用yum裝的)
MariaDB [(none)]> GRANT PROCESS,SUPER,REPLICATION CLIENT ON *.* TO zabbix@'127.0.0.1' IDENTIFIED BY 'xiaozhang';
6、接下來準(zhǔn)備mysql的運(yùn)行信息監(jiān)控,需要準(zhǔn)備新的mysql監(jiān)控腳本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腳本權(quán)限:
[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服務(wù)器上面檢查基本mysql服務(wù)器信息是否能正常獲取到。
重啟客戶端
[root@node2 ~]# /etc/init.d/zabbix_agentd restart
服務(wù)測(cè)試,獲取mysql監(jiān)控?cái)?shù)據(jù)
[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
9、監(jiān)控mysql性能圖添加
監(jiān)控腳本運(yùn)行正常后,就會(huì)在zabbix-server的“監(jiān)控中”的下面的“圖形“里面看到mysql的監(jiān)控性能視圖,選擇選擇主機(jī)node2.1(zabbix_agent),圖形選擇MySQL operations可以看到性能監(jiān)控視圖,如圖5所示:
圖5
10、zabbix自帶模版默認(rèn)有2個(gè)性能圖,當(dāng)然也可以新建其他圖,只需要找到主機(jī)所在,創(chuàng)建圖形就可以了,如圖6、圖7所示:
圖6
圖7