使用 Zabbix 監控 MySQL 存儲空間和性能指標的完整實踐指南

目錄

引言

一、最終目標支持功能

二、監控方案設計

2.1 技術選型

2.2 設計思路

三、實現步驟

3.1 準備工作

3.11 創建 MySQL 監控賬號

3.12?配置 .my.cnf 文件

?3.2 編寫統一腳本

?3.3 配置 Zabbix Agent UserParameter

?3.4 Zabbix 前端配置建議

四、總結


引言

MySQL 數據庫作為眾多業務系統的核心組件,其性能與存儲狀況直接影響系統的穩定性和響應速度。對于運維工程師而言,實時監控 MySQL 的性能指標和存儲空間使用情況尤為關鍵。本文將分享如何使用 Zabbix 結合自定義腳本,監控 MySQL 的關鍵性能指標(如 QPS、TPS)及存儲空間使用(包括數據庫空間大小、日志文件大小等),幫助你搭建精準且高效的數據庫監控體系。

一、最終目標支持功能

支持如下參數調用:

參數含義
QPS每秒查詢數
TPS每秒事務數
dbsize所有數據庫空間使用(MB)
dbsize[<庫名>]某個數據庫空間使用(MB)

二、監控方案設計

2.1 技術選型

  • Zabbix Agent:用于在數據庫服務器采集指標數據。

  • 自定義 Shell 腳本:通過 MySQL 命令查詢系統狀態和文件大小,輸出給 Zabbix。

  • MySQL 只讀監控賬號:用于查詢性能指標和表空間信息。

2.2 設計思路

  • 統一腳本根據參數動態返回不同指標值,避免分散管理。

  • 采用 .my.cnf 文件存儲數據庫連接信息,保證安全。

  • Zabbix Agent 通過 UserParameter 調用腳本,實現靈活監控。

三、實現步驟

3.1 準備工作

3.11 創建 MySQL 監控賬號
-- 創建用戶(如已存在可跳過)
CREATE USER 'zbx_monitor'@'localhost' IDENTIFIED BY '你的安全密碼';-- 授權所需權限:
-- 1. SHOW DATABASES            — 用于數據庫自動發現(LLD)
-- 2. PROCESS                   — 用于查詢當前線程等狀態
-- 3. REPLICATION CLIENT        — 允許讀取主從狀態
-- 4. SELECT ON *.*             — 允許查看庫大小、InnoDB 統計、慢查詢數等
GRANT SHOW DATABASES, PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'zbx_monitor'@'localhost';-- 強烈建議刷新權限以立即生效
FLUSH PRIVILEGES;
3.12?配置 .my.cnf 文件

/var/lib/zabbix/.my.cnf 文件中寫入:?

[client]
user=zbx_monitor
password=your_password

并設置權限:

chmod 600 /var/lib/zabbix/.my.cnf

?3.2 編寫統一腳本

# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/mysql_monitor.sh
#!/bin/bashMETRIC="$1"
DB_NAME="$2"MY_CNF="/var/lib/zabbix/.my.cnf"
MYSQL_HOST="192.168.1.129"
MYSQL_PORT="3306"MYSQL_CMD="mysql --defaults-extra-file=$MY_CNF -h$MYSQL_HOST -P$MYSQL_PORT -Nse"
MYSQLADMIN_CMD="mysqladmin --defaults-extra-file=$MY_CNF -h$MYSQL_HOST"get_qps() {Uptime=$($MYSQLADMIN_CMD status | awk '{print $2}')Questions=$($MYSQLADMIN_CMD status | awk '{print $6}')[[ "$Uptime" -gt 0 ]] && awk "BEGIN {printf \"%.2f\", $Questions / $Uptime}" || echo 0
}get_tps() {Uptime=$($MYSQLADMIN_CMD status | awk '{print $2}')rollback=$($MYSQLADMIN_CMD extended-status | awk '/Com_rollback/{print $4}')commit=$($MYSQLADMIN_CMD extended-status | awk '/Com_commit/{print $4}')total=$((rollback + commit))[[ "$Uptime" -gt 0 ]] && awk "BEGIN {printf \"%.2f\", $total / $Uptime}" || echo 0
}get_db_size() {if [[ -z "$DB_NAME" ]]; thenRESULT=$($MYSQL_CMD "SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) FROM information_schema.tables;")elseRESULT=$($MYSQL_CMD "SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) FROM information_schema.tables WHERE table_schema='$DB_NAME';")fiecho "${RESULT:-0}"
}case "$METRIC" inqps) get_qps ;;tps) get_tps ;;dbsize) get_db_size ;;*) echo "Unsupported metric"; exit 1 ;;
esac

設置執行權限:

chmod +x /usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/mysql_monitor.sh

3.3 配置 Zabbix Agent UserParameter

編輯 
# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
UserParameter=mysql.qps,/usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/mysql_monitor.sh qps
UserParameter=mysql.tps,/usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/mysql_monitor.sh tps
UserParameter=mysql.dbsize,/usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/mysql_monitor.sh dbsize
UserParameter=mysql.dbsize[*],/usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/mysql_monitor.sh dbsize "$1"

重啟 Agent:

systemctl restart zabbix-agent

?3.4 Zabbix 前端配置建議

  • 創建監控項:

    • mysql.qps(單位:ops)

    • mysql.tps(單位:ops)

    • mysql.dbsize(單位:MB)

    • mysql.dbsize[your_db](單位:MB,按需添加)

  • 設定更新間隔如 1m5m

  • 設置合適的觸發器閾值,例如:

    {host:mysql.qps.last()} > 1000
    {host:mysql.dbsize.last()} > 10240
    

四、總結

本文提供了一個簡潔且實用的 Zabbix + MySQL 監控方案,重點解決 MySQL 存儲空間及關鍵性能指標采集問題。通過集中管理的腳本和靈活的 Zabbix 配置,能夠幫助運維快速構建穩定、全面的數據庫監控體系,提升問題預警能力和故障響應速度。

歡迎關注與交流,如需腳本模板或更多指標監控實現,歡迎留言。?

    本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
    如若轉載,請注明出處:http://www.pswp.cn/web/81900.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/web/81900.shtml
    英文地址,請注明出處:http://en.pswp.cn/web/81900.shtml

    如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

    相關文章

    多元素納米顆粒:開啟能源催化新紀元

    在能源轉型的浪潮中&#xff0c;納米催化劑正成為推動能源技術突破的關鍵力量。多元素納米顆粒&#xff08;Polyelemental Nanoparticles&#xff09;憑借其獨特的元素協同效應&#xff0c;展現出在能源催化領域的巨大潛力。然而&#xff0c;合成這些復雜體系的納米顆粒面臨著諸…

    鐵路行業數字化應用建設方案

    數字化轉型面臨的挑戰 鐵路行業正處于數字化轉型的關鍵時期&#xff0c;鐵路行業應用場景復雜&#xff0c;數據量巨大&#xff0c;傳統信息化建設模式難以滿足日益增長的業務需求。鐵路企業亟需引入敏捷高效的數字化工具&#xff0c;加速推進業務創新&#xff0c;實現提質增效…

    PlankAssembly 筆記 DeepWiki 正交視圖三維重建

    manycore-research/PlankAssembly | DeepWiki PlankAssembly項目原理 這個項目是一個基于深度學習的3D重建系統&#xff0c;其核心原理是從三個正交視圖的工程圖紙中重建出3D形狀的結構化程序表示。 核心技術原理 1. 問題定義 PlankAssembly旨在從三個正交視圖的工程圖紙中…

    分布式不同數據的一致性模型

    1. 強一致性&#xff08;Strong Consistency&#xff09; 定義&#xff1a;所有節點在任何時間點看到的數據完全一致&#xff0c;讀操作總是返回最近的寫操作結果。特點&#xff1a; 寫操作完成后&#xff0c;所有后續讀操作都能立即看到更新。通常需要同步機制&#xff08;如…

    C文件操作1

    一、為什么使用文件 如果沒有文件&#xff0c;我們寫的程序的數據是存儲在電腦的內存中&#xff0c;如果程序退出&#xff0c;內存回收&#xff0c;數據就丟失 了&#xff0c;等再次運行程序&#xff0c;是看不到上次程序的數據的&#xff0c;如果要將數據進行持久化的保存&am…

    Centos7.x內網環境Jenkins前端打包環境配置

    Centos7.x內網環境Jenkins前端打包環境配置 參考地址&#xff1a; https://www.cnblogs.com/guangdelw/p/18763336 https://2048.csdn.net/682c1be8606a8318e857d687.html 前言&#xff1a;環境描述和目標 最近公司新接了一個項目&#xff0c;要求是&#xff1a;需要再桌面…

    Hash 的工程優勢: port range 匹配

    昨天和朋友聊到 “如何匹配一個 port range”&#xff0c;覺得挺有意思&#xff0c;簡單寫篇散文。 回想起十多年前&#xff0c;我移植并優化了 nf-HiPAC&#xff0c;當時還看不上 ipset hash&#xff0c;后來大約七八年前&#xff0c;我又舔 nftables&#xff0c;因為用它可直…

    kafka學習筆記(三、消費者Consumer使用教程——使用實例及及核心流程源碼講解)

    1.核心概念與架構 1.1.消費者與消費者組 Kafka消費者是訂閱主題&#xff08;Topic&#xff09;并拉取消息的客戶端實例&#xff0c;其核心邏輯通過KafkaConsumer類實現。消費者組&#xff08;Consumer Group&#xff09;是由多個邏輯關聯的消費者組成的集合。 核心規則 同一…

    《java創世手記》---java基礎篇(下)

    《Java 創世手記 - 基礎篇&#xff08;下&#xff09;》 第五章&#xff1a;契約與規范 —— 接口 (Interfaces) 與抽象類 (Abstract Classes) 造物主&#xff0c;在你日益繁榮的世界里&#xff0c;你發現僅僅依靠“繼承”來構建“物種體系”有時會遇到一些限制。比如&#x…

    氣鎮閥是什么?

    01、閥門介紹&#xff1a; 油封機械真空泵的壓縮室上開一小孔&#xff0c;并裝上調節閥&#xff0c;當打開閥并調節入氣量&#xff0c;轉子轉到某一位置&#xff0c;空氣就通過此孔摻入壓縮室以降低壓縮比&#xff0c;從而使大部分蒸汽不致凝結而和摻入的氣體一起被排除泵外起此…

    計算機一次取數過程分析

    計算機一次取數過程分析 1 取址過程 CPU由運算器和控制器組成&#xff0c;其中控制器中的程序計數器(PC)保存的是下一條指令的虛擬地址&#xff0c;經過內存管理單元(MMU)&#xff0c;將虛擬地址轉換為物理地址&#xff0c;之后交給主存地址寄存器(MAR)&#xff0c;從主存中取…

    從equals思考對“正念”的認知

    正念 很多人聊正念&#xff0c;每個人有自己的解說&#xff0c;我聽到最符合邏輯的一個說法&#xff1a;正念就是對抗慣性。 如果嘗試過打坐或者冥想&#xff0c;就有一個說法叫正觀&#xff0c;什么意義呢&#xff1f;就是說感受自己的呼吸&#xff0c;自己的心跳&#xff0c…

    信息安全管理與評估2025山東卷

    需要其他賽題解析的可聯系博主

    【leetcode】02.07. 鏈表相交

    鏈表相交 題目代碼1. 計算兩個鏈表的長度2. 雙指針 題目 02.07. 鏈表相交 給你兩個單鏈表的頭節點 headA 和 headB &#xff0c;請你找出并返回兩個單鏈表相交的起始節點。如果兩個鏈表沒有交點&#xff0c;返回 null 。 圖示兩個鏈表在節點 c1 開始相交&#xff1a; 代碼 …

    可視化與動畫:構建沉浸式Vue應用的進階實踐

    在現代Web應用中&#xff0c;高性能可視化和流暢動畫已成為提升用戶體驗的核心要素。本節將深入探索Vue生態中的可視化與動畫技術&#xff0c;分享專業級解決方案與最佳實踐。 一、 Canvas高性能渲染體系 01、Konva.js流程圖引擎深度優化 <template><div class"…

    ?模型驅動的DeepInsight Copilot在螞蟻的技術實踐

    本文整理自潘蘭天&#xff08;螞蟻數據智能團隊數據分析平臺技術專家)在DA數智大會2025上海站的演講實錄。 本文圍繞AI技術在數據分析領域的應用及DeepInsight Copilot產品展開。DeepInsight是一款螞蟻長期深耕數據分析領域的BI產品&#xff0c;本文首先介紹了DeepInsight Copi…

    Express教程【003】:Express獲取查詢參數

    文章目錄 3、獲取URL中攜帶的查詢參數3.1 參數形式&#xff1a;查詢字符串3.2 參數形式&#xff1a;動態參數3.3 參數形式&#xff1a;Json數據 3、獲取URL中攜帶的查詢參數 3.1 參數形式&#xff1a;查詢字符串 1??通過req.query對象&#xff0c;可以訪問到客戶端通過查詢…

    在CentOS7上使用tree查看目錄樹

    文章目錄 1. 利用yum安裝tree2. 利用rpm安裝tree2.1 下載tree的rpm包2.2 上傳到云主機2.3 安裝tree軟件 3. 使用tree查看目錄樹4. 實戰小結 1. 利用yum安裝tree 執行命令&#xff1a;yum -y install tree CentOS7停止更新&#xff0c;即使更新鏡像源&#xff0c;也無法正常安裝…

    大規模JSON反序列化性能優化實戰:Jackson vs FastJSON深度對比與定制化改造

    背景&#xff1a;500KB JSON處理的性能挑戰 在當今互聯網復雜業務場景中&#xff0c;處理500KB以上的JSON數據已成為常態。 常規反序列化方案在CPU占用&#xff08;超30%&#xff09;和內存峰值&#xff08;超原始數據3-5倍&#xff09;方面表現堪憂。 本文通過Jackson與Fas…

    華為交換機S12708常用命令

    以下是華為S12708交換機&#xff08;高端園區/數據中心核心交換機&#xff09;的常用運維命令&#xff0c;涵蓋基礎配置、狀態查看、故障排查等場景&#xff1a; 一、基礎配置命令 1. 系統管理 system-view # 進入系統視圖 sysname S12708-Core # 設置設備名稱 clock timez…