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

Nagios не удалось развернуть макрос $ CONTACT EMAIL $ в команде уведомления

У меня проблема, когда моя команда nofication не расширяет макрос $ CONTACTEMAIL $

(Версия 3.2.1 установлена ​​в debian squeeze с использованием пакетов debian)

me@hostname:/etc/nagiosql# dpkg -l | grep nagios
ii  nagios-images                                          0.7                                   Collection of images and icons for the nagios system
ii  nagios-nrpe-plugin                                     2.12-4                       Nagios Remote Plugin Executor Plugin
ii  nagios-plugins                                         1.4.15-3squeeze1             Plugins for the nagios network monitoring and management system
ii  nagios-plugins-basic                                   1.4.15-3squeeze1             Plugins for the nagios network monitoring and management system
ii  nagios-plugins-standard                                1.4.15-3squeeze1             Plugins for the nagios network monitoring and management system
ii  nagios3                                                3.2.1-2                      A host/service/network monitoring and management system
ii  nagios3-cgi                                            3.2.1-2                      cgi files for nagios3
ii  nagios3-common                                         3.2.1-2                      support files for nagios3
ii  nagios3-core                                           3.2.1-2                      A host/service/network monitoring and management system core files

У меня это в command.cfg

define command {
    command_name                    notify_by_email
    command_line                    /usr/bin/printf "%b" "Notification:\t$NOTIFICATIONTYPE$\n\nOccurred:\t$DATETIME$\nHostname:\t$HOSTALIAS$ ($HOSTADDRESS$)\nService:\t$SERVICEDESC$\nState:\t\t$SERVICESTATE$\nDetails:\n\ n$OUTPUT$" | /usr/bin/mail -s "$NOTIFICATIONTYPE$: $HOSTALIAS$/$SERVICEDESC$ -- $SERVICESTATE$" $CONTACTEMAIL$ 
    register                        1
}       

и в contacts.cfg

define contact {
    contact_name                    navaho
    contactgroups                   pagers
    host_notifications_enabled      1
    service_notifications_enabled   1
    host_notification_period        24x7
    service_notification_period     24x7
    host_notification_options       d,u,r,f,s
    service_notification_options    w,u,c,r,s,n
    host_notification_commands      notify_by_email
    service_notification_commands   notify_by_email
    email                           myemail@mydomain.com
    register                        1
    }       

В моем файле конфигурации службы у меня есть

define service {
    host_name                       servicehost.mydomain.com
    hostgroup_name                  null
    service_description             SE:
    display_name                    SE:
    check_command                   check_se
    max_check_attempts              5
    check_interval                  5
    retry_interval                  5
    active_checks_enabled           1
    check_period                    24x7
    event_handler                   notify_by_email
    notification_interval           5
    notification_period             24x7
    notification_options            w,u,r,c,s
    notifications_enabled           1
    contacts                        navaho
    contact_groups                  pagers
    register                        1
}       

С этими конфигурациями я ожидал, что nagios будет отправлять уведомления на адрес электронной почты myemail@mydomain.com, если я отключу службу SE: на myservicehost. Это не так.

Aug  1 13:56:12 myhostname postfix/cleanup[25382]: 2DC5F28054: message-id=<20110801205612.2DC5F28054@myhostname.mydomain.net>
Aug  1 13:56:12 myhostname postfix/qmgr[22452]: 2DC5F28054: from=<nagios@myhostname.mydomain.net>, size=470, nrcpt=1 (queue active)
Aug  1 13:56:12 myhostname postfix/local[25384]: 2DC5F28054: to=<$@myhostname.mydomain.net>, orig_to=<$>, relay=local, delay=0.07, delays=0.05/0.01/0/0.01, dsn=5.1.1, status=bounced (unknown user: "$")
Aug  1 13:56:12 myhostname postfix/cleanup[25382]: 3B96B28055: message-id=<20110801205612.3B96B28055@myhostname.mydomain.net>

Обратите внимание на $@myhostname.mydomain.net, orig_to =

Когда я изменяю команду в commands.cfg, чтобы жестко закодировать ее для моего настоящего электронного письма, она отлично отправляет

/usr/bin/printf "%b" "Notification:\t$NOTIFICATIONTYPE$\n\nOccurred:\t$DATETIME$\nHostname:\t$HOSTALIAS$ ($HOSTADDRESS$)\nService:\t$SERVICEDESC$\nState:\t\t$SERVICESTATE$\nDetails:\n\ n$OUTPUT$" | /usr/bin/mail -s "$NOTIFICATIONTYPE$: $HOSTALIAS$/$SERVICEDESC$ -- $SERVICESTATE$" myemail@mydomain.com 

Что я могу упустить из-за того, что nagios не расширяет макрос $ CONTACTEMAIL $?

РЕДАКТИРОВАТЬ: после предложения кванты размещенный ниже, я включил отладку и использовал макрос по запросу, чтобы увидеть, что делает nagios. Хотя я еще не могу объяснить, почему, похоже, nagios не расширял макрос, потому что он был пустым. Я изменил $ CONTACTEMAIL $ на «$ CONTACTEMAIL», и он начал работать.

  • Включите уровень отладки, чтобы поближе познакомиться с nagios.log
  • Попробуйте использовать макрос по запросу $CONTACTEMAIL:navaho$ чтобы увидеть, работает ли это

Проблема заключается в "n" в service_notification_options:

http://nagios.sourceforge.net/docs/3_0/objectdefinitions.html

service_notification_options: если вы укажете n (none) в качестве опции, контакт не будет получать никаких сервисных уведомлений.

Ошибка в файле contacts.cfg.
Удалить nиз списка service_notification_options в n означает none...

Как это:

define contact {
    contact_name                    navaho
    contactgroups                   pagers
    host_notifications_enabled      1
    service_notifications_enabled   1
    host_notification_period        24x7
    service_notification_period     24x7
    host_notification_options       d,u,r,f,s
    service_notification_options    w,u,c,r,s
    host_notification_commands      notify_by_email
    service_notification_commands   notify_by_email
    email                           myemail@mydomain.com
    register                        1
    } 

После предложения Quanta, опубликованного ниже, я включил отладку, а затем использовал макрос по запросу, чтобы посмотреть, что на самом деле делает nagios. Хотя я еще не могу объяснить, почему, похоже, nagios не расширял макрос, потому что он был пустым. Я изменил $ CONTACTEMAIL $ на $ CONTACTEMAIL $, и он начал работать. Как ни странно, двойные кавычки не работали.

По мере того, как я работаю с ним больше, выясняется, что $ OUTPUT $ имеет неэкранированный html, который вызывает проблемы.

Попробуйте поместить $ CONTACTEMAIL $ в кавычки в command_line в commands.cfg

Содержатся ли в строке $ CONTACTEMAIL $ какие-либо непечатаемые символы, что не приводит к совпадению с чем-либо?