-
背景:由于zabbix3.4裡面的mysql監控模闆沒有監控mysql的key,是以需要自己重新定義需要監控的key。
-
Zabbix Server與Agent之間監控資料的采集主要是通過Zabbix Server主動向Agent詢問某個Key的值,
-
Agent會根據Key去調用相應的函數去擷取這個值并傳回給Server端。
-
監控需求:
-
1、監控MySQL的狀态,當狀态發生異常,發出報警;
-
2、監控MySQL的操作,并用圖表展現;
-
3、使用自定義腳本監控擴充Agent。
-
一、授權mysql登入使用者(agentd端操作)
-
MariaDB [(none)]> grant usage on *.* to 'read'@'47.98.97.124' identified by '123456';
-
Query OK, 0 rows affected (0.00 sec)
-
MariaDB [(none)]> flush privileges;
-
Query OK, 0 rows affected (0.00 sec)
二、編輯userparameter_mysql.conf檔案
-
[[email protected] ~]# cp /root/zabbix-3.4.2/conf/zabbix_agentd/userparameter_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/
-
[[email protected] ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
-
UserParameter=mysql.version,mysql -V
-
UserParameter=mysql.status[*],/usr/local/zabbix/scripts/chk_mysql.sh $1
-
[[email protected] ~]# mkdir /usr/local/zabbix/scripts
-
[[email protected] ~]# chmod +x /usr/local/zabbix/scripts/chk_mysql.sh
-
[[email protected] ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
-
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf #開啟
三、mysql伺服器性能監控腳本
-
#!/bin/bash
-
#Filename:chk_mysql.sh
-
#Author:zhangjunchao
-
MYSQL_SOCK="/var/lib/mysql/mysql.sock"
-
MYSQL_USER='read'
-
MYSQL_PASSWORD='123456'
-
MYSQL_HOST='47.98.97.124'
-
MYSQL_PORT='3306'
-
MYSQL_Connect="/usr/bin/mysqladmin -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -P$MYSQL_PORT -S$MYSQL_SOCK"
-
if [ $# -ne 1 ];then
-
echo "please input one arguement"
-
fi
-
case $1 in
-
Uptime) #查詢目前MySQL本次啟動後的運作統計時間
-
result=`${MYSQL_Connect} status | cut -d ":" -f 2 | cut -d " " -f 2`
-
echo $result
-
;;
-
Slow_queries) #檢視目前慢查詢語句的個數
-
result=`${MYSQL_Connect} extended-status | grep -w "Slow_queries" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Com_rollback) #執行復原的個數
-
result=`${MYSQL_Connect} extended-status | grep -w "Com_rollback" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Questions)
-
result=`${MYSQL_Connect} extended-status | grep -w "Questions" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Com_commit)
-
result=`${MYSQL_Connect} extended-status | grep -w "Com_commit" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Bytes_sent) #發送的位元組數
-
result=`${MYSQL_Connect} extended-status | grep -w "Bytes_sent" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Bytes_received) #接受的位元組數
-
result=`${MYSQL_Connect} extended-status | grep -w "Bytes_received" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Com_begin)
-
result=`${MYSQL_Connect} extended-status | grep -w "Com_begin" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Open_tables) #檢視目前打開的表數量
-
result=`${MYSQL_Connect} status | cut -d ":" -f 5 | cut -d " " -f 2`
-
echo $result
-
;;
-
Threads_connected) #檢視目前打開的連接配接數量
-
result=`${MYSQL_Connect} extended-status | grep -w "Threads_connected" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Threads_cached) #檢視線程緩存内的線程數量
-
result=`${MYSQL_Connect} extended-status | grep -w "Threads_cached" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Threads_created) #檢視建立用來處理連接配接的線程數。如果Threads_created較大,可能要增加thread_cache_size值。
-
result=`${MYSQL_Connect} extended-status | grep -w "Threads_created" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Threads_running) #檢視激活的(非睡眠狀态)線程數
-
result=`${MYSQL_Connect} extended-status | grep -w "Threads_running" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Slow_launch_threads) #檢視建立時間超過slow_launch_time秒的線程數
-
result=`${MYSQL_Connect} extended-status | grep -w "Slow_launch_threads" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Com_select) #檢視select語句的執行數
-
result=`${MYSQL_Connect} extended-status | grep -w "Com_select" |cut -d "|" -f 3`
-
echo $result
-
;;
-
Com_insert) #檢視insert語句的執行數
-
result=`${MYSQL_Connect} extended-status | grep -w "Com_insert" |cut -d "|" -f 3`
-
echo $result
-
;;
-
Com_update) #檢視update語句的執行數
-
result=`${MYSQL_Connect} extended-status | grep -w "Com_update" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Com_delete) #檢視delete語句的執行數
-
result=`${MYSQL_Connect} extended-status | grep -w "Com_delete" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Connections) #檢視試圖連接配接到MySQL(不管是否連接配接成功)的連接配接數
-
result=`${MYSQL_Connect} extended-status | grep -w "Connections" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Table_locks_immediate) #檢視立即獲得的表的鎖的次數
-
result=`${MYSQL_Connect} extended-status | grep -w "Table_locks_immediate" | cut -d "|" -f 3`
-
echo $result
-
;;
-
Table_locks_waited) #檢視不能立即獲得的表的鎖的次數。如果該值較高,并且有性能問題,你應首先優化查詢,然後拆分表或使用複制
-
result=`${MYSQL_Connect} extended-status | grep -w "Table_locks_waited" | cut -d "|" -f 3`
-
echo $result
-
;;
-
*)
-
echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)"
-
;;
-
esac
四、測試資料
-
server端測試:
-
[[email protected] ~]# /usr/local/zabbix/bin/zabbix_get -s 47.98.97.124 -p 10050 -k mysql.status[Connections]
-
11232
-
[[email protected] ~]# /usr/local/zabbix/bin/zabbix_get -s 47.98.97.124 -p 10050 -k mysql.status[Uptime]
-
83228
-
agentd端測試:
-
[[email protected] ~]# /usr/local/zabbix/sbin/zabbix_agentd -t mysql.status[Uptime] -c /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
-
mysql.status[Uptime] [t|83321]
-
[[email protected] ~]# /usr/local/zabbix/sbin/zabbix_agentd -t mysql.status[Connections] -c /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
-
mysql.status[Connections] [t|11263]
五、登入zabbix,添加mysql監控模闆
-
當然,mysql監控模闆的key隻要那麼預設的幾個,要想監控到chk_mysql.sh腳本中的資料,就需要手動建立item啦,
-
當然,如果需要報警通知的話,就需要先手動建立trigger了,
-
當然,如果想圖形刷看到資料的話,就需要手動建立graph了。
版權聲明:本文為CSDN部落客「weixin_34198762」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/weixin_34198762/article/details/92384539