一.客户端操作
1.创建mysql用户获取信息(不要用root)mysql -uroot -p
mysql>grant usage on *.* to zabbix@localhost identified by \'zabbix_password\'
2.创建监控脚本keyvim /usr/local/zabbix/script/mysql_status.sh
#!/bin/bash
User=\'you_user\'
Password=\'you_password\'
Mysql=\'/usr/bin/mysql\'
Mysqladmin=\'/usr/bin/mysqladmin\'
command(){ #使用的sock登陆,如果没开启,那就删除socket这段
/usr/bin/mysql -u\'zabbix\' --socket=/ops/data/mysql/mysqld.sock -p\'1qazxsw2!@\' -e "show global status" 2>/dev/null | awk \'$1 ~ /\'"$1"\'$/ {print $2}\'
}
case $1 in
Com_select)
command $1 ;;
Com_insert)
command $1 ;;
Com_update)
command $1 ;;
Com_delete)
command $1 ;;
Com_begin)
command $1 ;;
Com_commit)
command $1 ;;
Com_rollback)
command $1 ;;
Questions)
command $1 ;;
Slow_queries)
command $1 ;;
Bytes_received)
command $1 ;;
Bytes_sent)
command $1 ;;
Uptime)
command $1 ;;
Version)
$Mysql -V | awk -F \'[ ,]\' \'{print $6}\' ;;
Ping)
$Mysqladmin -u\'zabbix\' --socket=/ops/data/mysql/mysqld.sock -p\'1qazxsw2!@\' ping 2>/dev/null |wc -l ;;
*)
echo "Usage: $0 { Com_select|Com_insert|Com_update|Com_delete|Com_begin|Com_commit|Com_rollback|Questions|Slow_queries|Bytes_received|Bytes_sent|Ping|Uptime|Version }" ;;
esac
3.测试脚本返回mysql_status.sh Uptime
ping的返回1则是mysql在运行mysql_status.sh Ping
4.修改配置文件vim /usr/local/zabbix/etc/zabbix_agentd.conf
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
UnsafeUserParameters=1 #开启允许自定义 Key
5.重启客户端/etc/init.d/zabbix_agentd restart
6.编写对应配置文件vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/mysql_status.conf
# Mysql_status
UserParameter=mysql.status[*],/usr/local/zabbix/script/mysql_status.sh $1
UserParameter=mysql.ping,/usr/local/zabbix/script/mysql_status.sh Ping
UserParameter=mysql.version,/usr/local/zabbix/script/mysql_status.sh Version
7.测试,返回1正确/usr/local/zabbix/sbin/zabbix_agentd -t mysql.ping
对于ubuntu机器,测试后出现没数据zabbix_agent -t mysql.pingmysql.ping [m|ZBX_NOTSUPPORTED] [Unsupported item key.]
那就直接跳过这一步,到服务端测试看是否可以获取到值。
二.服务端配置
1.测试连通,返回1则ok/usr/local/zabbix/bin/zabbix_get -s 192.168.1.10 -k mysql.ping
2.效果
接下来把 Zabbix 自带的监控模板链接到主机即可
过上一小会,就能看到效果了,version可能比较时间长点,因为模板里设的时间范围是3600秒,ping会误报一次Mysql Down,因为之前是没有值的。监控模板自带2张图,也可以自定义画图。
三.使用模板注意问题
zabbix有一个mysql监控的默认模板,但是其默认mysql账号验证信息在/var/lib/zabbix中,不正确,如果套用的话需要设置mysql。
1.在zabbix-agent目录下/etc/zabbix/ 创建.my.cnf文件vim /etc/zabbix/.my.cnf
[client]
user=zabbix
password=zabbix
2.然后查看 userparameter_mysql.conf 文件,看到类似HOME=/var/lib/zabbix的路径设置,把路径全都替换为 /etc/zabbix/,使用下面的命令。sed -i \'s|/var/lib/zabbix|/etc/zabbix|g\' /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
3.修改完之后检查一下,然后重启agentsystemctl restart zabbix-agent
4.在zabbix-server命令行测试下zabbix_get -s 127.0.0.1 -p 10050 -k "mysql.status[Uptime]"