基於zabbix的Mysql自定義監控

                                                  Mysql自定義監控node

需求:公司須要作mysql的數據監控,對mysql的狀態,流量進行監控。mysql

分析:zabbix自動就有Template App MySQL模版,咱們只要添加mysql監控腳本就能夠實現自定義監控。web

配置以下:sql

zabbix的服務端搭建,這裏再也不演示,我這裏的zabbixserver已經配置好的了,直接進入mysql監控構建。 數據庫

一、創建mysql host groups組

mysql模板是 zabbix系統提供的,進入 zabbix web 後臺,配置-->主機羣組-->點擊「建立主機羣組」-->選擇template羣組,選擇模板「TemplateApp MySQL,Templdate OS Linux」,TemplateApp Zabbix Agen;TemplateApp MySQL依賴於模板TemplateApp Zabbix Agent因此也要添加。如圖一、圖2所示:vim

1.png

                                                       圖1bash

2.png

                                                          圖2服務器

二、部署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.png

                                                       圖3

4.png

                                                       圖4

4,開啓mysql性能監控。

這裏能夠採用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


九、監控mysql性能圖添加

監控腳本運行正常後,就會在zabbix-server的「監控中」的下面的「圖形「裏面看到mysql的監控性能視圖,選擇選擇主機node2.1(zabbix_agent),圖形選擇MySQL operations能夠看到性能監控視圖,如圖5所示:

6.png

                                                             圖5

十、zabbix自帶模版默認有2個性能圖,固然也能夠新建其餘圖,只須要找到主機所在,建立圖形就能夠了,如圖六、圖7所示:

7.png

                                                               圖6

8.png

                                                               圖7

相關文章
相關標籤/搜索