1. 程式人生 > >zabbix自定義key監控mysql

zabbix自定義key監控mysql

我們可以使用mysqladmin去監控mysql,獲取mysql的各個效能指標。

一,在監控前需要開啟一項zabbix_agent的配置,因為我是編譯安裝,所以我的配置檔案的位置可能和你的位置不一樣。

vim   /usr/local/zabbix/etc/zabbix_agentd.conf
開啟下面的註釋:
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
後面的路徑是可以自己定義的,建議為zabbix安裝的路徑

vim   /usr/local/zabbix/etc/zabbix_agentd.conf.d/zabbix.conf
這裡的路徑就是上面自己定義的路徑,檔案的命名看個人喜好,結尾必須是conf,在文本里面新增一下內容:
UserParameter=mysql_status[*],/usr/local/zabbix/shell/mysql_status.sh "$1"


重啟zabbix_agent

建立一個存放指令碼的路徑(為了規範,建立到安裝zabbix的路徑命名為shell)   mkdir  /usr/local/zabbix/shell

vim  /usr/local/zabbix/shell/mysql_status.sh
添如下指令碼:


# 資料連線
MYSQL_CONN="/usr/bin/mysqladmin --defaults-extra-file=/etc/my.cnf"
 
# 引數是否正確
if [ $# -ne "1" ];then 
    echo "arg error!" 
fi 
 
# 獲取資料
case $1 in
    Uptime) 
        result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"` 
        echo $result 
        ;; 
    Com_update) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3` 
        echo $result 
        ;; 
    Slow_queries) 
        result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"` 
        echo $result 
        ;; 
    Com_select) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3` 
        echo $result 
                ;; 
    Com_rollback) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Questions) 
        result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"` 
                echo $result 
                ;; 
    Com_insert) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Com_delete) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Com_commit) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Bytes_sent) 
        result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3` 
                echo $result 
                ;; 
    Bytes_received) 
        result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3` 
                echo $result 
                ;; 
    Com_begin) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3` 
                echo $result 
                ;; 
    ping)
	result=`mysqladmin --defaults-extra-file=/etc/my.cnf ping 2>&1|/usr/bin/grep -c alive`
		echo $result
		;;
        *) 
        echo "Usage:$0(ping|Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)" 
        ;; 
esac

新增完成以後需要授權。

chown    -R  zabbix.zabbix  /usr/local/zabbix/*

chmod   +x  /usr/local/zabbix/shell/mysql_status

二,操作完以上步驟以後我們需要一個mysql的配置檔案裡面新增一個賬號和密碼

     登入mysql

grant process,reload,replication client,super on *.* to 'status'@'localhost' identified by '123456789';
設定一個可以查詢的使用者,僅限本地登入
重新整理許可權
flush privileges;
vim  /etc/my.conf
新增如下內容:
[client]
host=localhost
user=status
password='[email protected]@'

三,切換使用者為zabbix,執行mysql_status.sh指令碼,檢視指令碼以及各個引數是否正常

四,到zabbix服務端get資料,看能否正常獲取

    zabbix -s 192.168.26.20(zabbix_agent的ip)   -k mysql_status[引數]

五,新增模板