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