Eu não recebo notificação por email usando o Nagios Core 4

2

Eu tenho um problema com a notificação automática de email no Nagios Core 4 instalado em Ubuntu 12.04 LTS (Precise Pangolin) ...

Eu tentei enviar e-mail com o usuário nagios e root com o comando:

echo "test" | mail -s "test mail" [email protected]

E recebi o e-mail corretamente ... mas não recebo nenhuma notificação de e-mail automaticamente. Como posso resolver este problema?

Estes são meus arquivos de configuração ( commands.cfg , contacts.cfg , nagios.log , mail.log ):

commands.cfg

(O caminho / usr / bin / mail é o caminho certo)

# '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                           [email protected]
        }

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

(acho que o problema está aqui, mas não sei como resolvê-lo.)

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

Estou no último passo e quero terminar este Nagios Core! :)

Definição do host (esse host tem o disco quase cheio e está no estado difícil, mas não é uma notificação):

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
        }

Definição de serviço:

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%
        }

Notification is allowed for the contact definition you gave, but is it also allowed at the the service level?

Desculpe, mas eu não entendo essa coisa! : (

    
por alessio 04.06.2014 / 11:47

2 respostas

3

Do seu nagios.log , vejo apenas erros de estado SOFT. O Nagios não envia nenhuma notificação para o estado SOFT, apenas no caso de estado HARD. Da documentação do Nagios:

Soft States

Soft states occur for services and hosts in the following situations...

1) When a service or host check results in a non-OK state and it has not yet been (re)checked the number of times specified by the option in the service or host definition. Let's call this a soft error state...

2) When a service or host recovers from a soft error state. This is considered to be a soft recovery.

Soft State Events

What happens when a service or host is in a soft error state or experiences a soft >recovery?

1) The soft error or recovery is logged if you enabled the log_service_retries or log_host_retries options in the main configuration file.

2) Event handlers are executed (if you defined any) to handle the soft error or recovery for the service or host. (Before any event handler is executed, the $STATETYPE$ macro is set to "SOFT"). Nagios does not send out notifications to any contacts because there is (or was) no "real" problem with the service or host.

As can be seen, the only important thing that really happens during a soft state is the execution of event handlers. Using event handlers can be particularly useful if you want to try and proactively fix a problem before it turns into a hard state.

Hard States

Hard states occur for hosts and services in the following situations:

1) When a host or service check results in a non-UP or non-OK state and it has been (re)checked the number of times specified by the max_check_attempts option in the host or service definition. This is a hard error state.

2) When a host or service transitions from one hard error state to another error state (e.g. WARNING to CRITICAL).

3) When a service check results in a non-OK state and its corresponding host is either DOWN or UNREACHABLE.

4) When a host or service recovers from a hard error state. This is considered to be a hard recovery.

5) When a passive host check is received. Passive host checks are treated as HARD unless the passive_host_checks_are_soft option is enabled.

The following things occur when hosts or services experience HARD state changes:

1) The HARD state is logged. 2) Event handlers are executed to handle the HARD state. 3) Contacts are notifified of the host or service problem or recovery.

Então, pelo que vemos no log que você deu no exemplo, não havia necessidade de o Nagios enviar um e-mail. Você deve criar uma condição de erro em um dos serviços monitorados, deixar essa condição existir por um tempo e ver se você realmente recebe o email quando o estado é alterado para HARD no nagios.log.

Última coisa que eu notei, em seu teste de linha de comando, você envia um email para [email protected] enquanto em seu contacts.cfg o endereço de email definido é [email protected] (talvez você tenha aliases definidos em seus servidores de email talvez não) .

Adicionado após a adição de registros à pergunta No nagios.log que você mostra, não há nenhuma linha SERVICE NOTIFICATION , então mesmo quando o erro está no estado HARD, o Nagios nem sequer tenta fazer a notificação. Para que a notificação funcione no Nagios, não é suficiente ter os contatos, grupos de contatos e comandos de notificação bem definidos. Você deve configurar por serviço e host se deseja enviar uma notificação em caso de erro e, é claro, para quais contatos e / ou grupos de contatos devem enviar esta notificação. Por exemplo, esta é uma definição de serviço com notificação configurada e funcionando:

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
}

Na definição acima, notification_enabled é definido como 1 (verdadeiro) e um grupo de contatos foi fornecido para enviar uma notificação para. Além disso, definimos que tipo de notificação enviar - w (arning), u (desconhecido), c (ritual) e r (ecovery).

A definição acima é usada como modelo por todos os meus serviços:

use generic-service

está presente em todas as definições dos meus serviços. Dessa forma, se eu precisar alterar as opções de notificação, só preciso alterar a definição generic-service . No seu caso, sua configuração mostra que seu serviço está usando um modelo chamado generic-service . Eu aconselharia verificar sua definição para ver se a notificação está configurada como o exemplo que eu dei acima. Sua definição pode ser localizada em um arquivo chamado services-templates.cfg , mas isso pode variar.

    
por Benoit 04.06.2014 / 14:31
0

Obrigado Benoit pela sua resposta. Eu gostaria de adicionar algumas coisas depois de mexer com isso por um tempo:

É fácil saber onde você está com todos esses modelos e substituições se você visualizar o arquivo de cache, que é o resultado computado de todas as configurações: /usr/local/nagios/var/objects.cache

Depois que eu estive lá, me ocorreu ... meu serviço foi configurado para enviar notificações apenas em horas de trabalho, o que acabou sendo um pouco errado para mim porque estou em um fuso horário diferente do servidor. Mudá-lo para 24x7 fez tudo funcionar como um encanto.

Espero que isso ajude alguém. Passou horas imaginando tudo isso.

Felicidades!

    
por justabuzz 12.11.2015 / 08:19