我在思考和实现以下几种方法时遇到了困难:
我有一个systemd监视模板,它为任何给定的已发现服务提供了2个主触发器。“服务已重新启动”或“服务未运行”。当给定的主机重新启动时,每个服务触发器都会启动一个警告,上面写着“服务已重新启动”。这是合理的,主机重新启动,服务也是如此。
我的目标是防止在主机正常运行时间小于10分钟(“主机重新启动”触发器的默认计时器)时生成服务触发器警报。换句话说,只有在主机正常运行时间超过10分钟时才会生成“服务已重新启动”触发器。
因此,我最初的想法是使用触发器依赖关系,但这些依赖只会在另一个触发器上创建依赖关系。因此,如果“主机已重新启动”触发器也被激活(这与我想要的正好相反),我不希望我的“服务已经重新启动”触发器激活。据我所知,触发器依赖项中没有内置“否定”或“不”函数/运算符。因此,我不能这样说:“只有当另一个触发器目前处于非活动状态时,这个触发器才能激活。”
因此,我的下一个想法是编辑模板发现触发原型表达式,并将其从以下内容更改为:last(/Systemd by Zabbix agent 2/systemd.service.uptime["{#UNIT.NAME}"])<10m
,使之类似于last(system.uptime)>10m AND last(/Systemd by Zabbix agent 2/systemd.service.uptime["{#UNIT.NAME}"])<10m
。这不是精确的语法,只是我在想什么的粗略想法。
问题是,当我尝试执行表达式编辑器并从另一个模板中包含项时,会出现以下错误:
Trigger prototype "{#UNIT.NAME}: has been restarted" belongs to templates with different linkages.
我假设它不会让我将一个原型触发器链接到另一个模板项?
我使用默认的“”模板,并为systemd使用以下模板:https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/systemd?at=release/6.0
总之,我绝对不想去每一个主机,为每一个比较主机运行时间和systemd服务正常运行时间的服务创建自定义触发器。也许我可以将system.uptime模板项从“”移到Systemd模板,但这是相当残忍的。
有人想办法在这里做什么吗?有更好的方法来解决我的问题吗?
发布于 2022-08-15 06:16:11
您可以在另一个模板中的触发器中使用来自不同模板的项。但是项目模板需要链接到触发器模板。
所以在你的情况下,你应该做:
中的项。
https://stackoverflow.com/questions/72093676
复制相似问题