zabbix-使用percona mysql插件来监控mysql
概述
zabbix自带的mysql插件来监控mysql数据库,但是太过简陋了,为了更详细的监控,业界的同学们都使用Percona Monitoring Plugins 监控 MySQL的方式。
安装php脚本运行环境
percona监控zabbix的脚本使用php写的,所以需要准备好php运行环境,这里直接用yum安装就可以满足要求了:
yum install -y php php-mysql
安装官方percona插件
官网:https://www.percona.com/doc/percona-monitoring-plugins/1.1/index.html
1,安装percona的yum源
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
2,安装percona监控插件
yum install percona-zabbix-templates
3,查看percona-zabbix-templates 安装后的脚本位置和模板位置
[root@mysql03 home]# rpm -ql percona-zabbix-templates-1.1.8-1.noarch /var/lib/zabbix/percona /var/lib/zabbix/percona/scripts /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php /var/lib/zabbix/percona/templates /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
注:安装后会生成2个目录,/var/lib/zabbix/percona/scripts是监控脚本目录,/var/lib/zabbix/percona/templates是监控mysql的xml模版目录,然后把/var/lib/zabbix/percona/templates/目录下的模版文件zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6_1.xml复制出来,在zabbix的管理界面import导入进去,但是报如下错误:
解决办法:
将zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml导入zabbix2.4中再导出。之后将新的导出xml导入到3.2中问题解决。
4,拷贝userparameter_percona_mysql.conf文件到被监控的mysql服务器上
cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
5,修改客户端的zabbix_agentd.conf文件, 把userparameter_percona_mysql.conf 所在的目录Include增加进去
Include=/etc/zabbix/zabbix_agentd.d/*.conf
6,修改监控脚本
# 修改用户名,密码,端口,sock文件路径 vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php $mysql_user = 'zabbix'; $mysql_pass = 'Ab.12345'; $mysql_port = 3306; $mysql_socket = "/tmp/mysql.sock";
注:若mysql没有使用默端口3006,则还需要修改如下脚本文件:
# 1,这里要先建好这个文件,否则会报rm权限错误 vim /tmp/localhost-mysql_cacti_stats.txt:3317 chown -R zabbix.zabbix /tmp/$HOST-mysql_cacti_stats.txt:3317 #2,修改端口脚本 vim /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt " 换成: CACHEFILE="/tmp/$HOST-mysql_zabbix_stats.txt:3317" TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_cacti_stats.txt` 换成: TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_zabbix_stats.txt:3317` #3,修改mysql执行命令路径 #RES=`HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','` 换成: RES=`/usr/local/mysql/bin/mysql -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`
登陆mysql创建监控要用的账号
mysql> GRANT USAGE,SELECT,PROCESS,SUPER,REPLICATION CLIENT ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY "Ab.12345"; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
测试监控项
agent端测试
[root@mysql01 home]# /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg gg:20
[root@mysql01 scripts]# ./get_mysql_stats_wrapper.sh gm 1 [root@mysql01 scripts]# ./get_mysql_stats_wrapper.sh gw 1819813
zabbix-server端测试监控项
[root@SMP tmp]# zabbix_get -s 192.230.4.11 -k 'MySQL.Handler-commit' rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作 18041875
注:权限问题解决方法
登录zabbix-agent服务器,执行:
[root@mysql01 tmp]# cd /tmp [root@mysql01 tmp]# chown -R zabbix.zabbix localhost-mysql_cacti_stats.txt [root@mysql01 tmp]# /etc/init.d/zabbix-agent restart
再次测试:
[root@SMP tmp]# zabbix_get -s 192.230.4.11 -k 'MySQL.Handler-commit' 18041956
主机关联模板
查看数据:
mysql从库监控slave配置
先在mysql slave的agent里面需要check下看是否生效:
[root@mysql01 scripts]# ./get_mysql_stats_wrapper.sh running-slave ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 0
需要配置下访问mysql的一些基本参数:
在my.cnf配置用户名密码、sock路径
[mysql] no-auto-rehash user=zabbix password=Ab.12345 socket=/var/lib/mysql/mysql.sock
再次测试:
[root@mysql03 scripts]# sh /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave 1
结束!