1. 程式人生 > >zabbix監控mysql主從同步

zabbix監控mysql主從同步

2個 多少 mon 令行 stat ffffff name http dad

1,部署了個mysql從數據庫,需要時時監控這個從數據庫的主從狀態。原理的話,是通過從mysql上的zabbix執行show slave status獲取
Slave_IO_Running|Slave_SQL_Running狀態是否都為Yes來判斷主從是否正常。
MySQL同步功能由3個線程(master上1個,slave上2個)來實現,簡單的說就是:master發送日誌一個,slave接收日誌一個,slave運行日誌一個。
首先,我們解釋一下 show slave status 中重要的幾個參數:

Slave_IO_Running: I/O線程是否被啟動並成功地連接到主服務器上。
Slave_SQL_Running: SQL線程是否被啟動。

Seconds_Behind_Master:本字段是從屬服務器“落後”多少的一個指示。當從屬SQL線程正在運行時(處理更新),本字段為在主服務器上由此線程執行的最近的一個事件的時間標記開始,已經過的秒數。當此線程被從屬服務器I/O線程趕上,並進入閑置狀態,等待來自I/O線程的更多的事件時,本字段為零。總之,本字段測量從屬服務器SQL線程和從屬服務器I/O線程之間的時間差距,單位以秒計。
那麽如何監控從服務器是否正常運行呢?

2,我們可以通過一條命令來獲取主從同步信息:
mysql -uzabbix -p -e ‘show slave status\G‘ |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk ‘{print $2}‘|grep -c Yes

主要獲取的就是以下兩個值
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

技術分享圖片

3,創建個Mysql的配置文件,在zabbix_agent安裝目錄下,

技術分享圖片
在userparameter_mysql.conf文件裏添加最後一行,好處是在獲取主從同步的信息時不會有在命令行上使用密碼下的提示,
UserParameter=mysql.replication,HOME=/etc/zabbix/etc /usr/local/mysql/bin/mysql -e ‘show slave status\G‘ |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk ‘{print $2}‘|grep -c Yes

技術分享圖片
重啟agent客戶端
技術分享圖片
在zabbix_server端檢查是否可以獲取主從同步信息,
技術分享圖片
用腳本方式都會有這樣的提示,
技術分享圖片

會導致在zabbix會報錯
技術分享圖片
4,在zabbix server上創建template模版
新建模版Template App MySQL Replication
Configuration|Templates|create templates,只要填寫下Template name,選擇下group即可
技術分享圖片
在新建Template App MySQL Replication上創建Applications
技術分享圖片
創建items,key那邊手動填寫mysql.replication
技術分享圖片
創建triggers觸發器,
技術分享圖片
點Add,下圖為該triggers觸發器的Expression表達式。當獲取的key值不為2時報警
技術分享圖片
添加Graphs
技術分享圖片
到Monitoring--Graphs查看監控圖表
技術分享圖片

zabbix監控mysql主從同步