首页 » MySQL » 使用 Percona Monitoring Plugins 监控 MySQL

使用 Percona Monitoring Plugins 监控 MySQL

 
文章目录

使用 Percona Monitoring Plugins 监控 MySQL

由于zabbix自带的监控,监控内容相对较少,只有14项,但percona提供的工具有191项。

官方说明:https://www.percona.com/doc/percona-monitoring-plugins/1.1/zabbix/index.html#system-requirements

系统环境

可以安装在mysql服务器上,也可以安装在其他服务器上
需要安装zabbix-agent,php,php-mysql 安装php如下:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm 
yum install php56w  php56w-bcmath php56w-cli php56w-common php56w-fpm php56w-gd  php56w-mysql php56w-pdo php56w-mbstring php56w-mcrypt php56w-devel php56w-xml

客户端安装percona 监控插件

方法1:yum install https://www.percona.com/downloads/percona-monitoring-plugins/1.1.7/percona-zabbix-templates-1.1.7-1.noarch.rpm方法2:配置yum仓库yum install https://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-3.noarch.rpm然后直接
yum install percona-zabbix-templates

配置客户端

安装完成之后在/var/lib/zabbix/percona下面生成了几个文件,如下:

[root@7-node1 percona]# pwd
/var/lib/zabbix/percona
[root@7-node1 percona]# tree 
.
├── scripts
│   ├── get_mysql_stats_wrapper.sh
│   ├── get_mysql_stats_wrapper.sh.bak
│   ├── ss_get_mysql_stats.php
│   └── ss_get_mysql_stats.php.cnf
└── templates
    ├── userparameter_percona_mysql.conf
    └── zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml

2 directories, 6 files
[root@7-node1 percona]#
  1. cp /var/lib/zabbix/percona/templates/userparameterperconamysql.conf /etc/zabbix/zabbix_agentd.d/ #相当于自定义的命令,复制到zabbix-agent对应的目录下面去。
  2. 创建一个.cnf文件指定MYsql用户名和密码,用于php脚本用
[root@7-node1 percona]# cat /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf 
<?php
$mysql_user = 'zabbix';
$mysql_pass = 'zabbix';
[root@7-node1 percona]#
  1. 测试,如果结果有数字,就是正常的
[root@7-node1 percona]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
22
[root@7-node1 percona]#

配置完成之后重启zabbix-agent

zabbix-server端配置,只需要导入xml的模板就可以了。

下载源码,1.7上目前没有,要下载1.6的,下载地址:https://www.percona.com/downloads/percona-monitoring-plugins/1.1.6/percona-monitoring-plugins-1.1.6.tar.gz

解压之后,进入目录C:\Users\Administrator\Downloads\percona-monitoring-plugins-1.1.6\percona-monitoring-plugins-1.1.6\zabbix\templates下面有xml文件就是模板, 如果是3.0的版本,导入会报以下错:

Invalid tag “/zabbix_export/date”:“YYYY-MM-DDThh:mm:ssZ” is expected.
Invalid tag “/zabbix_export/templates/template(1)/items/item(1)”: the tag “snmp_community” is missing.

可以去别的地方下载一个3.0的,下载地址:http://jaminzhang.github.io/soft-conf/Zabbix/zbxperconamysql_template.xml
如果打开是网页,没有下载,可以另存为就可以了,不要复制,这样没有用,要另存为。

无图,或者报无法删除/tmp/localhost***文件的解决方法

由于我们是在root下测试的,所以/tmp下的文件是root权限,zabbix用户就无法删除,所以要删除/tmp下的文件就可以了。 在zabbix-server上去zabbix-get报以下错,也是上面的原因,删除就可以了。

[root@7-node2 tools]# zabbix_get -s 192.168.7.220 -k "MySQL.max-connections"
rm: cannot remove ‘/tmp/127.0.0.1-mysql_cacti_stats.txt’: Operation not permitted
151
[root@7-node2 tools]#

原理解析

监控原理是利用php脚本来获取值的,先通过shell脚本,然后shell脚本调用php文件,每次取值都是从/tmp/*.txt文件上取的,php程序执行一次,就会把所有的值生成放在/tmp/*.txt文件里,以下是shell脚本分析:

[root@7-node1 scripts]# cat get_mysql_stats_wrapper.sh
#/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="127.0.0.1" #本来是localhost,但由于我的mysql是原码编译安装的,用localhost是用socket去连接mysql,但php脚本默认去/var/lib/mysql/socket下面找,但我的没有,所以我直接改成ip,这样是能过tcp去通信,所以不需要socket,
DIR=`dirname $0`
CMD="/usr/bin/php -q $DIR/ss_get_mysql_stats.php --host $HOST --items gg" #这条命令就是调用php的,
CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt"

if [ "$ITEM" = "running-slave" ]; then
    # Check for running slave #测试slave的,下面的HOME我改成了/etc/zabbix,因为zabbix下面有一个.my.cnf文件,也是难念mysql登录信息的,等一下附在下面,用它的脚本我测试不通过,所以更改了一下。
    RES=`HOME=/etc/zabbix mysql -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`
    TIMENOW=`date +%s`
    if [ `expr $TIMENOW - $TIMEFLM` -gt 300 ]; then#这里的默认获取时间是300秒,zabbix-server上的模板默认也是5份钟,如果你要更改成更新间隔时间为更少或更长,需要修改web面板和这里的,如果这里没有修改,其实还是5分钟取一次。所以这里要注意一下。
        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
[root@7-node1 scripts]#

/etc/zabbix/.my.cnf文件内容如下,用于验证mysql登录的,不需要输入用户名和密码的:

[root@7-node1 scripts]# cat /etc/zabbix/.my.cnf 
[mysql]
host=localhost
user=zabbix
password=zabbix
socket=/application/mysql-5.7.16/tmp/mysql.sock
[mysqladmin]
host=localhost
user=zabbix
password=zabbix
socket=/application/mysql-5.7.16/tmp/mysql.sock
[root@7-node1 scripts]#

 

原文链接:使用 Percona Monitoring Plugins 监控 MySQL,转载请注明来源!

0