userparameters和ZBX_NOTSUPPORTED

时间:2015-10-25 12:15:47

标签: zabbix

我想从运行zabbix agent的所有服务器ping一个外部IP。

我搜索并找到一些关于zabbix用户参数的文章。 在/etc/zabbix/zabbix_agentd.conf.d/中,我创建了一个名为userparameter_ping.conf的文件,其中包含以下内容:

UserParameter=checkip[*],ping -c4 8.8.8.8 && echo 0 || echo 1

我在zabbix服务器中创建了一个名为checkip的项目,但是没有数据。经过另一次挖掘后,我找到了zabbix_get并测试了我的用户参数,但收到了错误:ZBX_NOTSUPPORTED

# zabbix_get -s 172.20.4.43 -p 10050 -k checkip

我的zabbix版本:

Zabbix Agent (daemon) v2.4.5 (revision 53282) (21 April 2015)

有人知道我能做些什么来解决这个问题吗?

5 个答案:

答案 0 :(得分:4)

经过一些改变并与邮件列表中的人员进行了会谈后,最终确实如此:

首先我创建了一个文件:

    char letters[80];
    int i;
    scanf("%79[0-9a-zA-Z ]", letters);

    for (i = 0; i<strlen(letters); i++){
        if (letters[i] >= 97 && letters[i] <= 122){
            letters[i] = letters[i] - 32;           
        }else{
            printf("You should only input lower case characters!"); //your error message here
            return 1;
        }       
    }

   printf("%s",letters);
   return 0;

并添加以下行:

/etc/zabbix/zabbix_agentd.conf.d/

并运行此命令:

 UserParameter=checkip[*],ping -W1 -c2 $1 >/dev/null 2>&1 && echo 0 || echo 1

所以一切都完成了,但Timeout选项对我们来说非常重要:

在/etc/zabbix/zabbix_agentd.conf中添加时间

    ./sbin/zabbix_agentd -t checkip["8.8.8.8"]
checkip[8.8.8.8]                              [t|0]

超时默认值是3秒,所以如果我们运行

Timeout=30

看可能需要超过3秒才能收到错误:

time ping -W1 -c2 8.8.8.8

答案 1 :(得分:0)

它可以是任何东西。例如超时 - 默认超时为3秒,ping -c4至少需要3秒,ping权限/路径,不重启代理,...

提高调试级别,重启代理并检查zabbix日志。您也可以直接测试zabbix_agentd:

zabbix_agentd -t checkip[]

[m | ZBX_NOTSUPPORTED] [执行shell脚本时超时。] =&gt;超时问题。编辑zabbix_agentd.conf并增加 Timeout 设置。默认3秒不适合您的ping,需要3秒以上。

答案 2 :(得分:0)

如果执行时间超过30秒,则可以使用nohup (command..) &组合键来限制超时限制。

那样,如果您生成带有结果的文件,则在下一遍中,您可以读取文件并获取结果,而无需等待。

答案 3 :(得分:0)

对于那些可能因相同错误消息而遇到其他问题的人。

使用-c参数运行zabbix_agentd很重要:

 ./sbin/zabbix_agentd -c zabbix_agentd.conf --test checkip["8.8.8.8"]

否则,zabbix可能无法使用该命令,因此会产生ZBX_NOTSUPPORTED

这也有助于将命令隔离到脚本文件中,因为Zabbix将在UserParameter=中内嵌命令而不是您想要的。

答案 4 :(得分:-1)

我定义了两个这样的用户参数,用于在samba DC之间进行同步检查。

/etc/zabbix/zabbix_agentd.d/userparameter_samba.conf:

UserParameter=syncma, sudo samba-tool drs replicate smb1 smb2 cn=schema,cn=configuration,dc=domain,dc=com
UserParameter=syncam, sudo samba-tool drs replicate smb2 smb1 cn=schema,cn=configuration,dc=domain,dc=com

,还为Zabbix用户提供执行命令的sudoer访问权限。 /etc/sudoers.d/zabbix:

Defaults:zabbix !syslog
Defaults:zabbix !requiretty

zabbix ALL=(ALL) NOPASSWD: /usr/bin/samba-tool
zabbix ALL=(ALL) NOPASSWD: /usr/bin/systemctl

有时我在zabbix_aganetd.conf上启用了“ EnableRemoteCommands” zabbix_get -s CLIENT_IP -p10050 -k syncmazabbix_get -s CLIENT_IP -p10050 -k syncam 我收到错误ZBX_NOTSUPPORTED: Timeout while executing a shell script.  但是在客户端上执行/sbin/zabbix_agentd -t syncam之后,Zabbix服务器只是正常响应。

Replicate from smb2 to smb1 was successful.

遇到问题时,我的zabbix.log出现错误

failed to kill [ sudo samba-tool drs replicate smb1 smb2 cn=schema,cn=configuration,dc=domain,dc=com]: [1] Operation not permitted

似乎是权限错误!但是它只是在执行/sbin/zabbix_agentd -t syncam之后才解决,但我不确定该错误是否会永久消失或是否会在下一个Zabbix项目检查间隔内发生。