首先編輯一個監控腳本check_mysql.sh,這些參數zabbix mysql template默認的,也可以自定義:
#!/bin/bash
#MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"
MYSQL_CONN="/usr/bin/mysqladmin"
case $1 in
Uptime)
result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"`
echo $result
;;
Com_update)
result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3`
echo $result
;;
Slow_queries)
result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"`
echo $result
;;
Com_select)
result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3`
echo $result
;;
Com_rollback)
result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3`
echo $result
;;
Questions)
result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"`
echo $result
;;
Com_insert)
result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3`
echo $result
;;
Com_delete)
result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3`
echo $result
;;
Com_commit)
result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3`
echo $result
;;
Bytes_sent)
result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`
echo $result
;;
Bytes_received)
result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3`
echo $result
;;
Com_begin)
result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3`
echo $result
這里第二行本來是直接把我mysql的password hardcode了。
所以后面執行腳本會有:
[Warning] Using a password on the command line interface can be insecure.
所以解決hardcode還需要到mysql的配置文件(我這里是/etc/my.cnf)中給mysqladmin命令配置密碼,發現試著在命令行執行mysqladmin默認就是使用這個配置:
(當然我這里配置root賬號是非常不妥的)
[mysqladmin]
user=root
password=123456
socket=/var/lib/mysql/mysql.sock
zabbix agent啟動會區讀取/etc/zabbix/zabbix_agentd.d下的所有*.conf文件,這里我把原來zabbix初始化的mysql監控文件全注釋了并添加參數,也可以自己自定義,只要是.conf結尾就可以。加上如下內容,這里很多網上的資料給mysql.ping的參數使用的命令是mysqladmin ping | grep -c alive,但是如果mysql down了的話,執行mysqladmin只會報錯不會返回zabbix trigger的值0,所以我這里使用的是netstat代替mysqladmin。
格式: UserParameter=key, command
UserParameter=mysql.version,mysql -V
UserParameter=mysql.status[*],/usr/local/zabbix-scripts/check_mysql.sh $1
UserParameter=mysql.ping,netstat -ntpl | grep 3306 | grep mysql | wc | awk '{print $1}'
接下來重啟zabbix agent加載配置文件,就可以在zabbix web上mysql的各種item。
如果有報錯,會有一個紅色的警示圖標,點擊可以看到比較詳細的log。
image.png
效果:
image.png
image.png
在zabbix web上可以比較直觀的看到結果,也可以使用zabbix_get在agent端進行測試:
zabbix_get -s 127.0.0.1 -p 10050 -k mysql.status[Com_select]
期間可能會遇到各種其他的問題,但主要的幾個點就是這些,舉一反三。
本文章來源blog地址:http://www.lxweimin.com/p/1c5850a6b70c,謝絕轉載。