ZABBIX監(jiān)控Mysql數(shù)據(jù)庫(kù)實(shí)戰(zhàn)

一、Zabbix自定義Key監(jiān)控Mysql

Mysql的基礎(chǔ)監(jiān)控
Zabbix Agent的安裝
進(jìn)程存活
檢測(cè)端口

Mysql的高級(jí)監(jiān)控說(shuō)明
Mysql提供show global status可以實(shí)現(xiàn)對(duì)Mysql的高級(jí)監(jiān)控
高級(jí)監(jiān)控包含監(jiān)控Mysql連接數(shù),增刪改查數(shù),流量等


Mysql全局變量.png

開(kāi)通最小權(quán)限用戶(hù),保證安全
grant usage on . to 'monitor'@'127.0.0.1' identified by 'shijiangepwd';
flush privileges;

監(jiān)控命令詳解mysql -umonitor -h 127.0.0.1 -pshijiangepwd -e 'show global status'
Threads_connected:連接數(shù)
Com_select:查詢(xún)總量
Com_insert:插入總量
Com_update:更新總量
Com_delete:刪除總量
Bytes_received: 流入總流量
Bytes_sent:流出總流量
Slow_queries:慢查詢(xún)總量

監(jiān)控Shell腳本check_mysql.sh

port=$1
key=$2
mysql -umonitor -pshijiangepwd -h 127.0.0.1 -P${port} -e "show global status" |grep "${key}\s" |awk '{print $2}'

\s :匹配任意的空白符,防止有多個(gè)檢索項(xiàng)

測(cè)試監(jiān)控Shell腳本

sh /usr/local/zabbix/check_mysql.sh 3306 Threads_connected

Zabbix自定義Key配置

UserParameter=mysql.status[*],sh /usr/local/zabbix/check_mysql.sh $1 $2 2>/dev/null

重定向:不安全操作重定向
重啟agent


示例1

服務(wù)端測(cè)試能否獲取到值
zabbix_get -s xxx -k mysql.status[3306,Threads_connected]
zabbix_get -s xxx -k mysql.status[3306,Com_insert]


測(cè)試取值

使用模板去監(jiān)控Mysql,要先添加模板,才能創(chuàng)建自定義的監(jiān)控KEY
利用自帶的模板改一改
mysql.status[3306,Threads_connected]

mysql.status[3306,Com_select]
mysql.status[3306,Bytes_received]
mysql.status[3306,Bytes_sent]


模板創(chuàng)建

寫(xiě)一個(gè)測(cè)試的程序我們來(lái)測(cè)一下
while true;do
  mysql -h 127.0.0.1 -e "select * from test.test;insert into test.test values (2);delete from test.test;"
  sleep 1
done

二、Zabbix自動(dòng)發(fā)現(xiàn)監(jiān)控Mysql

為什么要自動(dòng)發(fā)現(xiàn)?
Mysql可能監(jiān)聽(tīng)在不同端口,3306、3307、3308
可能一臺(tái)服務(wù)器有多個(gè)Mysql實(shí)例多個(gè)監(jiān)聽(tīng)端口

自動(dòng)發(fā)現(xiàn)就是把監(jiān)控項(xiàng)目里的傳入的參數(shù)給變量化 mysql.status[{#ONE},Threads_connected]

Mysql自動(dòng)發(fā)現(xiàn)腳本discovery_mysql.py,腳本在放在被監(jiān)控服務(wù)器上

# -*- coding: utf-8 -*-
import json
import commands
(status,output) = commands.getstatusoutput("""sudo netstat -tlnp| grep mysqld |awk '{print $4}'|awk -F':' '{print $(NF)}'|sort | uniq""")
outputs = output.split('\n')
#print((status,outputs))
result = []
for one in outputs:
  result.append( {'{#ONE}': one} )
#print(result)
print( json.dumps({'data':result},sort_keys=True,indent=4) )

Zabbix添加Sudo權(quán)限(visudo)
zabbix ALL= NOPASSWD: /bin/netstat
Defaults:zabbix !requiretty

Zabbix自定義Key配置
UserParameter=mysql.discovery,python /usr/local/zabbix/discovery_mysql.py
重啟Agent

腳本示例

測(cè)試能否獲取到值
zabbix_get -s xxx -k mysql.discovery

使用自動(dòng)發(fā)現(xiàn)監(jiān)控Mysql
mysql.status[3306,Threads_connected]
mysql.status[3306,Com_insert]

創(chuàng)建自動(dòng)發(fā)現(xiàn)規(guī)則

腳本

創(chuàng)建自動(dòng)發(fā)現(xiàn)規(guī)則

創(chuàng)建監(jiān)控項(xiàng)原型

三、Zabbix監(jiān)控Mysql主從同步

Mysql主從監(jiān)控的必要性
如果發(fā)生主從同步異常,業(yè)務(wù)會(huì)出問(wèn)題
如果從庫(kù)是用來(lái)備份的,會(huì)導(dǎo)致數(shù)據(jù)丟失

Mysql主從同步監(jiān)控說(shuō)明
從庫(kù)運(yùn)行show slave status\G可以來(lái)查看主從同步信息
Slave IO Running可以觀察從庫(kù)的IO進(jìn)程是否正常,IO進(jìn)程用于同步二進(jìn)制日志
Slave SQL Running可以觀察從庫(kù)的SQL進(jìn)程是否正常,SQL進(jìn)程用于執(zhí)行二進(jìn)制日志
Seconds Behind Master代表主從同步的延時(shí)時(shí)間

主從監(jiān)控權(quán)限用戶(hù)的創(chuàng)建(在被監(jiān)控端用root賬號(hào)創(chuàng)建用戶(hù))

 grant usage,replication client on *.* to 'monitor'@'127.0.0.1' identified by 'shijiangepwd';
 flush privileges;

監(jiān)控Mysql主從的Shell腳本check_mysql_slave.sh

port=$1
key=$2
mysql -umonitor -pshijiangepwd -h 127.0.0.1 -P${port} -e "show slave status\G"|grep "${key}\:"|awk '{print $2}'
腳本示例

Shell腳本測(cè)試
sh check_mysql_slave.sh 3306 Slave_SQL_Running

Zabbix自定義Key監(jiān)控Mysql主從
UserParameter=mysql.slave.status[*],sh /etc/zabbix/check_mysql_slave.sh 12 2>/dev/null
重啟Agent

腳本示例1

腳本示例2

創(chuàng)建監(jiān)控模板,新建一個(gè)監(jiān)控模板
監(jiān)控模板名稱(chēng):Template Mysql Slave Status
mysql.slave.status[3306,Slave_IO_Running]
mysql.slave.status[3306,Slave_SQL_Running]
mysql.slave.status[3306,Seconds_Behind_Master]

創(chuàng)建監(jiān)控項(xiàng)

檢測(cè)數(shù)據(jù)

也能使用自動(dòng)發(fā)現(xiàn)監(jiān)控
定義解決器來(lái)判斷主從同步是否異常
兩個(gè)狀態(tài)都要為Yes: {Template Mysql Slave Status:mysql.slave.status[3306,Slave_IO_Running].str(Yes)}=0 or {Template Mysql Slave Status:mysql.slave.status[3306,Slave_SQL_Running].str(Yes)}=0
延時(shí)不能超過(guò)100:{Template Mysql Slave Status:mysql.slave.status[3306,Seconds_Behind_Master].last()}<100

觸發(fā)器定義

自動(dòng)發(fā)現(xiàn)
嘗試使用自動(dòng)發(fā)現(xiàn)去監(jiān)控Mysql主從狀態(tài)
最重要的是發(fā)現(xiàn)端口

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Zabbix簡(jiǎn)介 Zabbix官方網(wǎng)站Zabbix中文文檔 本文系統(tǒng)環(huán)境是CentOS7x86_64, Zabbi...
    Zhang21閱讀 8,333評(píng)論 0 37
  • 自定義key網(wǎng)絡(luò)發(fā)現(xiàn)Web監(jiān)控主動(dòng)檢測(cè)基于SNMP監(jiān)控基于JMX監(jiān)控Zabbix ProxyZabbix調(diào)優(yōu) 一、...
    哈嘍別樣閱讀 1,507評(píng)論 0 1
  • 一、監(jiān)控系統(tǒng)介紹 硬件-->系統(tǒng)-->應(yīng)用監(jiān)控:1.發(fā)現(xiàn)故障2.監(jiān)控業(yè)務(wù)系統(tǒng)業(yè)務(wù)流量監(jiān)控的兩種方式:1.有agen...
    分享一些文檔閱讀 2,374評(píng)論 0 0
  • 《永遠(yuǎn)贊美豬大大》 / 我問(wèn)一頭豬 你的豬圈夢(mèng)是什么 它答 兩件事 一是不停地吃 二是永遠(yuǎn)贊美豬大大 吃我倒理解 ...
    啞柳的詩(shī)閱讀 114評(píng)論 0 1
  • 說(shuō)過(guò)無(wú)數(shù)遍我是“因?yàn)槭俣鴣?lái)到教會(huì)”的,來(lái)到教會(huì)我只想要幾件很簡(jiǎn)單的事:“從低落情緒走出來(lái)”、“有一份工作經(jīng)濟(jì)獨(dú)立...
    JemimaLi閱讀 2,922評(píng)論 1 3

友情鏈接更多精彩內(nèi)容