Supongamos una máquina donde durante largos intervalos la CPU está a más del 90%. Quizás nos interesa que sólo muestre alerta si ha transcurrido una hora durante la que se ha mantenido este estado.

Podemos jugar con los parámetros max_check_attempts y retry_interval:

max_check_attempts: This directive is used to define the number of times that Nagios will retry the service check command if it returns any state other than an OK state. Setting this value to 1 will cause Nagios to generate an alert without retrying the service check again.

retry_interval: This directive is used to define the number of “time units” to wait before scheduling a re-check of the service. Services are rescheduled at the retry interval when they have changed to a non-OK state. Once the service has been retried max_check_attempts times without a change in its status, it will revert to being scheduled at its “normal” rate as defined by the check_interval value. Unless you’ve changed the interval_length directive from the default value of 60, this number will mean minutes. More information on this value can be found in the check scheduling documentation.

En el template se define que el generic-service (template que usa el de CPU) pone max_check_attempts a 3 y el retry_interval a 2… con lo que te da un margen de 6 minutos para mostrar el error.

Para poner este test a 1 hora bastaría con tener por ejemplo 30 check_attempts a 2 minutos de retry_interval o bien 20 a 5 minutos… Cada uno de esos 30 (o 20) errores activará en el registro un SOFT STATE pero no llegará a mostrarse el error hasta que se hayan cumplido todos con lo que se cumple el HARD STATE.

Como interesa que sólo una máquina tenga esta configuración, podremos configurar por ejemplo el fichero con dos entradas tal que:

root@server:/opt/nagios/etc/objects# vi os-hardware-disk.cfg

define service{
use generic-service ; Name of service template to use
host_name server1,server2
service_description CPU
check_command check_nsc_cpu!80!90
action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
}

define service{
use generic-service ; Name of service template to use
host_name server
service_description CPU
check_command check_nsc_cpu!80!90
action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
check_attempts 20
retry_interval 5
}