簡介:mysql
如何使用 Zabbix 來監控 Mysql 狀態 ?正則表達式
Zabbix 有自帶監控 Mysql 的模板,可是卻不能直接使用.. 須要咱們根據模板提供的 Key 本身寫腳本獲取數據sql
一、查看都有哪些 Keyshell
> Configuration -> Templatesvim
## 在此模板頁中,能夠看到 Template App MySQL 模板中有 14 個 Items ,咱們須要本身寫腳本獲取這 14 個值bash
## 分別是:Com_select、Com_insert 、Com_update 、Com_delete 、Com_begin 、Com_commit 、Com_rollback
Questions 、Slow_queries 、Bytes_received 、Bytes_sent 、Ping 、Uptime 、Versionide
二、根據 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 的值spa
shell > chmod a+x /script/mysql_status.sh
三、添加自定義 key 配置文件rest
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
## 添加上面配置
四、重啓 Zabbix_agentd
shell > service zabbix_agentd restart
## 注意,上面所有操做都是在被監控端
五、Zabbix 服務端測試可否拿到 Key
shell > /usr/local/zabbix/bin/zabbix_get -s 14.25.97.14 -k mysql.ping 1
## 能夠獲取到 key 的值,說明配置沒有問題了
## 被監控端記得要開啓 10050 端口
六、Zabbix 監控 Mysql 狀態
## 接下來把 Zabbix 自帶的監控模板連接到主機便可
## 過上一小會,就能看到效果了,version 可能比較時間長點,由於模板裏設的時間範圍是 3600 秒,ping 會誤報一次 Mysql Down ,由於只前是沒有值的。
七、爲這些監控項添加 Graph
## 自帶的模板已經作好了兩張圖,因此直接使用便可,我這裏是空載,因此啥也看不出來..
八、測試 Trigger 告警
## 很遺憾,自帶的模板中也已經定義好了 Trigger 告警條件,來瞅瞅
> Configuration -> Templates -> Trigger
Severity : ## 事件告警級別
Not classified 未知安裝等級,灰色
Information 通常信息,亮綠
Warning 警告信息,黃色
Average 通常故障,橙色
High 高級別故障,紅色
Disaster 致命故障,亮紅
Name : ## Trigger 名稱
Expression : ## 對觸發器狀態計算的邏輯正則表達式
Status : ## 觸發器開關
## 怎麼設置觸發告警條件下次寫 ^_^
## 好了,若是 Mysql 處於 down 狀態時會觸發條件,可是,觸發以後呢 ?( 固然是要發送事件通知啦,或執行遠程命令 )
九、先把這個放一放,去搞別的!( 監控已經完成,後面的部分放別的地方繼續 )