我想从运行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)
有人知道我能做些什么来解决这个问题吗?
答案 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 syncma
或
zabbix_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项目检查间隔内发生。