修改Zabbix Percona监控插件模板&自定义监控项目

Zabbix自带的MySQL监控功能有限,所以很少采用,业界一般使用Percona Monitoring Plugins 监控 MySQL

Percona 为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。
具体安装配置参见:https://blog.csdn.net/mchdba/article/details/51447750

虽然Percona监控插件功能非常强大,但实际工作中仍不免遇到一些特殊的监控需求不在Percona现有版本之列,本文就主要讲解如何修改Zabbix Percona监控插件模板,新增自定义的监控项目?

一.Percona监控插件的大概原理

Percona监控插件安装过程中有类似如下提示:

Scripts are installed to /var/lib/zabbix/percona/scripts

Templates are installed to /var/lib/zabbix/percona/templates

/var/lib/zabbix/percona/scripts/这里面的两个文件,get_mysql_stats_wrapper.sh脚本是监控获取MySQL状态的,ss_get_mysql_stats.php文件是配置连接数据库用户名密码的。用shell来调用PHP。

/var/lib/zabbix/percona/templates/这里面的两个文件,conf是要放在agent端/etc/zabbix/zabbix_agentd.d/下面的,用于定义监控的items;XML文件是模版文件,用于zabbix server导入。

大致原理如下

Zabbix client(按userparameter_percona_mysql.conf中的配置)通过get_mysql_stats_wrapper.sh运行ss_get_mysql_stats.php脚本产生位于/tmp/下的监控项目&值列表文件(item1:value1 item2:value2…),然后通过get_mysql_stats_wrapper.sh获取此文件内容中对应的监控项目&值。

二.自定义监控项目需要的技能

俗话说“工欲善其事,必先利其器”,要修改Percona监控插件模板,必须具备shell,php基本知识。PHP相关技能参见:http://www.w3school.com.cn/php/index.asp

三.自定义监控项目步骤

按照percona监控插件的原理可以知道,要自定义新的监控项目只要修改两个文件:userparameter_percona_mysql.conf,ss_get_mysql_stats.php

本文自定义四个监控项目,

ec:负责监控error.log中的错误数量。

s0:负责监控processlist中sql执行时间在30min-1hour的sql数量。

s1:负责监控processlist中sql执行时间在1hour-3hours的sql数量。

s3:负责监控processlist中sql执行时间大于3hours的sql数量。

3.1.修改php脚本,写入自定义的监控项目
[root@mysqldb02 scripts]# pwd
/var/lib/zabbix/percona/scripts
[root@mysqldb02 scripts]# ls -lt
total 140
-rwxr-xr-x 1 root root 60876 Apr 19 11:49 ss_get_mysql_stats.php

3.1.1.ss_get_mysql_stats.php脚本中新增客制化function:get_ipscst_array

# ============================================================================
#
# IPS DBA Customizing functions,Created by DBA@IPS.COM,Creation
# purpose:avoiding much change/intrusion to original codes
#
# ============================================================================
function get_ipscst_array($conn) {
   $ipscst_array  = array(
      'ec' => null,
      's0' => null,
      's1' => null,
      's3' => null
   );
   #1.added by ips dba for get [error] count in error.log;201904
   $cmd='echo -n `cat /data/mysql/error.log|grep \'\\[ERROR\\]\'|wc -l`';
   $ipscst_array['ec'] = shell_exec($cmd);
   
   #2.get records
   # get recourds count for slow query between 30min and 60min.
   $rows = run_query("select count(*) as cnt from information_schema.PROCESSLIST where time between 1800 and 3599", $conn);
   $ipscst_array['s0'] = $rows[0]['cnt'];
   #foreach ( $rows as $row ) {
   #   $ipscst_array['s0'] = $row[0];
   #}
   # get recourds count for slow query between 1hour and 3hours.
   $rows = run_query("select count(*) as cnt from information_schema.PROCESSLIST where time between 3600 and 10799", $conn);
   $ipscst_array['s1'] = $rows[0]['cnt'];
   # get recourds count for slow query more than 3hours.
   $rows = run_query("select count(*) as cnt from information_schema.PROCESSLIST where time >=10800", $conn);
   $ipscst_array['s3'] = $rows[0]['cnt'];
   
   #3.format array
   $ipsoutput = array();
   foreach ($ipscst_array as $ipskey => $ipsshort ) {
      $ipsoutput[] = "$ipskey:$ipsshort";
   }
   return $ipsoutput;
}

3.1.2.ss_get_mysql_stats.php中适当位置新增调用get_ipscst_array的代码。
在这里插入图片描述
3.2.修改配置文件userparameter_percona_mysql.conf新增用户参数
[root@mysqldb01 zabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d
[root@mysqldb01 zabbix_agentd.d]# tail -10 userparameter_percona_mysql.conf
UserParameter=MySQL.Error-log-errcount,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh ec
UserParameter=MySQL.Slow-query-30m,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh s0
UserParameter=MySQL.Slow-query-1h,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh s1
UserParameter=MySQL.Slow-query-3h,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh s3
3.3.新增Item&Trigger in Template Percona MySQL Server
在这里插入图片描述
在这里插入图片描述
3.4.重启zabbix客户端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值