Nagios在周末设置不同的警告阈值

我正在使用Nagios通过check_load插件监视我的服务器上的CPU使用情况。

在周末我们有一些批量工作正在运行,而且几乎没有真正的用户,所以我想要有一个更高的警告阈值。

我已经看到了在这些时间内完全禁用通知的解决scheme,但是如果负载变得非常高,我仍然会收到通知。

我也看到defince 2服务的解决scheme,一个用于工作日,另一个用于周末,但是我希望整个星期都将CPU负载保持在一个图表中。

任何想法或例子,我可以有一个单一的服务有不同的门槛?

做到这一点的方法取决于你的门槛定义在哪里。 如果它们是在被检查的主机上定义的,例如在nrpe.cfg中进行硬编码,则需要保留nrpe.cfg的两个副本并按计划进行轮换。 (每次交换时重新启动NRPE。)这可以通过一个cron作业和一个简单的bash脚本来完成。

如果您有NRPE接受参数,并且从Nagios末端以ARG1,ARG2等格式传递阈值,则有几个选项。

您可以定义两个几乎完全相同的服务,将不同/不重复的检查周期和不同的阈值作为parameter passing。

或者你可以使用一个服务,并dynamic地改变阈值参数。 这很复杂,但是可以做到。 这就是所谓的自适应监测 。

基本的想法是按计划提交外部命令来更改对象设置。 在你的情况下,你会想改变check_command来通过不同的门槛。 就像…更改check_nrpe!check_load!5 10check_nrpe!check_load!15 30或类似的。

对于自适应监视,您要查找的是以命令列表中的“CHANGE”开头的外部命令,特别是CHANGE_SVC_CHECK_COMMAND 。

过去我一直在研究这个问题,似乎没有内置的解决scheme(虽然我可能是错的!)。

我最终做的是为服务创build两个不同的configuration文件,然后添加一个cron作业,每周五和周日晚上运行交换两个文件并重新加载nagios(服务nagios重新加载)。

交换可以通过重命名不应该使用的cfg文件完成,因为nagios只能读取以.cfg结尾的文件

一个更优雅的解决scheme是只使用sed更改文件的值