zabbix自動發現監控mysql從庫狀態

zabbix從庫若是複製有問題,在主庫機器有問題的時候,切爲主就會致使數據的丟失。或者主從分離的時候,若是從庫出現延時狀態的話,會致使前端頁面展現的數據不是爲最新的數據。所以,監控mysql從庫的狀態是必要的。前端

 

mysql從庫的狀態主要監控的值有三個,分別爲Slave SQL Running,Slave IO Running和Seconds Behind Master。只有當Slave SQL Running,Slave IO Running爲yes,而後Seconds Behind Master爲0的時候,從庫纔有可能運行在正常的狀態下(有時候這三個值都符合要求,從庫數據也會有問題)。先看下監控的效果:python

 

因爲是自動發現監控的mysql從庫狀態,所以,先貼下自動發現規則的配置,使用mysql.slave.discover去獲取mysql從庫的端口,在從庫安裝zabbix agentd,並添加配置(UserParameter=mysql.slave.discover,python /usr/local/zabbix/discover_mysql_slave.py):mysql

其中,自動發現mysql端口的python腳本見:https://my.oschina.net/zhuangweihong/blog/785919 此文章有相似的腳本。自動發現完mysql的端口後,使用的探測項目原型以下,使用三個原型去獲取mysql從庫的三個須要監控的值:sql

其中獲取的鍵值須要在從庫agent中添加配置,而後重啓agentd:bash

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

 

最後就看下/usr/local/zabbix/check_mysql_slave.sh腳本,以下:code

#!/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}" ] || [ ! "${key}" ];then
        echo "parameter is null"        
        exit 1
fi

mysql -u ${user} -p${password} -h 127.0.0.1 -P${port} -e "show slave status\G"|grep "${key}\:"|awk '{print $2}'

腳本使用-u傳入用戶名,-p傳入密碼,-P傳入端口號,-k傳入須要獲取show slave status\G的某個值。blog

 

Zabbix實戰教程:https://edu.51cto.com/sd/36433教程

相關文章
相關標籤/搜索