Я не могу понять, но по какой-то причине Nagios не отправляет мне оповещения о некоторых сервисах, которые я отслеживаю, мне было интересно, может ли кто-нибудь мне немного помочь.
это сервис
define service { hostgroup_name nrpe-disk service_description disk use alarm,check check_command check_nrpe1!check_disk register 1 }
вот моя команда
define command { command_name check_nrpe1 command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
вот шаблон услуги
define service { name alarm notification_interval 0 notification_period 247 notification_options w,u,r,c,f,s notifications_enabled 1 contact_groups staff register 0 }
define command { command_name notify-host-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$ } define command { command_name notify-host-by-pager command_line /usr/bin/printf "%b" "Notification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$" | /usr/bin/mail $CONTACTPAGER$ } define command { command_name notify-service-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$ } define command { command_name notify-service-by-pager command_line /usr/bin/printf "%b" "Notification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/mail $CONTACTPAGER$ }
define contactgroup { contactgroup_name staff alias XXXXXXXX members XXXXXXXX XXXXXXXX }
define contact { contact_name XXXXXXX XXXXXX alias XXXXXXXXX host_notifications_enabled 1 service_notifications_enabled 1 host_notification_period 247 service_notification_period 247 host_notification_options d,u,r,f,s service_notification_options w,u,c,r,f,s host_notification_commands notify-host-by-email,notify-host-by-pager service_notification_commands notify-service-by-email,notify-service-by-pager email XXXXXXXXX@XXXXXXXX.XXX pager XXXXXXXXXX@messaging.sprintpcs.com }
Журнал отладки nagios помог мне диагностировать аналогичную проблему. Это было ближе к концу моего nagios.cfg
debug_level=32
debug_file=/var/log/nagios3/nagios.debug
debug_verbosity=2
перезапустите nagios, затем следите за nagios.debug
файл; он покажет вам что-то вроде:
[1416254305.106042] [032.0] [pid=928] ** Service Notification Attempt ** Host: 'myhost', Service: 'myservice', Type: 0, Options: 0, Current State: 2, Last Notification: Wed Dec 31 19:00:00 1969
[1416254305.106106] [032.0] [pid=928] Notification viability test passed.
[1416254305.106114] [032.1] [pid=928] Current notification number: 1 (incremented)
[1416254305.106120] [032.2] [pid=928] Creating list of contacts to be notified.
[1416254305.106137] [032.1] [pid=928] Service notification will NOT be escalated.
[1416254305.106174] [032.1] [pid=928] Adding normal contacts for service to notification list.
[1416254305.106185] [032.2] [pid=928] Adding contact 'mycontact' to notification list.
[1416254305.106219] [032.2] [pid=928] ** Attempting to notifying contact 'mycontact'...
[1416254305.106449] [032.2] [pid=928] ** Checking service notification viability for contact 'mycontact'...
[1416254305.106463] [032.2] [pid=928] We shouldn't notify this contact about CRITICAL service states.
[1416254305.106474] [032.0] [pid=928] No contacts were notified. Next possible notification time: Wed Dec 31 19:00:00 1969
[1416254305.106481] [032.0] [pid=928] 0 contacts were notified.
В моем случае у меня был плохой контакт service_notification_options
, что предотвратило выход первоначального уведомления, что заблокировало все мои эскалации (если мы никогда не отправим уведомление 0, мы никогда не сможем добраться до уведомления 1)
Я не вижу, чтобы это упоминалось в вашем вопросе или любом из ответов, но вы проверили nagios.cfg
файл для включить уведомления установка? Это установлено на 0 или 1?
Кроме того, это происходит только с определенным сервисным уведомлением или влияет на все уведомления? Если это все, я подозреваю, что для параметра enable_notifications установлено значение 0 в файле nagios.cfg. В таком случае попробуйте изменить его на 1 и перезапустить Nagios.
Моим первым шагом было бы попытаться определить все параметры напрямую, а не в зависимости от наследования. По возможности избегайте групп. По крайней мере, это дает вам чистую отправную точку для отладки.
define service {
host_name XXXXXXX
service_description disk
notification_interval 0
notification_period 247
notifications_enabled 1
contacts XXXXXXX
check_command check_nrpe1!check_disk
}
Вы также можете попробовать переключить notification_interval на что-то другое, даже не указав его (по умолчанию 60). Пока вы не заставите его работать.
Есть ли у вас в конфигурационном файле команд раздел «уведомлений по электронной почте»? Вот соответствующий раздел из моего:
определить команду {имя_команды send-email строка_команды / usr / bin / printf "% b" "***** Nagios ***** \ n \ nТип уведомления: $ NOTIFICATIONTYPE $ \ n \ nСлужба: $ SERVICEDESC $ \ nХост: $ HOSTALIAS $ \ nАдрес: $ HOSTADDRESS $ \ nСостояние: $ SERVICESTATE $ \ n \ nДата / время: $ LONGDATETIME $ \ n \ nДополнительная информация: \ n \ n $ SERVICEOUTPUT $ "| / bin / mail -s "** $ NOTIFICATIONTYPE $ alert - $ HOSTALIAS $ / $ SERVICEDESC $ is $ SERVICESTATE $ **" $ CONTACTEMAIL $}
Может ли ваша система вообще отправлять почту? Можете ли вы использовать "mail -s test foo@bar.com", затем ввести текст, пустую строку и, наконец, Ctrl-D для отправки?
изменение
register 0
к
register 1
в вашем "сигнальном" сервисе может помочь.
Где сервис-шаблон для чек ? Поскольку вы используете с шаблонами сигнализацию и проверку. я думаю чек перезаписывает тревога...
define service {
hostgroup_name nrpe-disk
service_description disk
use alarm,check
check_command check_nrpe1!check_disk
register 1
}
возможно notification_failure_criteria могу помочь тебе
У тебя действительно есть уведомление_период называется 247 или скорее 24x7?
Вы получаете правильную обратную связь от своей команды (значит, должен быть сигнал тревоги?)? вы тестировали команду в командной строке (как ваш nagios-пользователь)?