下载官方RPM包:
[root@localhost ~]# rpm -ivh https://www.percona.com/downloads/percona-monitoring-plugins/1.1.6/percona-zabbix-templates-1.1.6-1.noarch.rpm 获取https://www.percona.com/downloads/percona-monitoring-plugins/1.1.6/percona-zabbix-templates-1.1.6-1.noarch.rpm 准备中... ################################# [100%] 软件包 percona-zabbix-templates-1.1.6-1.noarch 已经安装
安装后会生成以下几个文件:
[root@localhost ~]# rpm -ql percona-zabbix-templates /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.6.xml
get_mysql_stats_wrapper.sh 会调用 ss_get_mysql_stats.php这个脚本,实际收集数据的是php脚本,还需要安装php-mysql这个扩展。
userparameter_percona_mysql.conf 是key的配置文件
zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml 是监控模板
复制监控脚本到scrpits目录下(根据自己的环境):
[root@localhost ~]# cp /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh /usr/local/zabbix/scripts/ [root@localhost ~]# cp /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php /usr/local/zabbix/scripts/ [root@localhost ~]# chmod +x /usr/local/zabbix/scripts/get_mysql_stats_wrapper.sh
复制key配置文件到zabbix_agentd.conf.d目录下
[root@localhost ~]# cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/
注意 userparameter_percona_mysql.conf 里要指定正确的 get_mysql_stats_wrapper.sh 脚本的绝对路径。
重启zabbix-agentd
[root@localhost ~]# service zabbix-agentd restart
创建数据库监控账号
mysql> GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix';FLUSH PRIVILEGES;
根据自己的实际环境稍微修改一下脚本
[root@localhost scripts]# vim get_mysql_stats_wrapper.sh CMD="/usr/bin/php -q $DIR/ss_get_mysql_stats.php --host $HOST --items gg" #实际环境php绝对路径 RES=`HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','` #HOME=~zabbix mysql -实际mysql绝对路径,我的是/usr/local/mysql/bin/mysql -uzabbix -pzabbix [root@localhost scripts]# vim ss_get_mysql_stats.php $mysql_user = 'zabbix'; #用户名 $mysql_pass = 'zabbix'; #密码 $mysql_port = 3306; #端口
测试脚本
[root@localhost scripts]# php ss_get_mysql_stats.php --host localhost --items gg ERROR: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)[root@hp20 scripts]#
因为php脚本会去这个目录找socket文件(没找到php脚本在哪定义socket....),而我的socket在/tmp下,可以做个软连接过去.这里还有一个小坑,就是如果手动测试这个php脚本,会创建/tmp/localhost-mysql_cacti_stats.txt 文件,且文件是当前登陆用户权限。测试完后记得删除这个文件,或者改为zabbix用户
[root@localhost scripts]# mkdir -p /var/lib/mysql/ [root@localhost scripts]# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock [root@localhost scripts]# chown -R mysql:mysql /var/lib/mysql/