Zabbix在MySQL性能監(jiān)控方面的運(yùn)用及最佳實(shí)踐記錄
最近項(xiàng)目上出現(xiàn)mysql的主機(jī)CPU和內(nèi)存飆升,大于90%了,接近系統(tǒng)崩潰邊界了。
如何持續(xù)監(jiān)控MySQL的性能,發(fā)現(xiàn)問題呢??
Zabbix在MySQL性能監(jiān)控中可通過自定義腳本、內(nèi)置模板、自動(dòng)發(fā)現(xiàn)等功能,實(shí)現(xiàn)對(duì)關(guān)鍵性能指標(biāo)、健康狀態(tài)、慢查詢等的實(shí)時(shí)監(jiān)控與告警,以下是具體運(yùn)用及實(shí)踐方法:

一、核心監(jiān)控指標(biāo)及配置
Zabbix可監(jiān)控MySQL的核心性能指標(biāo),覆蓋連接狀態(tài)、查詢效率、資源占用、復(fù)制狀態(tài)等,通過自定義腳本或內(nèi)置模板實(shí)現(xiàn)數(shù)據(jù)采集。

1. 關(guān)鍵監(jiān)控指標(biāo)示例
- 連接與線程:
Threads_connected(當(dāng)前連接數(shù))、Threads_running(活躍線程數(shù))、Max_used_connections(最大連接數(shù)); - 查詢性能:
QPS(每秒查詢數(shù))、TPS(每秒事務(wù)數(shù))、Slow_queries(慢查詢數(shù)量)、Com_select(SELECT查詢次數(shù))、Com_insert(INSERT查詢次數(shù)); - 資源占用:
Innodb_buffer_pool_read_requests(InnoDB緩沖池讀請(qǐng)求數(shù))、Innodb_buffer_pool_pages_dirty(臟頁數(shù)量)、Bytes_sent(發(fā)送字節(jié)數(shù))、Bytes_received(接收字節(jié)數(shù)); - 復(fù)制狀態(tài)(主從架構(gòu)):
Seconds_Behind_Master(主從延遲)、Slave_IO_Running(IO線程狀態(tài))、Slave_SQL_Running(SQL線程狀態(tài))。
2. 配置方法
自定義腳本采集:通過Shell腳本調(diào)用MySQL命令(如
mysqladmin、SHOW GLOBAL STATUS)獲取指標(biāo),再通過Zabbix Agent的UserParameter傳遞給Server。
示例腳本(chk_mysql.sh):#!/bin/bash MYSQL_USER="zabbix" MYSQL_PWD="your_password" MYSQL_HOST="localhost" MYSQL_PORT="3306" ARGS=$1 case $ARGS in Uptime) result=$(mysqladmin -u$MYSQL_USER -p$MYSQL_PWD -h$MYSQL_HOST -P$MYSQL_PORT status | cut -f2 -d":" | cut -f1 -d"T");; Com_update) result=$(mysqladmin -u$MYSQL_USER -p$MYSQL_PWD -h$MYSQL_HOST -P$MYSQL_PORT extended-status | grep -w "Com_update" | cut -d"|" -f3);; Slow_queries) result=$(mysqladmin -u$MYSQL_USER -p$MYSQL_PWD -h$MYSQL_HOST -P$MYSQL_PORT status | cut -f5 -d":" | cut -f1 -d"O");; *) echo "Usage: $0 (Uptime|Com_update|Slow_queries)";; esac echo $result
配置
zabbix_agentd.conf添加UserParameter=mysql.status[*],/path/to/chk_mysql.sh $1,重啟Agent后生效。內(nèi)置模板使用:Zabbix提供Template DB MySQL by Zabbix agent模板(需導(dǎo)入),支持自動(dòng)發(fā)現(xiàn)MySQL實(shí)例并監(jiān)控基礎(chǔ)指標(biāo)(如CPU、內(nèi)存、磁盤I/O、連接數(shù)),簡化配置流程。


二、自動(dòng)發(fā)現(xiàn)與多實(shí)例管理
對(duì)于一臺(tái)服務(wù)器部署多個(gè)MySQL實(shí)例(不同端口)的場(chǎng)景,Zabbix可通過自動(dòng)發(fā)現(xiàn)規(guī)則動(dòng)態(tài)識(shí)別實(shí)例,并應(yīng)用監(jiān)控模板,避免手動(dòng)配置每個(gè)實(shí)例。
1. 實(shí)踐步驟
- 步驟1:創(chuàng)建自動(dòng)發(fā)現(xiàn)腳本:通過腳本獲取MySQL實(shí)例端口(如
netstat、ps命令),輸出為JSON格式供Zabbix解析。
示例腳本(discovery_mysqlport.sh):#!/bin/bash echo '{ "data": [ {"{#MYSQLPORT}": "3306"}, {"{#MYSQLPORT}": "3307"} ] }' - 步驟2:配置自動(dòng)發(fā)現(xiàn)規(guī)則:在Zabbix Web界面中,創(chuàng)建“自動(dòng)發(fā)現(xiàn)”規(guī)則,鍵值使用上述腳本,定義監(jiān)控項(xiàng)原型(如
mysql.status[{#MYSQLPORT},Com_select]); - 步驟3:關(guān)聯(lián)模板:將自動(dòng)發(fā)現(xiàn)的實(shí)例關(guān)聯(lián)到MySQL監(jiān)控模板,自動(dòng)應(yīng)用監(jiān)控項(xiàng)。

三、告警與通知機(jī)制
Zabbix可通過**觸發(fā)器(Trigger)設(shè)置閾值,當(dāng)指標(biāo)超過閾值時(shí)觸發(fā)告警,通過動(dòng)作(Action)**發(fā)送通知(郵件、短信、釘釘?shù)龋?,確保問題及時(shí)響應(yīng)。
1. 示例:慢查詢告警
- 觸發(fā)器配置:設(shè)置表達(dá)式
{MySQL:mysql.status[Slow_queries].last()} > 10(慢查詢數(shù)超過10條),級(jí)別為“警告”; - 動(dòng)作配置:當(dāng)觸發(fā)器激活時(shí),發(fā)送郵件通知管理員,包含實(shí)例IP、慢查詢數(shù)、時(shí)間等信息。

四、可視化與儀表盤
Zabbix的**儀表盤(Dashboard)**功能可將監(jiān)控?cái)?shù)據(jù)可視化,直觀展示MySQL性能趨勢(shì)(如QPS變化、連接數(shù)波動(dòng)、慢查詢趨勢(shì)),幫助管理員快速定位瓶頸。
1. 實(shí)踐方法
- 在Zabbix Web界面中,創(chuàng)建自定義儀表盤,添加**圖形(Graph)**組件,選擇MySQL監(jiān)控項(xiàng)(如
QPS、Slow_queries); - 支持趨勢(shì)圖(展示歷史數(shù)據(jù))、實(shí)時(shí)圖(展示當(dāng)前狀態(tài)),可按時(shí)間范圍(小時(shí)、天、周)篩選。

五、實(shí)際應(yīng)用案例
Zabbix在MySQL監(jiān)控中的實(shí)際運(yùn)用場(chǎng)景包括:
- 電商秒殺場(chǎng)景:監(jiān)控
Threads_connected(連接數(shù))驟增,提前擴(kuò)容數(shù)據(jù)庫或優(yōu)化連接池配置,避免活動(dòng)期服務(wù)雪崩; - 金融交易系統(tǒng):通過
Slow_queries監(jiān)控高頻交易SQL,優(yōu)化索引或SQL語句,提升訂單處理速度; - 日志分析平臺(tái):跟蹤
Bytes_received(接收字節(jié)數(shù))、Bytes_sent(發(fā)送字節(jié)數(shù)),動(dòng)態(tài)調(diào)整存儲(chǔ)引擎(如InnoDB)或索引,確保海量日志高效入庫。
六、注意事項(xiàng)與最佳實(shí)踐
- 權(quán)限管理:為Zabbix創(chuàng)建專用MySQL用戶(如
zabbix@localhost),僅授予必要權(quán)限(PROCESS、REPLICATION CLIENT、SELECT ON *.*),避免安全風(fēng)險(xiǎn); - 腳本安全:確保監(jiān)控腳本的權(quán)限最小化(如
chmod +x chk_mysql.sh),避免敏感信息泄露(如密碼存儲(chǔ)在.my.cnf文件中,權(quán)限設(shè)置為600); - 閾值調(diào)整:根據(jù)業(yè)務(wù)需求和歷史數(shù)據(jù)調(diào)整觸發(fā)器閾值(如慢查詢閾值從10調(diào)整為5),避免誤報(bào)或漏報(bào);
- 日志排查:定期檢查Zabbix Server和Agent的日志(如
/var/log/zabbix/zabbix_server.log),解決數(shù)據(jù)采集失敗問題(如網(wǎng)絡(luò)連通性、權(quán)限錯(cuò)誤)。
總結(jié)
Zabbix通過自定義腳本、內(nèi)置模板、自動(dòng)發(fā)現(xiàn)等功能,可全面監(jiān)控MySQL的性能指標(biāo)與健康狀態(tài),結(jié)合告警通知和可視化儀表盤,幫助管理員實(shí)現(xiàn)數(shù)據(jù)庫的實(shí)時(shí)監(jiān)控、故障預(yù)警、性能優(yōu)化。實(shí)際應(yīng)用中需根據(jù)業(yè)務(wù)場(chǎng)景調(diào)整監(jiān)控指標(biāo)與閾值,確保監(jiān)控的有效性和準(zhǔn)確性。
到此這篇關(guān)于Zabbix在MySQL性能監(jiān)控方面的運(yùn)用及最佳實(shí)踐記錄的文章就介紹到這了,更多相關(guān)Zabbix MySQL性能監(jiān)控內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
搭建zabbix監(jiān)控以及郵件報(bào)警的超級(jí)詳細(xì)教學(xué)
zabbix是一個(gè)基?于web界面的企業(yè)級(jí)開源監(jiān)控軟件,下面這篇文章主要給大家介紹了關(guān)于搭建zabbix監(jiān)控以及郵件報(bào)警的超級(jí)詳細(xì)教學(xué),文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Linux shell環(huán)境下Zabbix Api的使用
今天小編就為大家分享一篇關(guān)于Linux shell環(huán)境下Zabbix Api的使用,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02
Zabbix監(jiān)控華為交換機(jī)DHCP接口地址池的操作過程
最近工作中遇到一個(gè)因?yàn)镈HCP地址池滿載、導(dǎo)致用戶無法獲取到IP地址的故障,所以在想通過zabbix 監(jiān)控DHCP地址池的狀態(tài)、當(dāng)DHCP 地址池?cái)?shù)量小于某個(gè)值時(shí)觸發(fā)zabbix告警,這篇文章主要介紹了Zabbix監(jiān)控華為交換機(jī)DHCP接口地址池,需要的朋友可以參考下2023-08-08
zabbix如何添加監(jiān)控主機(jī)和自定義監(jiān)控項(xiàng)
這篇文章主要介紹了zabbix添加監(jiān)控主機(jī)和自定義監(jiān)控項(xiàng)的方法,添加自定義監(jiān)控項(xiàng)此處以監(jiān)控當(dāng)前系統(tǒng)的用戶個(gè)數(shù)為例子,通過腳本命令給大家詳細(xì)講解,需要的朋友可以參考下2022-08-08
CentOS 6.9 安裝 Zabbix 3.0 的詳細(xì)步驟
Zabbix 是一個(gè)基于 WEB 界面的,提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級(jí)開源解決方案,本文重點(diǎn)研究 Zabbix,使用它的目的是為了更好地監(jiān)控MySQL 數(shù)據(jù)庫服務(wù)器,并生成圖形報(bào)表,相較于 Nagios,Zabbix 在這方面功能更為強(qiáng)大,感興趣的朋友一起看看吧2025-04-04
Zabbix如何通過ssh監(jiān)控獲取網(wǎng)絡(luò)設(shè)備數(shù)據(jù)
這篇文章主要介紹了Zabbix如何通過ssh監(jiān)控獲取網(wǎng)絡(luò)設(shè)備數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Zabbix監(jiān)控Linux主機(jī)設(shè)置方法
這篇文章主要介紹了Zabbix監(jiān)控服務(wù)端已經(jīng)配置完成,現(xiàn)在要使用Zabbix對(duì)Linux主機(jī)進(jìn)行監(jiān)控,需要的朋友可以參考下2014-10-10

