Назад | Перейти на главную страницу

Как определить, какая команда выполняется в службе Nagios?

Я пытаюсь выяснить, почему служба Nagios дает сбой; AFAIK, он начал внезапно выходить из строя, без каких-либо изменений, о которых мы знаем. Я пытаюсь найти принципиальный способ перейти от службы к «команде, которая выполняется, но не удается», чтобы отладить это.

Служба называется «NTP»; в моем /etc/nagios3/conf.d, У меня есть,

define service {
    use                         service-passive-critical
    hostgroup_name              web-internal
    service_description         NTP
}

Нет check_command. Глядя тогда на serivce-passive-critical,

define service {
    name                        service-passive-critical
    use                         service-passive
    notification_interval       1 ; always re-send alerts, PagerDuty will dedup
    contact_groups              contact-group-24x7
    freshness_threshold         900 ; treat service as stale if no updates for 15 min
    check_command               return-critical ; alert CRITICAL if service is stale
}

А check_command! Но, насколько я могу судить, это всегда должно возвращать CRITICAL, как следует из названия. Моя служба выдает ошибку UNKNOWN, и появляется сообщение «не удается создать соединение с сокетом». Журналы,

[1439835980] PASSIVE SERVICE CHECK: my-thing.example.com;NTP;3;can't create socket connection

Для полноты картины service-passive:

# passive services
define service {
    use                         foo-service
    name                        service-passive
    active_checks_enabled       0
    passive_checks_enabled      1
    parallelize_check           1
    obsess_over_service         0
    check_freshness             1
    freshness_threshold         900 ; treat service as stale if no updates for 15 min
    check_command               return-unknown ; alert UNKNOWN if service is stale
}

# for all our services we attach a graph link
define service {
    name                        foo-service
    use                         generic-service
    action_url                  /nagiosgraph/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$
    register                    0
}

Я полагаю, что в конечном итоге это работает check_ntp; этот делает выводит сообщение об ошибке "не удается создать соединение с сокетом" в зависимости от аргументов, которые я передаю (поэтому было бы так приятно узнать, что Nagios здесь делает…); Я до сих пор не понимаю, почему он внезапно начал давать сбои.

Кроме того, есть ли способ узнать, выполняется ли это локально, на самом хосте Nagios или удаленно через NRPE?

Это пассивный сервис, да? Если вы не меняли конфигурацию, значит, ваш NAGIOS никогда не выполнял никаких команд вообще для этой конкретной услуги - это была регистрация данных, поступающих извне, через (например) NSCA.

На самом деле, я подозреваю, что это все еще так: внешняя система передает имя хоста, службу, код состояния (3) и сообщение об ошибке (can't create socket connection).

Использование активной команды-заглушки, которая возвращает, например, CRITICAL является обычным для таких сервисов, потому что он работает вместе с проверкой свежести, чтобы заставить сервис CRITICAL если данные от внешнего отправителя не поступают в течение определенного периода (здесь 900 с). Это предотвращает тихий сбой ПАССИВНЫХ служб, когда отправитель молчит, что является хорошей практикой.