免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7376 | 回复: 8
打印 上一主题 下一主题

[急急]zabbix+mysql_performance_monitor配置出现问题,求教!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-17 23:28 |只看该作者 |倒序浏览
本帖最后由 xcga_wise 于 2014-03-17 23:30 编辑

安装环境:
    os:rhel6(2.6.32)
    zabbix:2.2.1
    mysql_performance_momitor:0.9.1
    zabbix服务端ip:192.168.1.141
    zabbix agent ip:192.168.1.100
不使用mysql_performance_momitor时,监控正常.
使用此模板进行监控时,无法实现功能。
目前的报错信息为:([root@client100 ~]# tail -f /var/log/zabbix/FromDualMySQLagent.log ),其他zabbix服务端、客户端日志都正常,无报错
5279:2014-03-17 15:26:39.853 - INFO: FromDual Performance Monitor for MySQL (0.9.1) run started.
5279:2014-03-17 15:26:39.867 - WARN:       192.168.1.141, 10051, db_server
5279:2014-03-17 15:26:39.867 - WARN:       Connection to zabbix server failed (rc=1305)!
5279:2014-03-17 15:26:40.878 - WARN:       192.168.1.141, 10051, db_server
5279:2014-03-17 15:26:40.878 - WARN:       Connection to zabbix server failed (rc=1305)!
5279:2014-03-17 15:26:40.882 - WARN:       192.168.1.141, 10051, 192.168.1.100
5279:2014-03-17 15:26:40.882 - WARN:       Connection to zabbix server failed (rc=1305)!
5279:2014-03-17 15:26:41.890 - WARN:       192.168.1.141, 10051, 192.168.1.100
5279:2014-03-17 15:26:41.890 - WARN:       Connection to zabbix server failed (rc=1305)!
5279:2014-03-17 15:26:41.899 - WARN:       192.168.1.141, 10051, 192.168.1.100
5279:2014-03-17 15:26:41.899 - WARN:       Connection to zabbix server failed (rc=1305)!
5279:2014-03-17 15:26:41.938 - WARN:       192.168.1.141, 10051, 192.168.1.100
5279:2014-03-17 15:26:41.938 - WARN:       Connection to zabbix server failed (rc=1305)!
5279:2014-03-17 15:26:41.943 - WARN:       192.168.1.141, 10051, 192.168.1.100
5279:2014-03-17 15:26:41.943 - WARN:       Connection to zabbix server failed (rc=1305)!
5279:2014-03-17 15:26:41.958 - WARN:       192.168.1.141, 10051, 192.168.1.100
5279:2014-03-17 15:26:41.958 - WARN:       Connection to zabbix server failed (rc=1305)!
5279:2014-03-17 15:26:41.962 - WARN:       192.168.1.141, 10051, 192.168.1.100
5279:2014-03-17 15:26:41.962 - WARN:       Connection to zabbix server failed (rc=1305)!
5279:2014-03-17 15:26:41.983 - WARN:       192.168.1.141, 10051, 192.168.1.100
5279:2014-03-17 15:26:41.983 - WARN:       Connection to zabbix server failed (rc=1305)!
5279:2014-03-17 15:26:41.987 - WARN:       192.168.1.141, 10051, 192.168.1.100
5279:2014-03-17 15:26:41.987 - WARN:       Connection to zabbix server failed (rc=1305)!
5279:2014-03-17 15:26:41.991 - WARN:       192.168.1.141, 10051, 192.168.1.100
5279:2014-03-17 15:26:41.991 - WARN:       Connection to zabbix server failed (rc=1305)!
5279:2014-03-17 15:26:42.001 - WARN:       192.168.1.141, 10051, 192.168.1.100
5279:2014-03-17 15:26:42.001 - WARN:       Connection to zabbix server failed (rc=1305)!
5279:2014-03-17 15:26:42.004 - WARN:       192.168.1.141, 10051, 192.168.1.100
5279:2014-03-17 15:26:42.004 - WARN:       Connection to zabbix server failed (rc=1305)!
5279:2014-03-17 15:26:42.005 - INFO: FromDual Performance Monitor for MySQL run finshed (rc=0).

下面附上几个主要的配置文件:
zabbix agent端:
zabbix_agentd.conf 文件:
[root@client100 etc]# grep -v ^# /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.1.141
ServerActive=192.168.1.141
Hostname=192.168.1.100
Include=/etc/zabbix/zabbix_agentd.d/
UserParameter=FromDual.MySQL.check,/usr/local/mysql_performance_monitor_agent/FromDualMySQLagent.pl /usr/local/mysql_performance_monitor_agent/etc/FromDualMySQLagent.conf

zabbix agent端:
FromDualMySQLagent.conf 文件:
[root@client100 etc]# grep -v ^# FromDualMySQLagent.conf
[default]
Type         = mysqld
Debug         = 2
LogFile       = /var/log/zabbix/FromDualMySQLagent.log
CacheFileBase = /var/log/zabbix/FromDualAgentCache

Username     = mpm
Password     = kongzhong
MysqlHost    = 127.0.0.1
MysqlPort    = 3306

ZabbixServer = 192.168.1.141
Disabled     = false
Modules      = process mysql myisam innodb
ClusterLog   = /var/lib/mysql-cluster/ndb_1_cluster.log
PidFile      = /var/run/mysqld/mysqld.pid

[db_server]
Type         = mysqld
Modules      = mpm server

[192.168.1.100]          # This MUST match Hostname in Zabbix!
Type         = mysqld
MysqlPort    = 3306
Modules      = mpm server process mysql myisam innodb master
PidFile      = /var/run/mysqld/mysqld.pid

zabbix web 端主机配置如下图:



请各位朋友给予排错指点,或原理指点!!谢谢!
即时联系方式:qq:397580611

论坛徽章:
4
双子座
日期:2014-08-28 10:08:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯之阿联酋
日期:2015-03-13 03:25:15
2 [报告]
发表于 2014-03-18 15:43 |只看该作者
之前大致了解过zabbix的监控,  原理大致就是除了默认的参数外,你可以自定义参数,比如
UserParameter=FromDual.MySQL.check,/usr/local/mysql_performance_monitor_agent/FromDualMySQLagent.pl /usr/local/mysql_performance_monitor_agent/etc/FromDualMySQLagent.conf

这个是定义了一个FromDual.MySQL.check参数, 这个参数的值是后面的perl脚本执行出来的,  现在看的问题是这个执行出错了

你可以看看这个pl干了什么, 日志定位一下错误.

论坛徽章:
0
3 [报告]
发表于 2014-03-18 23:47 |只看该作者
回复 2# weishuo1999

根据你的提醒,查看是在这个pm文件有上述报错字样:
sub sendData
{
  my $values_ref = shift;
  my $list_ref = shift;

  my $rc = 0;

  if ( $main::gParameter{'Debug'} >= INFO ) { &FromDualMySQLagent::mylog($main::gParameter{'LogFile'}, INFO, '    ' . (caller(0))[3]); }

  &writeDataToCacheFile::writeDataToCacheFile($values_ref, $list_ref);

  # MPM can be run in 2 modes now: locally or MaaS
  # We run MPM locally
  if ( lc($main::gParameter{'MaaS'}) ne 'on' )
  {

    $rc = &FromDualMySQLagent::checkConnectionToZabbixServer($main::gParameter{'ZabbixServer'}, $main::gParameter{'ZabbixServerPort'}, $main::gParameter{'Hostname'});

    # Connection to zabbix server seems OK
    if ( $rc == 0 )
     {

      if ( $main::gParameter{'Debug'} == DBG )
         { &FromDualMySQLagent::mylog($main::gParameter{'LogFile'}, DBG, "      Connection to zabbix server seems OK."; }
           $rc = &sendCachedData::sendCachedData($main::gParameter{'ZabbixServer'}, $main::gParameter{'ZabbixServerPort'});
     }
    # No success connecting to zabbix server
    else {
      $rc = 1305;
      &FromDualMySQLagent::mylog($main::gParameter{'LogFile'}, WARN, '      ' . $main::gParameter{'ZabbixServer'}. ', ' . $main::gParameter{'ZabbixServerPort'} . ', ' . $main::gParameter{'Hostname'});
      &FromDualMySQLagent::mylog($main::gParameter{'LogFile'}, WARN, "      Connection to zabbix server failed (rc=$rc)!";
         }
     }

根据上面代码,我又查看了checkConnectionToZabbixServer 这个函数,代码如下:
sub checkConnectionToZabbixServer
{
  my $pServer = $_[0];
  my $pPort   = $_[1];
  my $pHost   = $_[2];

  my $rc = 0;

  if ( $main::gParameter{'Debug'} >= INFO ) { &FromDualMySQLagent::mylog($main::gParameter{'LogFile'}, INFO, '      ' . (caller(0))[3]); }

  # This tag does NOT exist in templates!!!
  my $lKey    = 'FromDual.server.check';
  my $lValue  = 1;

  if ( $main::gParameter{'Debug'} == DBG ) { &FromDualMySQLagent::mylog($main::gParameter{'LogFile'}, DBG, "      Check connection to zabbix server."; }

  my $prg = 'zabbix_sender';
  my $exe = which($prg);
  if ( ! defined($exe) ) {
    $rc = 1319;
    &FromDualMySQLagent::mylog($main::gParameter{'LogFile'}, ERR, "      Cannot find program $prg (rc=$rc).";
    return $rc;
  }

  my $cmd = "$exe --zabbix-server $pServer --port $pPort --host '$pHost' --key $lKey --value '$lValue'";
  if ( $main::gParameter{'Debug'} == DBG ) {
    $cmd .= ' -vv';
    &FromDualMySQLagent::mylog($main::gParameter{'LogFile'}, DBG, '      ' . $cmd);
  }

  if ( $main::gParameter{'Debug'} == DBG ) {
    system("$cmd >>" . $main::gParameter{'LogFile'} . " 2>&1";
  }
  else {
    system("$cmd >/dev/null 2>&1";
  }
  my $ret = $?;
  if ( $main::gParameter{'Debug'} == DBG ) { &FromDualMySQLagent::mylog($main::gParameter{'LogFile'}, DBG, "      (ret=$ret)."; }

  if ( ($ret >> == 0 ) {
  }
  elsif ( $ret == -1 ) {
    $rc = 1327;
    if ( $main::gParameter{'Debug'} == DBG ) { &FromDualMySQLagent::mylog($main::gParameter{'LogFile'}, ERR, "      Failed to execute (ret=$ret / rc=$rc).\n$!\n"; }
    return $rc;
  }
  elsif ( $ret & 127 ) {
    $rc = 1328;
    if ( $main::gParameter{'Debug'} == DBG ) { &FromDualMySQLagent::mylog($main::gParameter{'LogFile'}, ERR, "      " . sprintf("Child died with signal %d, %s coredump", ($ret & 127), ($ret & 12 ? 'with' : 'without') . " (ret=$ret / rc=$rc)."; }
    return $rc;
  }
  else {
    $rc = 1329;
    if ( $main::gParameter{'Debug'} == DBG ) { &FromDualMySQLagent::mylog($main::gParameter{'LogFile'}, ERR, "      " . sprintf("Child exited with value %d", $ret >> . " (ret=$ret / rc=$rc)."; }
    return $rc;
  }

  return $rc;
}

上面 这段代码,没有发现,什么可以报错的地方,除了zabbix_sender,这个路径正确,发送数据正常,发送红色部分,是失败的,请你再给以指教,谢谢!

论坛徽章:
4
双子座
日期:2014-08-28 10:08:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯之阿联酋
日期:2015-03-13 03:25:15
4 [报告]
发表于 2014-03-19 09:09 |只看该作者
看这个代码核心其实是这么一句 $exe --zabbix-server $pServer --port $pPort --host '$pHost' --key $lKey --value '$lValue

主要就是看这句有没有报错, $exe的值是zabbix_sender  $pServer, $pPort $pHost都是传入的  $lkey是FromDual.server.check  

$lvalue是1   你可以把参数手动设置一下 ,然后手动执行一下看看报什么错.

论坛徽章:
0
5 [报告]
发表于 2014-03-19 10:15 |只看该作者
回复 4# weishuo1999

昨晚试了,因为这个模板是用来监控mysql,所以会有很多参数项:

$lkey是FromDual.server.check 这个key 没发现模板有对应名字的键值对!
所以执行提示是failed;
如果我执行,与其相关的其它模板的键值名,都是成功的,而且在zabbix 的web端“最新数据”都会显示!!
有点困惑!

   

论坛徽章:
4
双子座
日期:2014-08-28 10:08:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯之阿联酋
日期:2015-03-13 03:25:15
6 [报告]
发表于 2014-03-19 11:31 |只看该作者
zabbix_sender是发数据给zabbix_server如果发送的数据不是监控的数据, 那么则认为这个数据无效, zabbix_sender的操作自然失败了.

这里报错报connect的错误,明显不对

论坛徽章:
0
7 [报告]
发表于 2014-03-20 10:29 |只看该作者
非常感谢,问题基本确定!

论坛徽章:
0
8 [报告]
发表于 2014-04-16 16:12 |只看该作者
看起来是fromdual 在检查zabbix中key : FromDual.server.check 不存在造成的。 可以在Zabbix Server的Fromdual配置里添加FromDual.server.check 这个item在试一下。

论坛徽章:
0
9 [报告]
发表于 2014-07-07 19:41 |只看该作者
问题到底是怎么解决的啊,请贴出来!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP