zabbix自動發現監控mysql數據庫 原 薦

跟zabbix自動發現監控mongo數據庫的思路差不多,如果公司的mysql都是使用3306端口或者同一端口的話,可直接創建模板,鏈接到各個服務器即可。如果公司的mysql的比較多或者端口不一致,還是得自動發現並監控比較方便點,先看下效果圖(主要還是實現增刪改查的監控):

同樣的,上述圖也是通過zabbix的篩選功能匯在一起的。

 

具體的自動發現規則配置如下:

探索規則配置完後,同樣的在zabbix agent端添加如下配置然後重啓zabbix agentd。

UserParameter=mysql.discover,python /usr/local/zabbix/discover_mysql.py

 

其中/usr/local/zabbix/discover_mysql.py是用來自動發現端口的腳本,腳本內容如下:

#coding:utf-8
import json
import commands

(status, output) = commands.getstatusoutput('''sudo netstat -tlnp|grep 'mysqld'|awk '{print $4}'|awk -F':' '{print $(NF)}'|sort -u''')
if output:
        outputs = output.split('\n')
        ports = []
        for port in  outputs:
            ports += [{'{#MYSQLPORT}': port}]
        print json.dumps({'data':ports},sort_keys=True,indent=4)
else:
        print 'discovery error'

使用netstat發現正在監控的端口。netstat一般zabbix無法執行,所以得在zabbix agentd端用visudo添加如下配置:

zabbix ALL= NOPASSWD: /bin/netstat
Defaults:zabbix   !requiretty

 

探索完端口後,zabbix server就需要以端口爲參數向zabbix agent端獲取數據,其中項目原型配置如下:

其中mysql.status又要重新寫一份獲取mysql數據的代碼了,先把配置發一下吧,zabbix agentd端配置如下:

UserParameter=mysql.status[*],sh /usr/local/zabbix/check_mysql.sh -u xxxx -p xxxx -P $1 -k $2 2>/dev/null

獲取mysql數據的/usr/local/zabbix/check_mysql.sh shell腳本如下,其中-u表示用戶名,-p表示密碼,-k表示獲取mysql的狀態值(這邊舉例獲取的是Com_update等值),2>/dev/null是把mysql密碼明文的提示給去除:

#!/bin/sh
while getopts "u:p:P:k:" opt
do
        case $opt in
                u ) user=$OPTARG;;
                p ) password=$OPTARG;;
                P ) port=$OPTARG;;
                k ) key=$OPTARG;;
                ? )
                echo 'parameter is wrong!'
                exit 1;;
        esac
done
if [ ! "${user}" ] || [ ! "${password}" ] || [ ! "${port}" ];then
        echo "parameter is null"        
        exit 1
fi

mysql -u ${user} -p${password} -h 127.0.0.1 -P${port} -e "show global status"|grep "${key}[[:space:]]"|awk '{print $2}'

 

通過上面的配置,基本上是可以自動發現mysql的端口並監控mysql了,一般監控mysql我們都會創建一個比較小權限的帳號,腳本里只用到show global status:

grant usage on *.* to ‘xxxx’@'127.0.0.1' identified by 'xxxx';

 

最後附上本人的網絡課堂地址,如有興趣請點擊: 實踐哥

模板見:https://git.oschina.net/zhuangweihong/ops

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章