Zabbix 監控 Mysql 狀態



簡介:

如何使用 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、先把這個放一放,去搞別的!( 監控已經完成,后面的部分放別的地方繼續 )


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM