萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Zabbix 監控 MySQL 資料庫完整指南:自訂腳本與模板應用

Zabbix 預設模板無法直接監控 MySQL,需自訂腳本擷取狀態值並定義 Key。本文以 Shell 腳本為例,示範從建立監控帳號、撰寫腳本、設定 Agent、驗證資料到套用模板的完整流程。

架構概覽

  1. MySQL 建立 zabbix 監控帳號,授予 USAGE 權限。
  2. Zabbix Agent 部署 mysql_status 腳本,透過 mysqladmin / mysql 客戶端取得狀態。
  3. Agent 設定 UserParameter 定義 Key,重啟 Agent。
  4. Zabbix Server 以 zabbix_get 驗證資料回傳。
  5. Web 介面為主機連結 Template App MySQL 模板。

詳細步驟

1. MySQL 建立監控帳號

mysql> GRANT USAGE ON *.* TO 'zabbix'@'10.10.10.10' IDENTIFIED BY 'zabbix';
mysql> FLUSH PRIVILEGES;

10.10.10.10 為 Zabbix Agent 所在內網 IP。

2. 撰寫 mysql_status 腳本

# cat /usr/local/zabbix/bin/mysql_status
#!/bin/bash
# 用途:供 Zabbix 取得 MySQL 指定狀態變數值
# 參數:$1=變數名 $2=User $3=Password $4=Host

MYSQL_BIN="/usr/local/mysql/bin/mysql"
VAR=$1
MYSQL_USER=${2:-zabbix}
MYSQL_PASS=${3:-zabbix}
MYSQL_HOST=${4:-10.10.10.10}

if [ -z "$VAR" ]; then
    echo "Usage: $0  [user] [pass] [host]"
    exit 1
fi

$MYSQL_BIN -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASS -e 'SHOW STATUS' \
| grep -v Variable_name | grep "\b${VAR}\b" | awk '{print $2}'
chmod +x /usr/local/zabbix/bin/mysql_status

3. 確認 Agent 設定檔支援自訂 Key

# /etc/zabbix/zabbix_agentd.conf 關鍵段落
LogFile=/tmp/zabbix_agentd.log
Server=127.0.0.1,10.10.10.9
ServerActive=127.0.0.1,10.10.10.9
Hostname=agent1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
UnsafeUserParameters=1

4. 定義 UserParameter(建立 /usr/local/zabbix/etc/zabbix_agentd.conf.d/mysql_status.conf)

# 通用狀態變數
UserParameter=mysql.status[*],/usr/local/zabbix/bin/mysql_status $1

# Ping 檢查(回傳 1 表正常)
UserParameter=mysql.ping,/usr/local/mysql/bin/mysqladmin ping -h"mysql IP" -uzabbix -pzabbix | grep alive | wc -l

# 版本資訊
UserParameter=mysql.version,/usr/local/mysql/bin/mysql -h"mysql IP" -uzabbix -pzabbix -e "SELECT VERSION();" | awk 'END {print}'

重啟 Agent:systemctl restart zabbix-agent

5. Server 端驗證資料收集

zabbix_get -s 10.10.10.10 -k 'mysql.status[Uptime]'
# 預期輸出:3639025

zabbix_get -s 10.10.10.10 -k mysql.version
# 預期輸出:5.5.24-CDB-3.0.0-log

若失敗,在 Agent 端以 zabbix_get -s 127.0.0.1 -k mysql.version 逐層排查。

6. Web 介面套用模板

Configuration → Hosts 選取目標主機 → Templates 標籤 → 搜尋並新增 Template App MySQL → Add → Update。

常見問題排查

  • 腳本權限不足:確認 chmod +x 且 Agent 執行身份可讀取。
  • SELinux 阻擋:setsebool -P zabbix_can_network 1 或暫時設為 Permissive。
  • 防火牆阻擋 10050/10051 埠。
  • MySQL 連線參數錯誤:腳本中 IP、帳密與授權主機必須一致。

Zabbix 模板連結畫面

Zabbix MySQL 監控項目

完成上述設定,Zabbix 即可持續掌握 MySQL 運作狀態(連線數、查詢吞吐、緩衝區命中率等),並可進一步設定觸發器與圖表實現告警與趨勢分析。

copyright © 萬盛學電腦網 all rights reserved