0

我正在尝试优化我的监控系统——我们正在使用 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. (小问题)如何监控多个端点并在其中一个或多个不可用时生成一个警报

谢谢转发。

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

4

1 回答 1

0

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

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

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

于 2021-09-04T20:29:52.127 回答