プログラマとプロマネのあいだ

プログラマもやるし、プロマネもやるし、たまに似非アーキとか営業っぽいこともやる

Amazon Linux on EC2へnagiosをインストールしたときのハマりポイント

nagiosって何

Nagios(ナギオス)は、オープンソースのコンピュータシステムおよびネットワークの監視のためのアプリケーションソフトウェアである。Nagios は指定されたノードとサービスを監視し、問題が発生したり解決したりした時にユーザーに通知する。

ってことなんですが、分かりやすい例でいうと、HTTPDが落ちたときにメールで通知してくれたりします。

なんでnagios

「ウェブオペレーション ―サイト運用管理の実践テクニック」を読んで、インフラ寄りにも興味を持たなければいけないと思ったから。
本を読むことも、nagiosをインストールしてみることも、このブログエントリを書くことも、全てYAGNI原則に反するわけですが、面白かったからヨシとする。

ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE)

ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE)

インストール手順

Fedora Quickstart
これの通りにやれば、http://example.com/nagios が表示されるまでは、スムーズにいくはず。
僕は、yum install phpやり忘れていたので、トップページがぐちゃぐちゃに表示されるというワナ?にかかりました。


続いて、僕がハマったポイントをいくつか。

ハマりポイントその1

事象

SWAP CRITICAL - 100% free (0 MB out of 0 MB)

が表示される。

原因

スワップ領域がないから


swapon -sで調べられるそうです。

[root@example.com ~]# swapon -s
Filename                                Type            Size    Used    Priority
[root@example.com ~]#
対策

監視サービスから除外しました。
(参考)【nagios構築】ローカルサーバ監視でCRITICALが表示される件 - nagios構築


■/usr/local/nagios/etc/objects/localhost.cfgの該当部分をコメントアウト

# Define a service to check the swap usage the local machine.
# Critical if less than 10% of swap is free, warning if less than 20% is free

#define service{
#        use                             local-service         ; Name of service
 template to use
#        host_name                       localhost
#        service_description             Swap Usage
#       check_command                   check_local_swap!20!10
#        }

ハマりポイントその2

事象

localhost;HTTP;WARNING;HARD;4;HTTP WARNING: HTTP/1.1 403 Forbidden - 4037 bytes in 0.001 second response time

が表示される。

原因

check_httpは、デフォルトでは/(http://example.com/index.html)をチェックしにいくが、ファイルが存在しないため。

対策

単純に/var/www/html/index.htmlを置いてもよいが、監視対象uriを変更することで対応した。
(参考)質問BBS - Fedoraで自宅サーバー構築


■(変更前)/usr/local/nagios/etc/objects/localhost.cfg

        check_command                   check_http


■(変更後)/usr/local/nagios/etc/objects/localhost.cfg

        check_command                   check_http! -u /hoge.php


ちなみに、

/usr/local/nagios/libexec/check_http -h

で、他のオプションも見ることができる。(別のポートを指定したりとか)

ハマりポイントその3

事象

メールが送られない

原因

メールを送る設定をしていなかった

対策

設定を追加。
(参考)Nagiosの最初の設定


■(変更前)/usr/local/nagios/etc/objects/contacts.cfg

define contact{
        contact_name                    nagiosadmin             ; Short name of
user
       use                             generic-contact         ; Inherit defaul
t values from generic-contact template (defined above)
        alias                           Nagios Admin            ; Full name of u
ser
       email                           root@localhost  ; <<***** CHANGE THIS TO
 YOUR EMAIL ADDRESS ******
        }


■(変更後)/usr/local/nagios/etc/objects/contacts.cfg

define contact{
        contact_name                    nagiosadmin             ; Short name of
user
       use                             generic-contact         ; Inherit defaul
t values from generic-contact template (defined above)
        alias                           Nagios Admin            ; Full name of u
ser
        service_notification_period 24x7
        host_notification_period 24x7
        service_notification_options w,u,c,r
        host_notification_options d,u,r
        service_notification_commands notify-service-by-email
        host_notification_commands notify-host-by-email
       email                           root@localhost  ; <<***** CHANGE THIS TO
 YOUR EMAIL ADDRESS ******
        }

ハマりポイントその4

事象

root@localhostにメールが送られない(nagios@localhostに送られる)

原因

use generic-contactで、標準設定を引き継ぐようになっていた。

対策

use generic-contactをコメントアウト

#       use                             generic-contact         ; Inherit defaul
t values from generic-contact template (defined above)

ようやく

ハマりポイントその1をワザと起こして、メール通知されたの図。

地味だ。。


ここまでやって、ようやく自分のGmailにアラートが配信されるようになりました。
初期設定さえ済んでしまえば、あとはカスタマイズなので、色々遊べると思います。