percona zabbix 功能原理
percona zabbix 是percona 下的一个用于zabbix监控mysql的一个工具,主要是通过zabbix 执行shell脚本 get_mysql_stats_wrapper.sh,这个脚本中调用了ss_get_mysql_stats.php,把采集到数据存入临时文件(/tmp/localhost-mysql_cacti_stats.txt),通过命令行传入的参数在临时文件中过滤出需要的数据,给到zabbix,进行展示和监控。
准备工作
用到了php,所以这里需要安装php,而且需要安装php 的mysqli,这里我zabbix已经在用,所有没有zabbix安装介绍。
(实际这个脚本从percona cacti 改过来的)
wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/6/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm
yum -y install php php-pdo percona-zabbix-templates-1.1.8-1.noarch.rpm
配置
安装好的默认目录结构 /var/lib/zabbix,zabbix目录在 /usr/local/zabbix
.
└── percona
├── scripts
│ ├── get_mysql_stats_wrapper.sh
│ ├── ss_get_mysql_stats.php
└── templates
├── userparameter_percona_mysql.conf
└── zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
复制zabbix agent需要的配置文件,以及修改对应配置
cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/
vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
<?php
$mysql_user = 'zabbix';
$mysql_pass = 'zabbix';
vim get_mysql_stats_wrapper.sh ##编辑此文件19行,默认是mysql无密码,给配置上mysql用户和密码
RES=`HOME=~zabbix /usr/local/bin/mysql -h localhost -uzabbix -pzabbix -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`
通过手动调用进行测试是否OK
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
注意我这边遇到一个报错找不到mysql sock文件,所以我修改了ss_get_mysql_stats.php 33行
ERROR: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php
$mysql_socket = '/tmp/mysql.sock';
最后记得删除/tmp/ 下一个存放数据的临时文件,因为我们手动调用过,所以,文件拥有者和组都是root,zabbix agent调用写入时会没有权限。
rm -f localhost-mysql_cacti_stats.txt
最后导入模板 zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
注意次模板我是在zabbix 2.4.7版本使用。默认还不支持zabbix 3.0,看网上解决方案是在zabbix2.x导入,然后在导出,在导入到zabbix3.x