Zabbix:如何监控远程命令是否被启用?

由于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设置,但可以在包含的文件中覆盖此设置。