概述
zabbix自带的mysql插件来监控mysql数据库,可是太过简陋了,为了更详细的监控,业界的同窗们都使用Percona Monitoring Plugins 监控 MySQL的方式。php
安装php脚本运行环境
percona监控zabbix的脚本使用php写的,因此须要准备好php运行环境,这里直接用yum安装就能够知足要求了:html
yum install -y php php-mysql
安装官方percona插件
官网:https://www.percona.com/doc/percona-monitoring-plugins/1.1/index.htmlmysql
1,安装percona的yum源sql
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 安装后的脚本位置和模板位置vim
[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导入进去,可是报以下错误:服务器
解决办法:app
将zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml导入zabbix2.4中再导出。以后将新的导出xml导入到3.2中问题解决。socket
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
结束!