このエントリーをはてなブックマークに追加

Nagiosの設定

Nagios3についての設定方法です。

ファイル構成

Nagios3系をソースからデフォルトインストールすると、以下のような構成になります。

/usr/local/nagios/ --- bin/        Nagiosの実行ファイル
                    |- etc/        設定ファイル
                    |- libexec/    プラグイン
                    |- sbin/       WebGUIのCGI
                    |- share/      WebGUIの静的コンテンツ
                    |- var/        一時ファイルなど

この中で設定にかかわる主な部分は /etc です。
このディレクトリを主に説明します。

/etcの構成

/etcの中をさらに掘り下げてみます。

/usr/local/nagios/etc --- nagios.cfg     Nagiosのメイン設定ファイル
                       |- cgi.cfg        CGIの設定ファイル
                       |- resource.cfg   マクロ(変数)の設定ファイル
                       |- objects/      --- commands.cfg    チェックコマンドの定義ファイル
                                         |- contacts.cfg    通知関連の定義ファイル
                                         |- timeperiods.cfg 時間の定義ファイル
                                         |- templates.cfg   テンプレートの定義ファイル
                                         |- localhost.cfg   以下はそれぞれホストの監視定義ファイル
                                         |- printer.cfg
                                         |- switch.cfg
                                         |- windows.cfg

監視する

まず、あるホストを監視したいということで、それぞれこんな感じで監視システムを考えます。

nagios1.gif

監視元サーバ(Nagiosをインストールするサーバ)
OS:CentOS
ホスト名:monitor
IP:192.168.1.100
監視対象サーバ
OS:Linux
ホスト名:test1
IP:192.168.1.200

では、監視対象のtest1を監視してみます。

設定ファイルの作成

/etcの構成で紹介した「ホストの監視定義ファイル」を追加します。

まず、今回追加するホストの監視定義ファイルを編集します。

# cd /usr/loca/nagios/
# vi etc/objects/test1.cfg
define host{
        use               linux-server
        host_name         test1
        alias             test1
        address           192.168.1.200
        }
define hostgroup{
        hostgroup_name    linux-servers
        members           test1
        }
define service{
       use                   local-service
       host_name             test1
       service_description   PING
       check_command         check_ping!100.0,20%!500.0,60%
       }

上から説明します。

ホストの定義

define host{}の中身がホストを定義しているものです。

        use                     linux-server

これは「linux-server」という名前のテンプレートを使用するという宣言文で、そのテンプレートはetc/objectの中のtemplate.cfgに記述されています。

        host_name               test1

ここにホスト名を記入

        alias                   test1

ホスト名の別名を記入します。

        address                 192.168.1.200

IPアドレスを記入します。
これでホストの定義は完了です。

ホストグループの定義

次にそのホストが所属するホストグループの定義がdefine hostgroup{}の中身です。
ホストグループとは管理上同じにした方が良いホスト、たとえば、監視対象サーバが100台あるけども、自分が管理しているのが30台だった場合、その30台だけ別のホストグループにしておくと、通知先をまとめて変更したり、ということができるので便利です。

        hostgroup_name          linux-servers
        members                      test1

ここでは、ホストグループの名前が「linux-servers」でそのメンバーとして「test1」を所属させています。

サービスの定義

最後にサービスの定義です。define service{}にサービスを定義します。
サービスとは、そのホストに対して、どういった監視を実施するかを決めるものです。

       use                      local-service

テンプレート「local-service」を使用します。テンプレートはホストと同様、template.cfgに定義されています。

       host_name                test1

サービスを適用するホストを記入します。

       service_description      PING

サービス名を記入します。同一のホストに同一のサービス名を複数設定することはできません。

       check_command            check_ping!100.0,20%!500.0,60%

最後にチェックコマンドを記入します。
ここがサービスのネックになっているところですので詳しく説明します。

check_pingがどのコマンドを使うか、という定義文です。
check_pingは何をするのか?というのが、commands.cfgに書かれています。
実際にcommands.cfgの中身を見てみると、

define command{
        command_name    check_ping
        command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
        }

ここがcheck_pingの定義の部分です。これも分解して内容を見てみます。

        command_name    check_ping

コマンドの名前を定義します。これが先ほどの監視定義ファイル(test1.cfg)から参照される名前です。

        command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5

これがコマンドの内容です。$USER1$と書いてあるのはユーザ定義のマクロ(変数)で、etc/resource.cfgに定義されています。デフォルトでは「/usr/local/nagios/libexec」となっています。
次に、$HOSTADDRESS$ですが、これは監視定義ファイルの「address」が自動的に参照されます。これはNagiosのグローバルのマクロです。
そして、$ARG1$、$ARG2$ は監視定義ファイルのcheck_commandの引数を呼び出します。「!」で挟まれているのが、引数です。
つまり、 check_ping!100.0,20%!500.0,60% の「100.0,20%」が第一引数、「500.0,60%」が第二引数になります。
ようするに、以下のコマンドが実行されるわけです。

/usr/local/nagios/libexec/check_ping -H 192.168.1.200 -w 100.0,20% -c 500.0,60% -p 5

このコマンドの返り値をNagiosは監視します。

ここまでで、監視定義ファイルの作成は完了です。

通知先の変更

ホストに異常があった場合の通知先はデフォルトではnagios@localhostになっているのでそこも変更します。
etc/objects/contacts.cfgに通知先の設定がありますので、編集します。

define contact{
       contact_name             nagiosadmin 
       use                             generic-contact   
       alias                            Nagios Admin
       email                           nagios@localhost
       }

これの「email」の部分を任意のemailアドレスに変更してください。

定義ファイルの読み込み設定

次に、Nagiosの設定ファイルの読み込み設定をします。
etc/nagios.cfg にどの設定ファイルを読み込むかの設定がありますので、そこを編集します。

# vi nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg

この行を

cfg_file=/usr/local/nagios/etc/objects/test1.cfg

に変更します。
ちなみに、printer.cfg、windows.cfg、switch.cfgが読み込まれないのも、ここでコメントアウトされているためです。

起動

いよいよ起動させますが、その前に今回の設定が正しいか、文法のチェックをします。

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

実行結果に「Things look okay」が含まれればOKです。
では、起動します。

# /etc/init.d/nagios start

動作確認

http://192.168.1.100/nagiosにアクセスし、左メニューの「Service Detail」をクリックして、動作確認ができたらメール通知の確認をします。

トラックバック(0)

トラックバックURL: http://hajimeno-ippo.sakura.ne.jp/mtos/mt-tb.cgi/60

コメントする


にほんブログ村 IT技術ブログへ
    

ブログ

nagiosブログ
運用blog