用zabbix自動發現監控MYSQL的資訊 一些坑
有兩個解決方案
A最後實驗成功的方法是:將mysqladmin的警告資訊重定向到/dev/null,忽略掉告警資訊。
Com_select)
result=/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status 2>/dev/null|grep -w "Com_select"|cut -d"|" -f3
echo $result
;;
在原有命令中加上2>/dev/null 就行了。
B還有一個方案,就是在my.cnf中配置mysqladmin的預設賬號密碼,這樣跑命令就不需要輸入使用者名稱和密碼了
[mysqladmin]
user=zabbix
password=‘123456‘
port=3306
host=localhost
總結下適合Zabbix的應該是方案二、方案一中由於執行命令是的zabbix賬號,非root,會遇到
[email protected] sbin]# zabbix_get -s 10.144.xx -p 10050 -k mysql.ping
sh: /dev/nul: Permission denied
因為zabbix沒有設定為可互動bash。
結果只是靠這個ping 發現還是不行,因為mysql down的時候,mysqladmin連線是報錯的,然後報錯資訊是無法分析為Numerical的。
方法三,利用mysql的監聽埠來分析:
netstat -ntpl |grep 3317 |grep mysql |wc |awk ‘{print $1}’
然後zabbix_get測試到
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
0
sudo netstat -ntpl |grep 3317 |grep mysql |wc |awk ‘{print $1}’
如果啟用sudo,需要主要sudoers檔案的編輯
還沒結束—
xxxx -p 10050 -k mysql.ping
sh: /usr/bin/sudo: Permission denied
0
有時候你感覺啥多配了,怎麼還是permission denied, 這時候是selinux在作祟
[[email protected] ~]# getenforce
Disabled
[[email protected] ~]# /usr/sbin/sestatus -v
SELinux status: disabled
setenforce 0 先測試下,如果okay,可以關閉