我正在努力优化我的监控系统--我们正在使用Geneos ITRS。
我有一个带有两个端点的示例(让我们称它们为port100和port101),并尝试创建一个规则,如果这些端口中的任何一个失败,该规则将发送单个警报。
规则配置为在状态随成功或失败消息更改时发送电子邮件。
示例配置为每60秒运行一次。
一段时间以来,如果我停止任何一项服务,就会产生一封电子邮件。如果我停止两项服务-产生两封电子邮件。如果我手动运行示例,就会生成一封电子邮件。
但在某种程度上,我做错了一些事情,得到了一个无限循环,每分钟接收几封数千封邮件,直到我重新启动ITRS网关并禁用这个规则。
有人能解释一下为什么会发生这种事吗?我认为只有在样例执行时才应该触发规则块,而且在ITRS块语法中没有创建循环的命令,所以我不确定我是否理解“规则块”是如何与采样器连接的。
代码示例(!请不要在生产中运行IT,它可能会伤害您的网关!):
set $(myStatus) "OK"
if path "port100" value <> "OK" then
set $(myStatus) value
endif
if path "port101" value <> "OK" then
set $(myStatus) value
endif
if $(myStatus) <> "OK" and severity = ok then
severity warning
userdata "Subject" "something is wrong"
run "SendEmail"
elseif previous severity <> ok then
severity ok
userdata "Subject" "Everything is ok"
run "SendEmail"
endif我看到脚本中很少有非关键的东西可以修复(比如set $(myStatus) "NotOk“,没有必要与以前的严重性状态进行比较),但是我更喜欢显示原始的”坏脚本“,只是为了提供所有的证据。
请在以下方面帮助我:
前面谢谢你。
如果我理解正确的话,规则块应该只在示例执行时触发,它可能是ITRS中的一个错误吗?
发布于 2021-09-04 20:29:52
看来,我在正式文件(https://docs.itrsgroup.com/docs/geneos/5.9.0/Gateway_Reference_Guide/geneos_rulesactionsalerts_tr.html)中找到了问题1和问题2的答案:
注意:重要的是要理解,当规则的一部分被触发并触发、重置操作或更改某些属性时,规则将被重新评估。这在使用前一个关键字时特别重要,因为它将只访问其更改触发规则计算的属性的前一个值。对于任何其他属性,以前都将访问当前值。对于规则本身更改的规则中的属性,使用previous关键字可能会导致重复操作,因为规则将被多次重传。
因此,如果我试图检查以前的严重性状态并更改规则中的严重性,就会导致重新评估规则并得到无穷大循环。
https://stackoverflow.com/questions/69047846
复制相似问题