Nagios 根据服务状态检查服务频率

APZ*_*APZ 10 nagios

我正在尝试通过监视 si 来检测磁盘抖动,因此来自 vmstat 命令。我正在使用 nagios 监控其他服务,并且每 5 分钟后进行一次服务检查。对于此抖动服务,我希望 nagios 应每 20 分钟检查一次,如果返回的状态不正常(即警告或严重),则应每 3 分钟检查一次抖动服务,直到服务返回的状态变为 OK。所有其他服务的服务检查时间保持不变。

我是 Nagios 的新手,对此的任何帮助将不胜感激。

qua*_*nta 15

假设interval_length指令默认设置为 60:

$ grep interval_length /usr/local/nagios/etc/nagios.cfg 
# This value works of the interval_length you specify later.  If you leave
# actual seconds rather than a multiple of the interval_length variable.
interval_length=60
Run Code Online (Sandbox Code Playgroud)

对于特殊服务,您需要在 中为其定义不同的模板/usr/local/nagios/etc/objects/templates.cfg

define service{
        name                            special-service    
        ...
        max_check_attempts              3           
        normal_check_interval           20         
        retry_check_interval            3           
        notification_interval           60   
        ...   
        }
Run Code Online (Sandbox Code Playgroud)

注意以下几点:

  • normal_check_interval: 此服务在正常情况下每 20 分钟检查一次
  • retry_check_interval:当服务更改为非正常状态时,在安排重新检查之前等待的分钟数。请注意,如果服务已重试max_attempts一段时间而其状态没有改变,它将恢复为按check_interval速率调度。

并将此模板用于您的服务:

define service{
    use                     special-service
    host_name               xx
    service_description     yy
    check_command           zz
    contact_groups          admins
    }
Run Code Online (Sandbox Code Playgroud)

您可能还需要定义服务升级notification_interval根据服务状态更改,如下所示:

define serviceescalation{
    host_name               xx
    service_description     yy
    last_notification       0
    notification_interval   10
    escalation_options      [w,u,c]
    contact_groups          admins
    }
Run Code Online (Sandbox Code Playgroud)

这意味着当服务处于 WARNING、UNKNOWN 或 CRITICAL 状态时使用此服务升级。您现在有一个新的通知间隔:10 分钟。