分布式监控系统Zabbix使用percona监控MySQL

系统运维工程师 李超
前面已经介绍了分布式监控系统Zabbix-自动发现-添加mysql多实例监控,但是没有提供可以直接使用的Key,太过简陋,监控效果不佳。要想更加仔细的监控Mysql,业内同学们都会选择采用Percona Monitoring Plugins监控MySQL。Percona有比较详细的监控Mysql的模版以及脚本,它提升了在高负载情况下的InnoDB的性能、为运维人员提供一些非常有用的性能诊断工具;另外它有更多的参数和命令来控制服务器行为。废话不多说,下面记录下使用Percona Monitoring Plugins监控MySQL的操作过程:
被监控主机的zabbix的部署路径是/data/zabbix。


数据库目录:

环境路径我们已经都有了接下来开始就部署我们的重头戏:

如下是在zabbix被监控机上的操作:
1)需要安装php脚本运行环境
percona监控zabbix的脚本是使用PHP写的,所以需要准备好php运行环境,这里直接选择用yum安装就可以满足要求了:
centos系统安装:
#yum install -y php php-mysql
Ubuntu系统安装:
#sudo apt-get install php-* php-mysql

确保被监控主机没有安装percona相关软件,如果有就卸载掉!
#rpm -qa|grep percona
2)下载官方percona模版 (https://www.percona.com/downloads/percona-monitoring-plugins/
直接下载:https://pan.baidu.com/s/1c1IE7zq 提取密码:trp5
(包下载不下来的留言我给你包)
#wget https://www.percona.com/downloads/percona-monitoring-plugins/1.1.6/percona-zabbix-templates-1.1.6-1.noarch.rpm
centos:
#rpm -ivh percona-zabbix-templates-1.1.6-1.noarch.rpm
ubuntu:
sudo apt-get install alien
sudo alien percona-zabbix-templates-1.1.6-1.noarch.rpm
sudo dpkg -i percona-zabbix-templates-1.1.6-2.deb
解压完成之后是这样子的:

进入两个目录分别查看里边有这些东东
$ ll
total 136
drwxr-xr-x 2 root root 4096 Jul 19 14:50 ./
drwxr-xr-x 4 root root 4096 Jul 18 16:51 ../
-rwxr-xr-x 1 keytech keytech 1385 Jul 19 14:50 get_mysql_stats_wrapper.sh
-rwxr-xr-x 1 root root 1254 Jul 18 18:29 get_mysql_stats_wrapper.sh.bak

-rwxr-xr-x 1 keytech keytech 59637 Jul 19 14:25 ss_get_mysql_stats.php
-rwxr-xr-x 1 root root 59637 Jul 18 16:58 ss_get_mysql_stats.php.bak

$ cd ../
scripts/ templates/
$ cd ../templates/
$ ll
total 272
drwxr-xr-x 2 root root 4096 Jul 19 14:31 ./
drwxr-xr-x 4 root root 4096 Jul 18 16:51 ../
-rw-r--r-- 1 root root 269258 Jan 11 2016 zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml
-rw-r--r-- 1 root root 18866 Jan 11 2016 userparameter_percona_mysql.conf

如上,安装percona后会在/var/lib/zabbix/percona生成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导入进去。
NO NO NO 这个模板是2.0版本的zabbix可直接用的,目前大部分都是3.0版本以上的我用的3.4.5版本的zabbix。这个模板在最后边我会加上也可以在这直接下载修改好的新模版文件下载地址是:https://pan.baidu.com/s/1i5j8IJ7 提取密码:ab8a)。

3)添加参数支持
在被监控机器上将userparameter_percona_mysql.conf拷贝到zabbix_agent的对应配置目录下
#rsync -avpgolr /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /data/zabbix/etc/zabbix_agentd.conf.d/
#sed -i ‘s#/var/lib/zabbix/percona/scripts/#/data/zabbix/monitor_scripts/#g‘ /data/zabbix/etc/zabbix_agentd.conf.d/userparameter_percona_mysql.conf

注意修改客户端机器的zabbix_agentd.conf文件,增加Include 把userparameter_percona_mysql.conf 所在的目录增加进去:
#cat /data/zabbix/etc/zabbix_agentd.conf|grep Include
###Option: Include
Include=/data/zabbix/etc/zabbix_agentd.conf.d/
#Include=/usr/local/etc/zabbix_agentd.userparams.conf
#Include=/usr/local/etc/zabbix_agentd.conf.d/
#Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
4)修改监控脚本
修改/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh脚本
-----------------------------------注意----------------------------------
若mysql没有使用默端口3006,比如mysql使用的是3317。则还需要修改如下脚本文件,记住不要在这里被坑了!改端口号码文件:
1-> 这里要先建好这个文件,否则会报rm权限错误

#touch /tmp/localhost-mysql_cacti_stats.txt:3307
#chown -R zabbix.zabbix /tmp/localhost-mysql_cacti_stats.txt:3307
2-> 修改端口脚本(下边脚本已经改好,可直接使用)

#!/bin/sh
#The wrapper for Cacti PHP script.
#It runs the script every 5 min. and parses the cache file on each following run.
#Version: 1.1.6
#This program is part of Percona Monitoring Plugins
#License: GPL License (see COPYING)
#Copyright: 2016 Percona
#Authors: Roman Vynar

ITEM=$1
HOST=localhost
DIR=dirname $0
CMD="/usr/bin/php -q $DIR/ss_get_mysql_stats.php --host $HOST --items gg"
CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt:3307"
USER=‘root‘
PASS=‘keytech2017‘
sock=‘/data/mysql/mysql_3307/tmp/mysql.sock‘
if [ "$ITEM" = "running-slave" ]; then

Check for running slave

RES=`/data/mysql/mysql_3307/bin/mysql -u$USER -h$HOST -p$PASS -S$sock -e ‘SHOW SLAVE STATUS\G‘ | egrep ‘(Slave_IO_Running|Slave_SQL_Running):‘ | awk -F: ‘{print $2}‘ | tr ‘\n‘ ‘,‘`
    if [ "$RES" = " Yes, Yes," ]; then
    echo 1
else
    echo 0
fi
exit

elif [ -e $CACHEFILE ]; then

Check and run the script

TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_cacti_stats.txt:3307`
TIMENOW=`date +%s`
if [ `expr $TIMENOW - $TIMEFLM` -gt 300 ]; then
    rm -f $CACHEFILE
    $CMD 2>&1 > /dev/null
fi

else
$CMD 2>&1 > /dev/null
fi

#Parse cache file
if [ -e $CACHEFILE ]; then
cat $CACHEFILE | sed ‘s/ /\n/g; s/-1/0/g‘| grep $ITEM | awk -F: ‘{print $2}‘
else
echo "ERROR: run the command manually to investigate the problem: $CMD"
fi

登陆mysql创建监控要用的账号(授予的权限,最后手动登录验证下)

mysql> GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT ON . TO ‘zabbixmysql‘@‘localhost‘ IDENTIFIED BY "[email protected]";
Query OK, 0 rows affected (0.03 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
5)测试下监控项
在客户端zabbix-agentd测试下:
#/usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg
gg:6
在服务器zabbix-server测试下(192.168.1.10是被监控主机的ip地址):
#/data/zabbix/bin/zabbix_get -s 192.168.1.10 -p 10050 -k "MySQL.Threads-connected"
1
#/data/zabbix/bin/zabbix_get -s 192.168.1.10 -p 10050 -k "MySQL.Handler-commit"
3
然后去web上查看我们的监控,如图:

然后就完啦,对了还有一个问题就是

你们这是红色的,解决办法就是点进去


到此分享完毕。
系统运维工程师 李超

原文地址:http://blog.51cto.com/13120271/2147248

时间: 2024-10-12 18:14:26

分布式监控系统Zabbix使用percona监控MySQL的相关文章

Linux 监控系统---zabbix

监控系统及zabbix基础(一) =========================================================================== 概述: =========================================================================== 监控系统  1.监控系统介绍 ★监控指标: 硬件:如:cpu使用率,内存空间等 软件:软件程序如:nginx,进程数量等 业务:并发在线数量,事物数量等

监控系统Zabbix的简单应用

一.简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题.zabbix由2部分构成,zabbix server与可选组件zabbix agent.        zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,

监控系统----zabbix

监控系统----zabbix zabbix-server 在搭建zabbix之前,首先我们需要搭建好LAMP环境(当然大神们也可以挑战自我选择用nginx,但是其配置会复杂很多) 1.关闭selinux setenforcce 0 vim /etc/selinux/config 2.安装php(这里选择最方便的方式,各位也可以尝试用高级的php) yum -y install php php-fpm 3.配置php参数 vim  /etc/php.ini date.timezone = Asia

企业级分布式监控系统Zabbix系列之01(Zabbix-Server安装)

本文以CentOS 6.7 x86_64系统为例,环境为刚做好的新系统. Zabbix-Server端环境监察 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [[email protected] ~]# uname -r 2.6.32-573.8.1.el6.x86_64 [[email protected] ~]# uname -m x86_64 [[email protected] ~]# 

CentOS7 企业级分布式监控系统Zabbix(01)

本次以CentOS 7.2 x64系统为例 系统环境 [[email protected] ~]# cat /etc/redhat-releaseCentOS Linux release 7.2.1511 (Core)[[email protected] ~]# uname -r3.10.0-327.el7.x86_64[[email protected] ~]# uname -mx86_64[[email protected] ~]# hostnamecentos72-node1.wangdo

【Zabbix】分布式监控系统Zabbix【一】

一.Zabbix功能及特性简介 Zabbix可以获取cpu,内存,网卡,磁盘,日志等信息 1.Zabbix数据收集方式: a.Agent客户端(Agent客户端支持多平台部署) b.如果是无法安装客户端的设备,例如网络设备,则可以通过SNMP(简单网络管理协议)获取监控数据 c.支持通过IPMI获取硬件的温度,风扇,硬盘,电源等 d.通过Zabbix自带的检测进行监控 2.Zabbix支持自定义监控: 可以通过shell,python,ruby等可执行的脚本收集监控数据 3.Zabbix可以通过

给zabbix添加percona监控模板

简单说明一下给zabbix添加的percona的监控模板. 在percona官方网站有说明怎么安装,这里记录下步骤.首先搭建好的zabbix环境. 监控插件连接 : 链接:https://pan.baidu.com/s/1xHbc_HhmN-XuGGiKrg7nPQ 提取码:i4ku yum安装percona的监控插件(安装在要监控的mysql服务器上) yum install -y percona-zabbix-templates-1.1.8-1.noarch.rpm 安装完成之后会生成如下四

日志监控系统中,大批量查询mysql方案

最近开发遇到一个问题:需要查询一个大时间段内的数据,分1000个小段,即为1000个点.X轴是时间,Y轴是该小时间段内统计后数据.注意:数据返回是一个list,其中每个对象返回值都是该小时间段内数据统计出来的,且需要根据入参顺序返回(这样前端展示就方便).举例,查询12点到1点的数据,查询频率是30分钟,那么就需要查询11:30-12:00,12:00-12:30,12:30-1:00这三段数据(因为监控系统都是查询过去的数据,所以12点的那个值应该是之前半个小时的).问题来了, 方案一:直接热

【Zabbix】分布式监控系统Zabbix【二】

一.Zabbix基本操作 1.主机群组.主机.模板.触发器 a.创建主机群组和主机的过程比较简单,不再介绍 b.配置模板: 创建一个模板,将其分组到Template组,添加配置应用: 给应用创建监控项:(如果没有存储时间则无法生成图表) 然后再在主机中添加相应的模板,可以查看是否成功监控 c.触发器设置:(可直接在items中修改,实际中,往往根据正常情况下的参数值设定告警值) 触发条件后告警如图: 2.用户组.用户权限.用户告警 Zabbix可以通过多种方式向用户发出告警通知,例如短信,微信,