Zabbix使用Percona Monitoring Plugins监控MySQL

引言

Zabbix自带了监控mysql的监控模板,但是没有提供可以直接使用的Key,太过简陋,监控效果不佳。要想更加仔细的监控MySQL,我们都会选择采用percona的监控插件来监控MySQL,它有很详细的监控MySQL的模板以及脚本,提升了在高负载情况下的InnoDB的性能、为运维人员提供一些非常有用的性能诊断工具;另外它有更多的参数和命令来控制服务器行为。下面记录下使用Percona Monitoring Plugins监控MySQL的操作过程。

PMM简介

Percona Monitoring和Management简称PMM,是一个免费的开源平台,用于管理和监控MySQL,MariaDB和MongoDB的性能。

你可以在自己的环境中运行PMM,以获得最大的安全性和可靠性。它为MySQL,MariaDB和MongoDB服务器提供全面的基于时间的分析,以确保您的数据尽可能高效地工作。

PMM的好处

1
2
3
1)提供查询和度量信息,使管理员可以优化数据库性能
2)显示当前查询并突出显示潜在的查询问题,以加快问题的解决
3)根据指标对查询进行映射,以帮助对重要的数据库资源做出明智的决策:平台需求,系统增长,团队重点和最重要的数据库活动

Percona Monitoring Plugins简介

  • Percona监控插件是高品质的组件,可将企业级MySQL功能添加到您现有的内部本地监控解决方案中。这些组件旨在与广泛部署的解决方案(如Nagios,Cacti和Zabbix)无缝集成,并以模板,插件和脚本的形式提供。将MySQL监控功能添加到流行的服务器监控解决方案(Nagios,Zabbix和Cacti)

Percona官网

开始部署

(一)客户端源码编译安装Zabbix agent端for centos 6

1、创建zabbix运行用户
1
useradd -M -s /sbin/nologin zabbix
2、解包
1
2
3
cd /a01/apps/apps_src/
tar -zxvf zabbix-3.2.11.tar.gz
cd zabbix-3.2.11
3、配置
1
./configure --prefix=/a01/apps/zabbix --sysconfdir=/etc/zabbix --datadir=/a01/apps/zabbix/data --enable-agent
4、安装
1
make install
5、创建zabbix日志目录
1
2
mkdir -p /var/log/zabbix
chown -R zabbix:zabbix /var/log/zabbix/
6、配置zabbix_agentd配置文件
1
2
3
4
5
6
7
vim /etc/zabbix/zabbix_agentd.conf

LogFile=/var/log/zabbix/zabbix_agentd.log
Server=192.168.10.21
ServerActive=192.168.10.21
Hostname=192.168.10.26
UnsafeUserParameters=1
7、cp源码包自带脚本把zabbix-agentd添加到系统服务
1
2
3
4
5
6
7
8
9
cp /a01/apps/apps_src/zabbix-3.2.11/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
vim /etc/init.d/zabbix_agentd

ZABBIX_BIN="/a01/apps/zabbix/sbin/zabbix_agentd" #修改
CONF_FILE="/etc/zabbix/zabbix_agentd.conf" #添加
daemon $ZABBIX_BIN -c $CONF_FILE #添加后边的-c $CONF_FILE

chkconfig --add zabbix_agentd
chkconfig --level 35 zabbix_agentd on
8、启动zabbix_agentd
1
service zabbix_agentd start

(二)在zabbix服务器端测试是否能和客户端通信

1
/a01/apps/zabbix/bin/zabbix_get -s 192.168.10.27 -p10050 -k"net.if.in[eth1,bytes]"

P6KpmF.png

  • 服务端能得到客户端的网卡信息,说明可以正常通信

(三)安装Percona Monitoring Plugin监控MySQL

1、安装依赖(如果已经编译安装php,并安装了php-mysql扩展则省略)
1
yum -y install php php-mysql
2、安装Percona Monitoring Plugins
1
2
cd /a01/apps/apps_src/
rpm -ivh percona-zabbix-templates-1.1.7-1.noarch.rpm

P6Kik9.png

  • 如上图,安装Percona Monitoring Plugins之后会在/var/lib/zabbix/percona/生成两个目录,其中:
1
2
/var/lib/zabbix/percona/scripts是监控msyql脚本目录
/var/lib/zabbix/percona/templates是监控mysql的xml模板目录
3、将监控mysql配置文件放到zabbix的配置文件目录下
1
cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.conf.d/
4、创建zabbix监控脚本目录,并将监控msyql脚本放进来
1
2
mkdir -p /etc/zabbix/scripts
mv /var/lib/zabbix/percona/scripts/* /etc/zabbix/scripts/
5、编辑zabbix_agentd的配置文件支持自定义脚本
1
2
3
vim /etc/zabbix/zabbix_agentd.conf

UnsafeUserParameters=1
6、编辑zabbix_agentd的配置文件添加zabbix配置文件目录
1
2
3
vim /etc/zabbix/zabbix_agentd.conf

Include=/etc/zabbix/zabbix_agentd.conf.d/
7、配置userparameter_percona_mysql.conf的key文件
1
sed -i 's#/var/lib/zabbix/percona/scripts/#/etc/zabbix/scripts/#g' /etc/zabbix/zabbix_agentd.conf.d/userparameter_percona_mysql.conf
8、创建监控mysql的管理账号
1
2
3
4
mysql -u root -p123456

mysql> grant usage on *.* to zabbix@'192.168.10.27' identified by '123456';
mysql> flush privileges;
9、修改ss_get_mysql_stats.php
1
2
3
4
5
vim /etc/zabbix/scripts/ss_get_mysql_stats.php

$mysql_user = 'zabbix';
$mysql_pass = '123456';
$mysql_port = 3306;
10、修改php、mysql目录
1
2
3
4
5
6
7
8
9
10
vim /etc/zabbix/scripts/get_mysql_stats_wrapper.sh

#本机
HOST=192.168.10.27

#php命令执行路径
CMD="/usr/bin/php -q $DIR/ss_get_mysql_stats.php --host $HOST --items gg"

#mysql命令执行路径
RES=`HOME=~zabbix /a01/apps/mysql/bin/mysql -p123456 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`
11、编辑my.cnf文件
1
2
3
4
5
vim /etc/mysql/my.cnf

[client]
user = root
password = 123456
12、重启zabbix agentd
1
service zabbix_agentd restart
13、测试脚本是否可以正确返回数据
1
/usr/bin/php -q /etc/zabbix/scripts/ss_get_mysql_stats.php --host 192.168.10.27 --items gg
14、在zabbix服务端测试是否能获取到数据
1
2
/a01/apps/zabbix/bin/zabbix_get -s 192.168.10.27 -p10050 -k"MySQL.Table-locks-immediate"
/a01/apps/zabbix/bin/zabbix_get -s 192.168.10.27 -p10050 -k"MySQL.Select-scan"

P6KFYR.png

15、上图中可以看出,服务端已经可以正常获取到数据,我们去web页面查看一下数据
  • “监测中”——“最新数据”——“筛选出来”
  • 如果报错:

P6Kkf1.png

1
Received value [rm: cannot remove `/tmp/192.168.10.27-mysql_cacti_stats.txt': Operation not permitted0] is not suitable for value type [Numeric (float)]
  • 查看报错文件是否存在,如果不存在,创建,如果存在,chmod 777
  • 如果报错:

P6KVl6.png

1
Received value [ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)0] is not suitable for value type [Numeric (unsigned)] and data type [Decimal]
  • 这个报错就是没有执行11步的操作,编辑my.cnf文件
16、查看效果图

P6KnmD.png

17、下图中可以看到Percona Monitoring Plugin的模板监控了msyql的主从复制,由于我没做主从,所以下图中报警了,可以选择停用该触发器,如果需要则保留即可

P6KQkd.png

18、Percona Monitoring Plugin监控的东西还是非常多的,以下两页都是

P6KltA.png

P6K1fI.png

博主QQ:1012405802
技术交流QQ群:830339411
版权声明:网站内容有原创和转载,如有侵权,请联系删除,谢谢!!
感谢打赏,93bok因你们而精彩!!(支付宝支持花呗)
0%