web-dev-qa-db-ja.com

Nagios Core 4を使用してメール通知を受信しません

buntu 12.04 LTS (Precise Pangolin)サーバーにインストールされたNagios Core 4の自動メール通知に問題があります...

私はnagiosユーザーとrootユーザーでメールを送信しようとしましたコマンド:

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

そして、私は正しくメールを受け取りました...しかし、私は自動的にメール通知を受け取りません。この問題を解決するにはどうすればよいですか?

これらは私の設定ファイルです(commands.cfgcontacts.cfgnagios.logmail.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                           [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

(問題はここにあると思いますが、解決方法がわかりません。)

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 Coreを終了したいと思います! :)

ホスト定義(このホストのディスクはほぼ満杯であり、ハード状態ですが通知はありません):

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

通知は、指定した連絡先定義に対して許可されますが、サービスレベルでも許可されますか?

申し訳ありませんが、私はこのことを理解していません! :(

2
alessio

nagios.logから、ソフト状態エラーのみが表示されます。 Nagiosは、HARD状態の場合にのみ、SOFT状態の通知を送信しません。 Nagiosのドキュメントから:

ソフトステート

ソフト状態は、次の状況でサービスとホストに発生します...

1)サービスまたはホストチェックの結果が非OK状態になり、サービスまたはホスト定義のオプションで指定された回数がまだ(再)チェックされていない場合。これをソフトエラー状態と呼びましょう...

2)サービスまたはホストがソフトエラー状態から回復したとき。これはソフトリカバリと見なされます。

ソフトステートイベント

サービスまたはホストがソフトエラー状態になった場合、またはソフトリカバリが発生した場合はどうなりますか?

1)メイン構成ファイルでlog_service_retriesまたはlog_Host_retriesオプションを有効にした場合、ソフトエラーまたは回復がログに記録されます。

2)イベントハンドラー(定義されている場合)が実行され、サービスまたはホストのソフトエラーまたは回復が処理されます。 (イベントハンドラーが実行される前に、$ STATETYPE $マクロは "SOFT"に設定されます)。 Nagiosは、サービスまたはホストに「実際の」問題がない(またはなかった)ため、連絡先に通知を送信しません。

ご覧のとおり、ソフト状態で実際に発生する唯一の重要なことは、イベントハンドラーの実行です。イベントハンドラーを使用すると、問題がハード状態になる前に積極的に問題を解決しようとする場合に特に役立ちます。

ハードステート

ハード状態は、次の状況でホストとサービスに発生します。

1)ホストまたはサービスチェックの結果が非UPまたは非OK状態になり、ホストまたはサービス定義のmax_check_attemptsオプションで指定された回数が(再)チェックされた場合。これはハードエラー状態です。

2)ホストまたはサービスが1つのハードエラー状態から別のエラー状態に移行したとき(例:警告から重大)。

3)サービスチェックの結果が非OK状態になり、対応するホストがDOWNまたはUNREACHABLEの場合。

4)ホストまたはサービスがハードエラー状態から回復したとき。これはハードリカバリと見なされます。

5)パッシブホストチェックを受信したとき。 passive_Host_checks_are_softオプションが有効になっていない限り、パッシブホストチェックはHARDとして扱われます。

ホストまたはサービスでHARD状態が変化すると、次のことが起こります。

1)HARD状態が記録されます。 2)HARD状態を処理するためにイベントハンドラーが実行されます。 3)連絡先には、ホストまたはサービスの問題または復旧が通知されます。

したがって、例で示したログにあるものから、Nagiosがメールを送信する必要はありませんでした。監視対象のサービスの1つでエラー状態を作成し、この状態がしばらく続くようにし、nagios.logで状態がHARDに変更されたときに本当にメールを受信するかどうかを確認する必要があります。

最後に気づいたのは、コマンドラインテストで[email protected]にメールを送信し、contacts.cfgで定義されているメールアドレスは[email protected]である(メールサーバーでエイリアスが定義されていない可能性がある)。

ログを質問に追加した後に追加表示するnagios.logには、SERVICE NOTIFICATION行はありません、したがって、エラーが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(nknown)、c(ritical)およびr(ecovery)。

上記の定義は、すべてのサービスでテンプレートとして使用されます。

use generic-service

すべての私のサービス定義に存在します。このように、通知オプションを変更する必要がある場合は、generic-service定義を変更するだけです。あなたの場合、あなたの設定はあなたのサービスがgeneric-serviceと呼ばれるテンプレートを使用していることを示しています。上記の例のように通知が構成されているかどうかを確認するには、その定義を確認することをお勧めします。その定義は、services-templates.cfgというファイルに配置できますが、これは異なる場合があります。

3
Benoit

あなたの答えをありがとう。しばらくいじってから、いくつかのことを追加したいと思います。

すべての構成の計算結果であるキャッシュファイルを表示すると、これらすべてのテンプレートとオーバーライドの位置を簡単に知ることができます:/usr/local/nagios/var/objects.cache

私がそこに行った後、それは私を襲った..私のサービスは勤務時間内にのみ通知を送信するように設定されていましたが、サーバーとは異なるタイムゾーンにいるため、私にとっては少し間違っていました。 24x7に変更すると、すべてが魅力のように機能します。

これが誰かの助けになることを願っています。

乾杯!

0
justabuzz