Geneos ITRS 规则 - 脚本在执行过程中无限循环挂起,我不明白为什么



我正在尝试优化我的监控系统-我们正在使用Geneos ITRS。

我有一个带有两个端点的示例(我们称它们为port100和port101),并尝试创建一个规则,如果这些端口中的任何一个失败,将发送单个警报。

配置为在状态更改时发送成功或失败消息的规则。

示例配置为每60秒运行一次。

有一段时间它是工作-如果我停止任何服务-生成电子邮件。如果我停止两项服务,就会产生两封邮件。如果我手动运行示例,将生成一封电子邮件。

但是在某个时候,我做错了什么,得到了一个无限循环,接收到很少的数千直到我重新启动ITRS网关并禁用此规则。

有谁能解释一下为什么会发生这种事吗?我认为规则块应该只在示例执行时触发,并且在ITRS块语法中没有创建循环的命令,因此我不确定我是否理解"规则块"是如何触发的。与采样器连接。

代码示例(!!!请不要在生产环境中运行它,它可能会损害你的网关!!):

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"不需要与之前的严重状态进行比较),但我更愿意显示原始的"不良脚本"。只是为了提供所有证据。

请帮我解决以下问题:

  1. 为什么我有一个循环的电子邮件提醒?

  2. 为什么是每分钟一千封电子邮件而不是每分钟一到两封(间隔60秒的两个端点的样本每分钟只产生两个样本执行)

  3. (小问题)如何监控多个端点并在其中一个或多个不可用时生成单个警报

谢谢你的转发。

注:如果我理解正确,该规则块应该仅通过示例执行触发,这可能是ITRS中的错误?

看来,我已经在官方文档中找到了问题1和2的答案(https://docs.itrsgroup.com/docs/geneos/5.9.0/Gateway_Reference_Guide/geneos_rulesactionsalerts_tr.html):

注意:重要的是要理解规则的一部分是什么时候触发并触发,重置操作或更改某些属性规则将被重新评估。这是特别重要的,当使用previous关键字,因为它将只访问前一个值其更改触发规则求值的属性的。对于任何其他属性,previous将访问当前值。使用规则中被规则更改的属性的关键字本身可能会导致重复的操作,因为规则将被重新评估很多次了。

因此,如果我试图检查以前的严重性状态并更改规则中的严重性,它会导致重新评估规则并得到无限循环。

最新更新