由于EnableRemoteCommands在某些主机上未启用,所以我遇到了一些zabbix触发器未能触发的问题。 我试图通过在zabbix代理configuration中添加一个特别检查EnableRemoteCommands是否设置为1的触发器来解决这个问题:
{Template OS Linux:system.run["cat /etc/zabbix/zabbix_agentd.conf | grep EnableRemoteCommands=1"].str(EnableRemoteCommands=1)}=0
但是,当然,这个触发器本身依赖于远程命令,所以不能在禁用它们的主机上运行。
出于某种原因,如果zabbix无法运行远程命令,则会以“OK”状态离开触发器。 有没有办法让这个切换到“PROBLEM”状态?
使用未启用EnableRemoteCommands UserParameter :
UserParameter=<key>,<command>
在你的情况下:
UserParameter=zabbix.remotecommands, egrep 'EnableRemoteCommands.*=.*1' /etc/zabbix/zabbix_agentd.conf
然后创build一个types为Zabbix Agent的项目zabbix.remotecommands ,然后使用以下语句来检查:
{Template OS Linux:zabbix.remotecommands.strlen()}=0
如果item不会返回任何内容,它将会触发,例如EnableRemoteCommands被禁用。 当你绝对不需要时,请不要使用system.run ,默认情况下它是禁用的 – 你可以用Zabbix提供的其他方法做任何事情。
如果主代理configuration只在一个文件中完成,那么我们可以在这里使用vfs.file.regexp item (或vfs.file.regmatch)。 例如:
vfs.file.regexp[{$AGENT_CONFIG},^EnableRemoteCommands=1]
但这并不完美,因为它仅在主configuration文件中searchEnableRemoteCommands设置,但可以在包含的文件中覆盖此设置。