buntu 12.04 LTS (Precise Pangolin)サーバーにインストールされたNagios Core 4の自動メール通知に問題があります...
私はnagiosユーザーとrootユーザーでメールを送信しようとしましたコマンド:
echo "test" | mail -s "test mail" [email protected]
そして、私は正しくメールを受け取りました...しかし、私は自動的にメール通知を受け取りません。この問題を解決するにはどうすればよいですか?
これらは私の設定ファイルです(commands.cfg
、contacts.cfg
、nagios.log
、mail.log
):
(パス/ 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
}
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
}
[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
(問題はここにあると思いますが、解決方法がわかりません。)
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%
}
通知は、指定した連絡先定義に対して許可されますが、サービスレベルでも許可されますか?
申し訳ありませんが、私はこのことを理解していません! :(
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
というファイルに配置できますが、これは異なる場合があります。
あなたの答えをありがとう。しばらくいじってから、いくつかのことを追加したいと思います。
すべての構成の計算結果であるキャッシュファイルを表示すると、これらすべてのテンプレートとオーバーライドの位置を簡単に知ることができます:/usr/local/nagios/var/objects.cache
私がそこに行った後、それは私を襲った..私のサービスは勤務時間内にのみ通知を送信するように設定されていましたが、サーバーとは異なるタイムゾーンにいるため、私にとっては少し間違っていました。 24x7に変更すると、すべてが魅力のように機能します。
これが誰かの助けになることを願っています。
乾杯!