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)對關(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緩沖池讀請求數(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í)例管理
對于一臺服務(wù)器部署多個(gè)MySQL實(shí)例(不同端口)的場景,Zabbix可通過自動(dòng)發(fā)現(xiàn)規(guī)則動(dòng)態(tài)識別實(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條),級別為“警告”; - 動(dòng)作配置:當(dāng)觸發(fā)器激活時(shí),發(fā)送郵件通知管理員,包含實(shí)例IP、慢查詢數(shù)、時(shí)間等信息。

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

五、實(shí)際應(yīng)用案例
Zabbix在MySQL監(jiān)控中的實(shí)際運(yùn)用場景包括:
- 電商秒殺場景:監(jiān)控
Threads_connected(連接數(shù))驟增,提前擴(kuò)容數(shù)據(jù)庫或優(yōu)化連接池配置,避免活動(dòng)期服務(wù)雪崩; - 金融交易系統(tǒng):通過
Slow_queries監(jiān)控高頻交易SQL,優(yōu)化索引或SQL語句,提升訂單處理速度; - 日志分析平臺:跟蹤
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ù)場景調(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Zabbix WEB監(jiān)測實(shí)現(xiàn)過程圖解
這篇文章主要介紹了Zabbix WEB監(jiān)測實(shí)現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Zabbix安裝圖文教程(需要LAMP或者LNMP運(yùn)行環(huán)境)
要想安裝Zabbix那么在Linux下安裝zabbix需要有LAMP或者LNMP運(yùn)行環(huán)境才可以,這里給大家分享下Zabbix安裝方法,需要的朋友可以參考下2014-10-10
Zabbix監(jiān)控方案-官方最新4.4版本【推薦】
zabbix是一個(gè)基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級的開源解決方案。這篇文章主要介紹了Zabbix監(jiān)控方案-官方最新4.4版本,需要的朋友可以參考下2019-10-10
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)控以及郵件報(bào)警的超級詳細(xì)教學(xué)
zabbix是一個(gè)基?于web界面的企業(yè)級開源監(jiān)控軟件,下面這篇文章主要給大家介紹了關(guān)于搭建zabbix監(jiān)控以及郵件報(bào)警的超級詳細(xì)教學(xué),文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Zabbix自定義腳本監(jiān)控nginx以及微信告警的全過程
zabbix是一個(gè)基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級的開源解決方案,下面這篇文章主要給大家介紹了關(guān)于Zabbix自定義腳本監(jiān)控nginx以及微信告警的相關(guān)資料,需要的朋友可以參考下2022-04-04
解析Zabbix 5.0磁盤自動(dòng)發(fā)現(xiàn)和讀寫監(jiān)控的問題
本文文章給大家介紹Zabbix 5.0磁盤自動(dòng)發(fā)現(xiàn)和讀寫監(jiān)控的問題,在配置鍵值得時(shí)候大家要主要此鍵值支持Linux平臺,具體細(xì)節(jié)問題跟隨小編一起通過本文學(xué)習(xí)下吧2021-05-05

