Я пытаюсь выяснить, почему служба 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 с). Это предотвращает тихий сбой ПАССИВНЫХ служб, когда отправитель молчит, что является хорошей практикой.