Nagiosを日本語で使ってみる その2
「Nagios+日本語」で検索して来ている方がそこそこいるみたいですので、ちょっとだけ続きを。
正直、私がNagiosの構築をしてから既に10ヶ月ほど経っているので、そのとき残したメモと勘で書きます。
前回のエントリでNagios本体の日本語化はおそらくできているかと思いますが、実際に運用するとなると
いくつかの問題が出てきます。
ひとつは警告メールで文字化けが発生すること。
サービスのエイリアス等で日本語を使用していたり、携帯でメールを受信する場合には要注意です。
MTAの設定だったりで回避できるかも知れませんが、変更できなかった場合はnkfを使って文字コードを変換
すると幸せになれるかもしれません。
commands.cfgを以下のように変更します。
# '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: $SERVICEDES C$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICE OUTPUT$" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEM AIL$ }
↓
# '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: $SERVICEDES C$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICE OUTPUT$" | nkf -s | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEM AIL$ }
これでもうまくいかない場合は、もう自作のスクリプトを作成してそれ経由した方が簡単です。
#!/usr/bin/php <? $to = $argv[1]; $subject = $argv[2]; $body = $argv[3]; $headers = "FROM: nagios@xxxxxxx\n"; // 文字コード変換 $to = mb_convert_encoding($to , "ISO-2022-JP" , "UTF-8"); $subject = mb_convert_encoding($subject , "ISO-2022-JP" , "UTF-8"); $body = mb_convert_encoding($body , "ISO-2022-JP" , "UTF-8"); $body = str_replace("<br/>","\n",$body); echo "to : " . $to . "\n"; echo "subject : " . $subject . "\n"; echo "body : " . $body . "\n"; echo "headers : " . $headers . "\n"; // メール送信 $result = mb_send_mail($to, $subject,$body,$headers); // エラーの場合はログに出力 if(!$result) { echo "Mail Send Failed \n to: " . $to . "\n subject: " . $subject . "\n body: " . $body . "\n header: " . $header //>> /usr/local/nagios/share/nagiosmail.log } ?>
こんな感じの適当なスクリプトで大丈夫かと。(本当に適当なので動作保障はしません><)
commands.cfgはこんな感じです。
define command{ command_name notify-service-by-email command_line /usr/local/bin/php /usr/local/nagios/mail.php $CONTACTEMAIL$ "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" "***** Nagios *****<br/><br/>Notification Type: $NOTIFICATIONTYPE$<br/><br/>Service: $SERVICEDESC$<br/>Host: $HOSTALIAS$<br/>Address: $HOSTADDRESS$<br/>State: $SERVICESTATE$<br/><br/>Date/Time: $LONGDATETIME$<br/><br/>Additional Info:<br/><br/>$SERVICEOUTPUT$" }
おそらくこれで、メールの文字化けは解決すると思うので次回はpnp4nagiosについて。
これも日本語でやろうと思うといろいろ問題が・・・。