欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

修正Percona Monitoring Plugins for Zabbix的一处脚本Bug

程序员文章站 2022-06-24 15:33:06
今天小试了一把Percona Monitoring Plugins for Zabbix模板,自己辛辛苦苦写的那一大堆Python脚本,貌似用这个模板全都覆盖到了。 但是,我也发现最新的版本percona monitoring plugins_1.1.8也还是存在一个问题,那就是用于Mysql Re ......

今天小试了一把percona monitoring plugins for zabbix模板,自己辛辛苦苦写的那一大堆python脚本,貌似用这个模板全都覆盖到了。
但是,我也发现最新的版本percona-monitoring-plugins_1.1.8也还是存在一个问题,那就是用于mysql replication的slave running和slave stopped监控项的数据不正确(一般情况下,两项数据均维持在0)。
经检查相关模板的脚本文件ss_get_mysql_stats.php,发现用于获取slave running和slave stopped监控项的脚本逻辑有问题。
相关脚本内容为:
$status['slave_lag'] = $row['seconds_behind_master'];
......
$status['slave_running'] = ($row['slave_sql_running'] == 'yes')
? $status['slave_lag'] : 0;
$status['slave_stopped'] = ($row['slave_sql_running'] == 'yes')
? 0 : $status['slave_lag'];
可见当slave_sql_running为yes时,slave_running的取值是seconds_behind_master,slave_stopped的取值是0。
当slave_sql_running为no时,slave_running的取值是0,slave_stopped的取值是seconds_behind_master。
这里我将脚本中$status['slave_lag']更改为了1。
$status['slave_lag'] = $row['seconds_behind_master'];
......
$status['slave_running'] = ($row['slave_sql_running'] == 'yes')
? 1 : 0;
$status['slave_stopped'] = ($row['slave_sql_running'] == 'yes')
? 0 : 1;
修改后监控数据正常了。