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

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

由于EnableRemoteCommands某些主机上未启用,因此某些 zabbix 触发器无法触发。我尝试通过添加一个触发器来解决这个问题,该触发器专门检查 zabbix 代理配置中的 EnableRemoteCommands 是否设置为 1:

{Template OS Linux:system.run["cat /etc/zabbix/zabbix_agentd.conf | grep EnableRemoteCommands=1"].str(EnableRemoteCommands=1)}=0

但是,当然,这个触发器本身依赖于远程命令,因此不会在禁用它们的主机上运行。

由于某种原因,如果 zabbix 无法运行远程命令,则触发器将保留“OK”状态。有什么方法可以将其切换为“PROBLEM”状态吗?

答案1

使用用户参数无需启用即可工作EnableRemoteCommands

UserParameter=<key>,<command>

就你的情况而言:

UserParameter=zabbix.remotecommands, egrep 'EnableRemoteCommands.*=.*1' /etc/zabbix/zabbix_agentd.conf

然后创建一个zabbix.remotecommands具有类型Zabbix Agent和以下语句的项目以进行检查:

{Template OS Linux:zabbix.remotecommands.strlen()}=0

如果 item 没有返回任何内容(例如已禁用),它将触发EnableRemoteCommands。请不要system.run在绝对不需要时使用,默认情况下它是被故意禁用的 — 您可以使用 Zabbix 为您提供的其他方式做任何事情。

答案2

如果主代理配置仅在一个文件中完成,我们可能可以使用vfs.file.regexp 项目(或 vfs.file.regmatch)。例如:

vfs.file.regexp[{$AGENT_CONFIG},^EnableRemoteCommands=1]

但这并不完美,因为它只搜索主配置文件进行EnableRemoteCommands设置,但该设置可能会在包含的文件中被覆盖。

相关内容