【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コーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。