最近新部署zabbix監控,發現有很多DB服務器都是mysql多實例的狀態,mpm默認的mysql監控無法有效的監控mysql的運行狀態和複製關係,故針對雙實例的mysql製作的手工的zabbix腳本監控如下
首先新建新的zabbix的mysql多實例監控模板,操作如下
名稱 爲模板信息名稱
類型 因爲使用的腳本出發所以修改成zabbix捉捕器
鍵值 腳本返回的信息,可以爲數值,也可以是字元,這裏定義爲字元
數據類型 字元
同時也可以設置主動捕捉,如下:監控多實例端口狀態
名稱 爲模板信息名稱
類型 因爲是master去觸發,所以設置成斷點代理程式(主動式)
鍵值 腳本返回的信息
數據類型 數字的
之後去針對相應的模板設置報警信息即 觸發器
根據腳本中獲得以及master主動觸發獲得的狀態值定義觸發器,根據取值的不同變更狀態,如上圖,slave狀態分爲
0 正常
null slave複製停止
>1000 複製延遲,顯示延遲時間
端口狀態 0爲異常報警 up爲正常。
腳本內容如下
################################### 3359 ##################################
### SLAVE STATUS ###
status59=`mysql -uzabbix -pzabbix --sock '路徑' -e "show slave status \G" | grep Behind | awk -F ':' '{print $2}'`
if [ ${status59} = 0 ]
then
zabbix_sender --zabbix-server zabbix-master-ip --port 10051 --host hostname --key MySQL.3359slave-check --value '0'
else
if [ ${status59} = null ]
then
zabbix_sender --zabbix-server zabbix-master-ip --port 10051 --host hostname --key MySQL.3359slave-check --value '99999999'
else
zabbix_sender --zabbix-server zabbix-master-ip --port 10051 --host hostname --key MySQL.3359slave-check --value "$status59"
fi
fi
################################### 3360 ##################################
### SLAVE STATUS ###
status60=`mysql -uzabbix -pzabbix --sock '路徑' -e "show slave status \G" | grep Behind | awk -F ':' '{print $2}'`
if [ ${status60} = 0 ]
then
zabbix_sender --zabbix-server zabbix-master-ip --port 10051 --host hostname --key MySQL.3360slave-check --value '0'
else
if [ ${status60} = null ]
then
zabbix_sender --zabbix-server zabbix-master-ip --port 10051 --host hostname --key MySQL.3360slave-check --value '99999999'
else
zabbix_sender --zabbix-server zabbix-master-ip --port 10051 --host hostname --key MySQL.3360slave-check --value "$status60"
fi
fi
也可以監控mariadb的多源複製狀態,在腳本內容中先指定set @@default_master_connection='name';之後獲得單個slave的狀態信息,同mysql。