簡介:
如何使用 Zabbix 來監控 Mysql 狀態 ?
Zabbix 有自帶監控 Mysql 的模板,但是卻不能直接使用.. 需要我們根據模板提供的 Key 自己寫腳本獲取數據
1、查看都有哪些 Key
> Configuration -> Templates
## 在此模板頁中,可以看到 Template App MySQL 模板中有 14 個 Items ,我們需要自己寫腳本獲取這 14 個值
## 分別是:Com_select、Com_insert 、Com_update 、Com_delete 、Com_begin 、Com_commit 、Com_rollback
Questions 、Slow_queries 、Bytes_received 、Bytes_sent 、Ping 、Uptime 、Version
2、根據 Key 編寫 Shell 腳本
shell > mysql -uroot -p -e "grant usage on *.* to zabbix@localhost identified by 'zabbix_password';" # 建立監控用戶 shell > vim /script/mysql_status.sh #!/bin/bash User='you_user' Password='you_password' Mysql='/usr/local/mysql/bin/mysql' Mysqladmin='/usr/local/mysql/bin/mysqladmin' command(){ $Mysql -u $User -p$Password -e "show global status" | awk '$1 ~ /'"$1"'$/ {print $2}' } case $1 in Com_select) command $1 ;; Com_insert) command $1 ;; Com_update) command $1 ;; Com_delete) command $1 ;; Com_begin) command $1 ;; Com_commit) command $1 ;; Com_rollback) command $1 ;; Questions) command $1 ;; Slow_queries) command $1 ;; Bytes_received) command $1 ;; Bytes_sent) command $1 ;; Uptime) command $1 ;; Version) $Mysql -V | awk -F '[ ,]' '{print $6}' ;; Ping) $Mysqladmin -u$User -p$Password ping | wc -l ;; *) echo "Usage: $0 { Com_select|Com_insert|Com_update|Com_delete|Com_begin|Com_commit|Com_rollback|Questions|Slow_queries|Bytes_received|Bytes_sent|Ping|Uptime|Version }" ;; esac
## 關於兩個命令路徑,我使用 `which mysql` 這樣的操作沒有成功
## 寫完先測試一下,能不能獲取各 Key 的值
shell > chmod a+x /script/mysql_status.sh
3、添加自定義 key 配置文件
shell > vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/mysql_status.conf # Mysql_status UserParameter=mysql.status[*],/script/mysql_status.sh $1 UserParameter=mysql.ping,/script/mysql_status.sh Ping UserParameter=mysql.version,/script/mysql_status.sh Version
## 注意模板里 Key 的取值方式
## 也可以直接加到 /usr/local/zabbix/etc/zabbix_agentd.conf 末尾
shell > vim /usr/local/zabbix/etc/zabbix_agentd.conf Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf UnsafeUserParameters=1 # 允許自定義 Key
## 添加上面配置
4、重啟 Zabbix_agentd
shell > service zabbix_agentd restart
## 注意,上面全部操作都是在被監控端
5、Zabbix 服務端測試能否拿到 Key
shell > /usr/local/zabbix/bin/zabbix_get -s 14.25.97.14 -k mysql.ping 1
## 可以獲取到 key 的值,說明配置沒有問題了
## 被監控端記得要開啟 10050 端口
6、Zabbix 監控 Mysql 狀態
## 接下來把 Zabbix 自帶的監控模板鏈接到主機即可
## 過上一小會,就能看到效果了,version 可能比較時間長點,因為模板里設的時間范圍是 3600 秒,ping 會誤報一次 Mysql Down ,因為只前是沒有值的。
7、為這些監控項添加 Graph
## 自帶的模板已經做好了兩張圖,所以直接使用即可,我這里是空載,所以啥也看不出來..
8、測試 Trigger 告警
## 很遺憾,自帶的模板中也已經定義好了 Trigger 告警條件,來瞅瞅
> Configuration -> Templates -> Trigger
Severity : ## 事件告警級別
Not classified 未知安裝等級,灰色
Information 一般信息,亮綠
Warning 警告信息,黃色
Average 一般故障,橙色
High 高級別故障,紅色
Disaster 致命故障,亮紅
Name : ## Trigger 名稱
Expression : ## 對觸發器狀態計算的邏輯正則表達式
Status : ## 觸發器開關
## 怎么設置觸發告警條件下次寫 ^_^
## 好了,如果 Mysql 處於 down 狀態時會觸發條件,但是,觸發之后呢 ?( 當然是要發送事件通知啦,或執行遠程命令 )
9、先把這個放一放,去搞別的!( 監控已經完成,后面的部分放別的地方繼續 )