Nagios 中是否有允许在检查之间保留记忆的功能?

Nagios 中是否有允许在检查之间保留记忆的功能?

在很多情况下,我都想用 Nagios 监控一些值,但我并不太关心这些值本身,而是更关心它与之前的值相比如何。

例如,我编写了一个程序来检查 OpenVZ 中的故障计数器。在这种情况下,我不太关心这个值,而是关心这个值是否增加。另一个例子可能是交换机端口,我最感兴趣的是收到有关端口状态变化的警报(尽管对于这个来说,陷阱可能更好)。

对于我的 OpenVZ 脚本,我使用了一个临时文件,但我想知道是否有更好的方法?也许 Nagios 有一些插件(检查脚本)可以访问的变量,这些变量在检查过程中是持久的?

答案1

我认为您无法直接使用 Nagios 执行此操作,但您可以使用 MRTG(或类似)记录到 rrdtool 数据库,然后可以通过合适的 Nagios 插件读取该数据库。例如,我使用此方法来监控每分钟的 DNS 查询。

或者,让插件将当前值与之前保存的值进行比较,然后将最新值保存以供下次调用。

答案2

如果您只是想对增加发出警报,这就是 Nagios 已经做的事情,只需将阈值设置为比当前值略高,那么当值增加时您就会收到警报。

或者你的意思是你想监控变化率,因此小幅上升趋势是可以的,但突然的变动就会发出警报。

Nagios 只允许您监视变化,而不能监视变化率,但您可以编写监视脚本来报告变化率,变化率为 0 表示无变化,值为某个值表示有变化。然后,您可以通过相应地设置阈值来监视突然的变化。

有一个perl 中的示例这里用于监控进程。这个例子有点超出我的理解范围,所以不确定它是否是你想要的。

答案3

如果你不介意在受监控的机器上有另一个守护进程,你可能需要看看穆宁,它绘制了 Nagios 随时间输出的 RRD 数据。它设置起来非常简单,并且具有大量现成的统计数据;其他统计数据可通过自定义插件直接实现。

答案4

我有几个检查,它们依赖于触发警告和关键条件的计数变化而不是绝对计数,并且我使用临时文件来保持持久性。

相关内容