【Nagios集中講座 第7回】その他のオブジェクトとテンプレートについて

前回は、Nagiosのオブジェクトのうち、ホスト、サービス、コマンドについて簡単に説明しました。
今回は、残るオブジェクトについて見ていくことにしましょう。

ホストグループとサービスグループ

ホストグループはホストを束ねるもの、サービスグループはサービスを束ねるものです。いずれも複数のホスト、サービスを紐付けることができますが、ホストやサービスの方も複数のホストグループ、サービスグループに所属することができます。つまり、N:Nの関係にあるということです。

define hostgroup{
        hostgroup_name  linux-servers
        alias           Linux Servers
        members         localhost
        }

ホストグループ、サービスグループで設定可能な項目は、名称と所属するホスト、サービスの指定が目立つくらいで、ほんの僅かの項目しかありません。(ホストグループやサービスグループが所属するホスト、サービスを指し示す方法のほか、ホストやサービスの方から所属するホストグループやサービスグループを指し示すこともできます。どちらで設定しても、結果は同じです。)

そんなわけでかなり影が薄いのですが、Nagios標準のWeb画面でグループ毎の表示ができたり、依存やエスカレーションの設定で、ホストやサービスの代わりにグループを指定できるというメリットがあります。

通知先と通知先グループ

通知先は、ホストやサービスで障害が発生した際等に通知を送るメールアドレス等と、通知の際に使用するコマンドを指定するものです。コマンドは、前回説明したコマンドと同じもので、つまりコマンドとして定義するプログラムは、Nagiosプラグインに限らないということなのですね。ちなみに、Nagiosのデフォルトでは、サービスでの障害発生時にメール通知するコマンドとして、下記のような設定が行われています。

define command{
        command_name    notify-service-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****nnNotification Type: $NOTIFICATIONTYPE$nnService: $SERVICEDESC$nHost: $HOSTALIAS$nAddress: $HOSTADDRESS$nState: $SERVICESTATE$nnDate/Time: $LONGDATETIME$nnAdditional Info:nn$SERVICEOUTPUT$n" | /usr/bin/nkf -j | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
        }

途中でnkfを噛ませているのは日本語の文字化けを防ぐために、私の方で追加しました。ご覧のとおり、Linuxのmailコマンドを使ってメールを送信しているだけですね。

define contact{
        contact_name                    admin
        use                             generic-contact
        alias                           Nagios Admin
        email                           [email protected]
        }

ところで、他のオブジェクト定義でもそうですが、useという設定があちこちに出てきますね。これは、テンプレート機能を使っているもので、useで指定した定義が継承されます。
ちなみに、generic-contactは下記のように定義されています。

define contact{
        name                            generic-contact
        host_notification_period        24x7
        service_notification_period     24x7
        host_notification_options       d,u,r,f,s
        service_notification_options    w,u,c,r,f,s
        host_notification_commands      notify-host-by-email
        service_notification_commands   notify-service-by-email
        register                        0
        }

registerが0になっていることで、テンプレートであることを示しています。
24×7というのが2つ並んでいるのが時間帯の指定で、それぞれホストからの通知、サービスからの通知を、いつからいつまで受け付けるかです。(時間帯については後述します。)
host_notification_optionsと、service_notification_optionsは、ホストやサービスがどういう状態になったときの通知を受け付けるかという指定です。
ホストの場合は、DOWNしたとき(d)、UNREACHABLEになったとき(u)、復帰したとき(r)、フラッピングの開始と終了(f)、あらかじめ設定したシステムダウンタイムの開始と終了(s)、通知を受けない(n)を指定できます。
サービスの場合は、WARNINGになったとき(w)、UNKNOWNになったとき(u)、CRITICALになったとき(c)、復帰したとき(r)、フラッピングの開始と終了(f)、あらかじめ設定したシステムダウンタイムの開始と終了(s)、通知を受けない(n)を指定できます。

この通知の時間帯と状態は、通知先で指定することもできますが、ホストやサービスでも指定できます。例えばサービスでw,u,c,r,f,sとすべての状態で通知を行うように設定していても、ある通知先(メールアドレス)では、u,c,r,f,sだとしたら、その通知先にはWARNINGの時には通知が行われないということになります。

通知先グループは通知先を束ねるもので、ホストやサービスから複数の通知先を1つの通知先グループとして指定できるようになります。

時間帯

define timeperiod{
        timeperiod_name 24x7
        alias           24 Hours A Day, 7 Days A Week
        sunday          00:00-24:00
        monday          00:00-24:00
        tuesday         00:00-24:00
        wednesday       00:00-24:00
        thursday        00:00-24:00
        friday          00:00-24:00
        saturday        00:00-24:00
        }

時間帯は曜日や特定の日付、第1日曜日といった日付に関する情報と、有効とする開始時間〜終了時間の組み合わせで定義します。
時間帯は、ホストやサービスの監視を行う時間帯や、通知を行う時間帯、及び通知を受ける時間帯として使用されます。

その他

Nagiosには他にもオブジェクトの種類があります。例えばある特定のサービスで障害が発生した際に、他のサービスの監視を停止する「依存」の定義や、何度通知を行なっても障害が改善しない際に別の通知先に通知を行うようにする「エスカレーション」などです。

前回、今回の2回でNagiosのオブジェクトの種類について説明しました。
次回はNagiosの監視結果をデータベースに格納する際に必須となる、NDOUtilsについて説明しようと思います。

Nagios集中講座 Index

この記事を書いた人

井上 研一

経済産業省推進資格ITコーディネータ/ITエンジニア。株式会社ビビンコ代表取締役。
北九州市出身、横浜市在住。AIやIoTに強いITコーディネータとして活動。北九州市主催のビジネスコンテスト「北九州でIoT」に応募したアイディアが入選し、メンバーと株式会社ビビンコを創業。著書に「初めてのWatson」、「ワトソンで体感する人工知能」など。日本全国でAI・IoTなどをテーマにしたセミナーや研修講師での登壇多数。