Я не получаю уведомления по электронной почте, используя Nagios Core 4
У меня проблема с автоматическим уведомлением по почте в Nagios Core 4, установленном на сервере Ubuntu 12.04 LTS (Precise Pangolin)...
Я попытался отправить почту пользователю nagios и пользователю root с помощью команды:
echo "test" | mail -s "test mail" support@xxxx.eu
И я получил письмо правильно... Но я не получаю никакого автоматического почтового уведомления. Как я могу решить эту проблему?
Это мои файлы конфигурации (commands.cfg
, contacts.cfg
, nagios.log
, mail.log
):
commands.cfg
(Путь /usr/bin/mail - правильный путь)
# 'notify-host-by-email' command definition
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$
}
# 'notify-service-by-email' command definition
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$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
}
# 'process-host-perfdata' command definition
define command{
command_name process-host-perfdata
command_line /usr/bin/printf "%b" "$LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$\n" >> /usr/local/nagios/var/host-perfdata.out
}
# 'process-service-perfdata' command definition
define command{
command_name process-service-perfdata
command_line /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\n" >> /usr/local/nagios/var/service-perfdata.out
}
contacts.cfg:
define contact{
contact_name supporto
alias Supporto Clienti DEA
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email supporto@xxxx.eu
}
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members supporto
}
nagios.log:
[1401871412] SERVICE ALERT: fileserver;Current Users;OK;SOFT;2;USERS OK - 1 users currently logged in
[1401871953] SERVICE ALERT: backups;Nagios Status;WARNING;SOFT;1;NAGIOS WARNING: 36 processes, status log updated 541 seconds ago
[1401872133] SERVICE ALERT: backups;Nagios Status;OK;SOFT;2;NAGIOS OK: 36 processes, status log updated 180 seconds ago
[1401872321] SERVICE ALERT: posta;Swap Usage;CRITICAL;SOFT;1;CRITICAL - Plugin timed out after 10 seconds
[1401872322] SERVICE ALERT: fileserver;Current Users;CRITICAL;SOFT;1;CRITICAL - Plugin timed out after 10 seconds
[1401872420] SERVICE ALERT: archivio;Disk Space;CRITICAL;SOFT;1;CRITICAL - Plugin timed out after 10 seconds
[1401872492] SERVICE ALERT: fileserver;Current Users;OK;SOFT;2;USERS OK - 1 users currently logged in
[1401872492] SERVICE ALERT: posta;Swap Usage;OK;SOFT;2;SWAP OK: 100% free (1984 MB out of 1984 MB)
[1401872590] SERVICE ALERT: archivio;Disk Space;OK;SOFT;2;DISK OK
[1401872931] Auto-save of retention data completed successfully.
[1401873333] SERVICE ALERT: backups;Nagios Status;WARNING;SOFT;1;NAGIOS WARNING: 36 processes, status log updated 402 seconds ago
[1401873513] SERVICE ALERT: backups;Nagios Status;OK;SOFT;2;NAGIOS OK: 36 processes, status log updated 180 seconds ago
mail.log
(Я думаю, что проблема здесь, но я не знаю, как ее решить.)
Jun 4 10:00:01 backups sm-msp-queue[6109]: My unqualified host name (backups) unknown; sleeping for retry
Jun 4 10:01:01 backups sm-msp-queue[6109]: unable to qualify my own domain name (backups) -- using short name
Jun 4 10:20:01 backups sm-msp-queue[7247]: My unqualified host name (backups) unknown; sleeping for retry
Jun 4 10:21:01 backups sm-msp-queue[7247]: unable to qualify my own domain name (backups) -- using short name
Jun 4 10:40:01 backups sm-msp-queue[8327]: My unqualified host name (backups) unknown; sleeping for retry
Jun 4 10:41:01 backups sm-msp-queue[8327]: unable to qualify my own domain name (backups) -- using short name
Jun 4 11:00:01 backups sm-msp-queue[9549]: My unqualified host name (backups) unknown; sleeping for retry
Jun 4 11:01:01 backups sm-msp-queue[9549]: unable to qualify my own domain name (backups) -- using short name
Jun 4 11:20:01 backups sm-msp-queue[10678]: My unqualified host name (backups) unknown; sleeping for retry
Jun 4 11:21:01 backups sm-msp-queue[10678]: unable to qualify my own domain name (backups) -- using short name
Я на последнем шаге и хочу закончить это ядро Nagios!:)
Определение хоста (на этом хосте диск почти заполнен, и он находится в тяжелом состоянии, но без уведомления):
define host{
use generic-host ; Name of host template to use
host_name posta
alias Server Posta ESA
address 10.10.2.102
parents xen1, xen2
icon_image redhat.png
statusmap_image redhat.gd2
}
Определение сервиса:
define service{
use generic-service
host_name xen1, maestro, xen2, posta, nas002, serv2, esasrvmi02, esaubuntumi
service_description Disk Space
check_command ssh_all_disks!10%!5%
}
Уведомление разрешено для определения контакта, которое вы дали, но также разрешено ли оно на уровне обслуживания?
Извините, но я этого не понимаю!:(
3 ответа
От твоего nagios.log
Я вижу только мягкие ошибки состояния. Nagios не отправляет никаких уведомлений о состоянии SOFT, только в случае состояния HARD. Из документации Nagios:
Мягкие состояния
Мягкие состояния возникают для сервисов и хостов в следующих ситуациях...
1) Когда проверка службы или хоста приводит к состоянию, отличному от OK, и она еще не была (повторно) проверена количество раз, указанное параметром в определении службы или хоста. Давайте назовем это мягким состоянием ошибки...
2) Когда служба или хост восстанавливается из состояния мягкой ошибки. Это считается мягким восстановлением.
События Soft State
Что происходит, когда служба или хост находятся в состоянии "мягкой" ошибки или происходит "мягкое" восстановление?
1) Мягкая ошибка или восстановление регистрируется, если вы включили опции log_service_retries или log_host_retries в основном файле конфигурации.
2) Обработчики событий выполняются (если вы их определили) для обработки мягкой ошибки или восстановления для службы или хоста. (Перед выполнением любого обработчика событий макрос $STATETYPE$ устанавливается в "SOFT"). Nagios не отправляет уведомления ни одному контакту, потому что нет (или было) никаких "реальных" проблем со службой или хостом.
Как видно, единственное важное, что действительно происходит во время мягкого состояния, - это выполнение обработчиков событий. Использование обработчиков событий может быть особенно полезно, если вы хотите заранее попытаться устранить проблему, прежде чем она перейдет в сложное состояние.
Тяжелые состояния
Жесткие состояния возникают для хостов и сервисов в следующих ситуациях:
1) Когда проверка хоста или службы приводит к состоянию не UP или не OK, и было (повторно) проверено количество раз, указанное параметром max_check_attempts в определении хоста или сервиса. Это серьезная ошибка.
2) Когда хост или служба переходит из одного состояния жесткой ошибки в другое состояние ошибки (например, ПРЕДУПРЕЖДЕНИЕ к КРИТИЧЕСКОМУ).
3) Когда проверка службы приводит к состоянию, отличному от OK, и соответствующий хост имеет значение DOWN или UNREACHABLE.
4) Когда хост или сервис восстанавливается из состояния жесткой ошибки. Это считается трудным восстановлением.
5) Когда получена пассивная проверка хоста. Пассивные проверки хостов рассматриваются как HARD, если не включена опция passive_host_checks_are_soft.
Следующие вещи происходят, когда хосты или службы испытывают изменения состояния HARD:
1) Состояние HARD регистрируется. 2) Обработчики событий выполняются для обработки состояния HARD. 3) Контакты уведомляются о проблеме хоста или сервиса или восстановления.
Итак, из того, что мы видим в журнале, который вы приводите в качестве примера, Nagios не нужно было отправлять почту. Вы должны создать условие ошибки в одной из отслеживаемых служб, пусть это условие существует некоторое время и посмотреть, действительно ли вы получаете почту, когда состояние изменяется на HARD в nagios.log.
Последнее, что я заметил, в тесте командной строки вы отправляете почту support@xxxx.eu
в то время как в вашем contacts.cfg определенный адрес электронной почты supporto@xxxx.eu
(возможно, у вас есть псевдонимы, определенные на ваших почтовых серверах, а может и нет).
Добавлено после добавления логов на вопрос В nagios.log
что вы показываете, нет строки УВЕДОМЛЕНИЕ ОБСЛУЖИВАНИЯ, поэтому даже когда ошибка находится в состоянии HARD, Nagios даже не пытается сделать уведомление. Чтобы уведомления работали в Nagios, недостаточно четко определить контакты, группы контактов и команды уведомлений. Вы должны настроить для каждой службы и хоста, если вы хотите отправить уведомление в случае ошибки и, конечно, какой контакт (ы) и / или контактную группу (ы), чтобы отправить это уведомление. Например, это определение сервиса с настроенным и работающим уведомлением:
define service {
name generic-service
first_notification_delay 0
notification_interval 0
notification_options w,u,c,r
notifications_enabled 1
check_period 24x7
notification_period 24x7
contact_groups admins
}
В приведенном выше определении notification_enabled
установлен на 1 (true) и группа контактов, как было дано для отправки уведомления. Кроме того, мы определяем, какой тип уведомления отправлять - w(arning), u(неизвестно), c(ритуально) и r(обнаружение).
Приведенное выше определение используется в качестве шаблона всеми моими службами:
use generic-service
присутствует во всех моих определениях услуг. Таким образом, если мне нужно изменить параметры уведомления, мне просто нужно изменить generic-service
определение. В вашем случае ваш конфиг показывает, что ваш сервис использует шаблон под названием generic-service
, Я бы посоветовал проверить его определение, чтобы увидеть, настроены ли уведомления, как в примере, который я привел выше. Его определение может быть помещено в файл с именем services-templates.cfg
но это может варьироваться.
Спасибо Бенуа за ваш ответ. Я хотел бы добавить пару вещей, немного поиграв с ним:
Легко узнать, где вы находитесь со всеми этими шаблонами и переопределениями, если вы просматриваете файл кэша, который является вычисленным результатом всех конфигураций: /usr/local/nagios/var/objects.cache
После того, как я был там, меня поразило... мой сервис настроен на отправку уведомлений только в рабочее время, что оказалось для меня немного неправильным, потому что я нахожусь в другом часовом поясе по сравнению с сервером. Изменение на 24x7 заставило все работать как шарм.
Я надеюсь, что это поможет кому-то.. Потратил часы, чтобы выяснить все это.
Ура!
Самая полезная информация заключалась в том, чтобы перепроверить содержимое/usr/local/nagios/var/objects.cache
для проверки всех наследств всех .cfg.
Теперь это также решало мои проблемы.