有很多情况下,我想用Nagios来监视这些值,我不关心这个值本身,而是如何比较以前的值。
例如,我写了一个来检查OpenVZ中的失败计数器。 在这种情况下,我并不在意这个价值,而是我关心价值是否增加。 另一个例子可能是交换机端口,我最想知道一个端口状态的变化(虽然也许这个陷阱会更好)。
对于我的OpenVZ脚本,我使用了一个临时文件,但是我想知道是否有更好的方法? 也许Nagios有一些variables,插件(检查脚本)可以访问持久性检查吗?
我不认为你可以直接使用Nagios,但是你可以使用MRTG(或类似的)日志logging到rrdtool数据库,然后可以通过合适的Nagios插件读取。 例如我使用这种方法来监视每分钟的DNS查询。
或者,让一个插件将当前值与之前保存的值进行比较,最后一个值保存下一个呼叫。
如果你只是想警惕增加,这是Nagios已经做的,只是把你的门槛设置得比当前值高一点,然后当这个值增加的时候你会收到警报。
或者你的意思是你想监视变化的速度,所以一个小的上升趋势是可以的,但突然的移动设置了一个警报。
Nagios只允许你监视变化而不是变化率,但是你可以编写你的监视器脚本来报告变化率,对于没有变化的变化率将是0,而对于某些变化则是值。 然后,您可以通过相应地设置阈值来观察突然的移动。
这里有一个perl的例子来监视进程。 这个例子有点凌驾于我的头上,所以不知道是不是你要找的东西。
如果您不介意在受监视的计算机上有另一个守护程序,则可能需要查看Munin ,它会随着时间的推移绘制Nagios的RRD数据输出。 设置起来非常简单,并且有很多统计信息。 通过自定义插件实现更多的统计信息是很简单的。
我有几个检查,依靠计数的变化触发警告和临界条件,而不是绝对计数,我使用临时文件的持久性。