我正在使用 Nagios 通过插件监控我的服务器上的 CPU 使用情况check_load
。
周末我们会运行一些批处理作业,而且几乎没有真正的用户,所以我希望将警告阈值稍微高一些。
我已经看到了在这些时间完全禁用通知的解决方案,但如果负载真的很高,我仍然希望收到通知。
我也看到了保护两项服务的解决方案,一项用于工作日,一项用于周末,但我想将整个星期的 CPU 负载保持在一个图表中。
有什么想法或例子可以说明如何在单个服务中设置不同的阈值?
答案1
执行此操作的方法取决于阈值的定义位置。如果阈值是在被检查的主机上定义的,例如,硬编码在 nrpe.cfg 中,则需要保留 nrpe.cfg 的两个副本并按计划轮换它们。(每次交换时都要重新启动 NRPE。)这可以通过 cron 作业和简单的 bash 脚本来完成。
如果您有 NRPE 接受参数,并且从 Nagios 端传递阈值作为 ARG1、ARG2 等,那么您有几个选择。
您可以定义两个几乎相同的服务,具有不同的/不重叠的检查周期和作为参数传递的不同阈值。
或者你可以使用一个服务,并动态更改阈值参数。这很复杂,但可以做到。它被称为自适应监控。
基本思想是按计划提交外部命令来更改对象设置。就您而言,您需要更改 check_command 以传入不同的阈值。类似于...更改check_nrpe!check_load!5 10
为check_nrpe!check_load!15 30
或类似。
对于自适应监控,您要查找的是命令列表, 具体来说更改 SVC 检查命令在这种情况下。
答案2
我以前一直在研究这个问题,但似乎没有内置的解决方案(但我可能错了!)。
我最终为该服务创建了两个不同的配置文件,然后添加了一个 cron 作业,该作业将在每个星期五和星期日晚上运行,以交换两个文件并重新加载 nagios(服务 nagios reload)。
例如,可以通过重命名来完成交换配置文件不应使用的文件,因为 nagios 只会读取以配置文件
一个更优雅的解决方案是使用以下命令更改文件的值sed