- A+
目录
1. 简介
percona是和MariaDB一样是MySQL的一个分支,在功能和性能上较MySQL有着明显的提升,并且提供一些非常有用的诊断插件工具。其中之一就是percona zabbix监控插件,因为percona是PHP写的,所以使用它必须有php环境,也是通过php连接MySQL来获取MySQL相关的监控数据。他是写的php监控mysql的一个脚本,把MySQL的监控性能指标全都拿出来,然后自己做了一个模板。当然你写别的也可以。
percona官网:https://www.percona.com
2. 安装
安装环境:
Hoatname |
IP |
zabbix角色 |
系统 |
linux-node1 |
192.168.56.11 |
zabbix-server |
CentOS6.7 |
linux-node2 |
192.168.56.12 |
zabbix-agent |
CentOS6.7 |
补充说明:
- zabbix-server/zabbix-agent 已经部署完毕,本文只部署 percaona
- 监控 linux-node2 的 MySQL服 务
- linux-node1/linux-node2 以下简称 node1/node2
percona监控插件下载地址:https://www.percona.com/downloads/percona-monitoring-plugins/LATEST/%0A
percona官方安装文档:https://www.percona.com/doc/percona-monitoring-plugins/LATEST/zabbix/index.html#configure-zabbix-agent%0A
1.在node2安装php环境(如已安装请忽略)
- #CentOS6安装php环境
- rpm -ivh http://repo.webtatic.com/yum/el6/latest.rpm #安装php特定源
- #安装php
- yum -y install php php-mysql
2. 在node2安装percone插件
安装法1:
- [root@linux-node2 ~]# rpm -ivh 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
- Retrieving 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
- warning: /var/tmp/rpm-tmp.rRytRu: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY
- Preparing...########################################### [100%]
- 1:percona-zabbix-template########################################### [100%]
- Scripts are installed to /var/lib/zabbix/percona/scripts
- Templates are installed to /var/lib/zabbix/percona/templates
安装法2:
- yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
- yum install percona-zabbix-templates
percona插件 rpm包本文下载地址:
3. 配置
3.1 配置文件配置
在安装好后percona后会在安装后查看安装的相关文件,会生成/var/lib/zabbix/percona目录,该目录下只有两个子目录,一个存放模板一个存放脚本。
- [root@linux-node2 ~]# rpm -ql percona-zabbix-templates
- /var/lib/zabbix/percona
- /var/lib/zabbix/percona/scripts
- /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh #被调用获取key值的shell脚本
- /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php #用来获取mysql监控信息的php脚本
- /var/lib/zabbix/percona/templates
- /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf #存放键值
- #以下是模版(模版导出来就是xml格式,所以这里是xml文件)
- /var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
percona监控在取监控数值时需要用户权限,所以需要数据库的用户和密码,用户和密码放在 /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf 文件,这个文件需要创建,里面存放用户名和密码,在ss_get_mysql_stats.php脚本中有一段配置如下,意思是会在本地找一个以.cnf后缀名结尾的配置文件用它里面的用户名和密码,找到就会读取里面的用户名和密码,没找到文件或者里面的用户和密码不对则获取不到值。所以我们要在路径下创建一个 ss_get_mysql_stats.php.cnf 的文件。
- [root@linux-node2 scripts]# cat ss_get_mysql_stats.php.cnf
- <?php
- $mysql_user='root'; #mysql中用来登陆监控mysql数据库的用户
- $mysql_pass='123456'; #mysql用户密码
- [root@linux-node2 scripts]# pwd
- /var/lib/zabbix/percona/scripts
提示:在生产环境中为了安全这里是需要创建一个专门用来监控mysql的一个用户和密码,所以要注意对这个用户的授权。我这里直接用的 root 用户
创建zabbix percona命令参考:
- GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'zabbox_percona'@'localhost' IDENTIFIED BY "percona123123";
测试:
- # cat /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf
- …………
- UserParameter=MySQL.Query-time-count-09,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh ou
- UserParameter=MySQL.Key-read-requests,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
- …………
- #获取结果如下:
- [root@linux-node2 scripts]# ./get_mysql_stats_wrapper.sh ou
- 0
- [root@linux-node2 scripts]# ./get_mysql_stats_wrapper.sh gg
- 2
提示:以上的0输出也代表是获取到值,如果没有获取到数值,根本不会有输出,马上配置完后取值也可能不会有输出,需要稍微等一下,因为有一定的延迟,并不是实时的。
注意点提示:
1. 分shell脚本get_mysql_stats_wrapper.sh中用户的HOST变量配置是配置在ss_get_mysql_stats.php.cnf的用户主机域。
- [root@linux-node2 scripts]# vim get_mysql_stats_wrapper.sh
- ………………
- HOST=localhost
- ………………
2. MySQL数据库的socker还有端口号,比如socket不是在默认的/var/lib/mysql/mysql.sock路径下,需要在 ss_get_mysql_stats.php 中配置指定
- [root@linux-node2 ~]# vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php
- ......
- ......
- $mysql_user = 'cactiuser';
- $mysql_pass = 'cactiuser';
- $mysql_port = 3306;
- $mysql_socket = '/tmp/mysql.sock';
- $mysql_flags = 0;
- $mysql_ssl = FALSE; # Whether to use SSL to connect to MySQL.
- $mysql_ssl_key = '/etc/pki/tls/certs/mysql/client-key.pem';
- $mysql_ssl_cert = '/etc/pki/tls/certs/mysql/client-cert.pem';
- $mysql_ssl_ca = '/etc/pki/tls/certs/mysql/ca-cert.pem';
- $mysql_connection_timeout = 5;
- ......
- ......
3.2 zabbix前端配置
在node2上把模版zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xm下载下来然后倒入到zabbix前端:
- cd /var/lib/zabbix/percona/templates
- sz zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
提示:这里不用下载,导入这个会报错,下面有说明
开始导入:
导入失败:
失败原因:模版不匹配,是因为percona官方上1.1.8还是zabbix2.0的版本模版,所以需要跟新上来匹配zabbix3.0的模版规范,而且这个zabbix模版还是直接copy的cacti模版,比较粗糙,用more查看就可以看到里面都是cacti的内容
参考博文:http://blog.csdn.net/mchdba/article/details/51447750
解决方法:下载zabbix3.0匹配的模版)然后导入
下载地址:链接: https://pan.baidu.com/s/1Qp-8rODY5-IKIjekeKD-wQ 密码: 8qyj
导入成功:
监控node2上面的MySQL,链接模板:
将获取键值的配置文件copy到zabbix获取键值数值的指定目录:
- cd /var/lib/zabbix/percona/templates
- cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
- #重启agent
- /etc/init.d/zabbix-agent restart
授权percona存放值的txt文件权限用户,可以看下这个这个文件的内容,里面都是userparameter_percona_mysql.conf获取到的数值,这个文件是在shell脚本get_mysql_stats_wrapper.sh中定义的。是一个缓存文件
- chown zabbix.zabbix /tmp/localhost-mysql_cacti_stats.txt
测试
在监控mysql的agent服务上查看监控mysql的键值
- [root@linux-node2 ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_percona_mysql.conf
- UserParameter=MySQL.Sort-scan,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh kt
- UserParameter=MySQL.slave-stopped,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh jh
- …………
- ………..
在zabbix-server上使用zabbix_get获取键值:
- [root@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k MySQL.Sort-scan
- 12 #获取成功
- [root@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k MySQL.slave-stopped
- 0 #获取成功
配置zabbix-agent前端主机链接模板。
获取数据成功,到这里配置完毕。