oinume journal

Scratchpad of what I learned

Nagiosのメモ

ここ最近Nagiosを設定する機会があったのですが、なかなか設定を覚えるのに時間がかかったので備忘録的な自分へのメモ。

 

そもそもNagiosって?

サーバや特定のポートの死活監視を行うソフトウェア。死んでいる場合は設定した連絡先にメールを送ったりすることができます。昔はNetSaintという名前でした。

 

インストール

ソースからインストールする場合はNagios3.0xで監視サーバを作る - 02 Nagiosインストールの前準備を参考にすると良いでしょう。

 

用語

 

 

  • host: 監視対象となるサーバ、ルータなど

 

 

  • hostgroup: Webインターフェースでhostをグループ化して表示するためのもの

 

 

  • service: hostで動いているサービス。HTTP, SMTP, FTPなどのポートでLISTENしているサービスであったり、pingの応答性やディスクの空き容量などが該当する。ようは監視する対象となるもの。

 

 

  • servicegroup: Webインターフェースでserviceをグループ化して表示するためのもの

 

 

  • contact: serviceに問題がある際の通知先の定義。

 

 

  • contactgroup: 複数のcontactをグループ化したもの。serviceに問題がある場合、このcontactgroupで定義した連絡先に通知を送る。

 

 

  • timeperiod: serviceの監視を行う時間帯や問題があった時に通知を送る時間帯の定義

 

 

  • command: サービスをチェックする時のコマンドの定義

 

 

servicedependencyとかserviceescalationは必要性が良くわかってないので使ってません。

 

定義の継承

監視対象のホストやサービスを定義するために

 

define host {

name hoge

}

 

のように定義を書きますが、このhostやserviceの定義に必要な項目がけっこう多いです。そのためか、Nagiosでは「定義の継承」という仕組みがあって、テンプレート的に不完全な定義を作っておいてそれを継承する、ということができます。

 

と書いてもわかりにくいので実際の例を書くと

 

define host {

name myserver

notifications_enabled 1

event_handler_enabled 1

flap_detection_enabled 1

process_perf_data 1

retain_status_information 1

retain_nonstatus_information 1

check_command check-host-alive

max_check_attempts 3

notification_interval 20

notification_period 24x7

notification_options d,u,r

contact_groups mycontact-group

register 0 ; これが重要

}

 

な感じで host の定義のテンプレートを作っておくと、実際の host の定義は以下のように簡潔なものになります。

 

define host {

use myserver ; use で使用するテンプレートを指定

host_name localhost

alias localhost

address 127.0.0.1

}

 

 

Nagiosの設定項目は多岐にわたるので、このような定義の継承の仕組みは、設定の記述を簡略化する目的では非常に便利です。

 

設定ファイルの構造

Nagiosが例えば /usr/local/nagios にインストールされている場合、設定ファイルはetc/nagios.cfg になります。下記のように cfg_dir=hogehoge.cfg という感じで、このファイルからさらに色々なファイルをインクルードしています。

 

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

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

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

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

 

自分はデフォルトの設定ファイルを汚したくないので

 

 

  • objects/mycommands.cfg: 独自のcommandを定義しているファイル

 

 

  • myconfig.cfg: hostやserviceの定義のテンプレート+contactgroupの定義

 

 

 

 

という風にファイルを作ってこれらを nagios.cfg からインクルードしています。

 

追加で定義しているコマンド

httpsmemcached(ポート11211)を監視するコマンドを自分用に追加しています。

 

# 'check_https' command definition

define command {

command_name check_https

command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$ -S

}

 

# 'check_memcached' command definition

define command {

command_name check_memcached

command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 11211 -t 5

}

 

 

まとめ

Nagiosは設定項目が複雑な分色々とカスタマイズできるので、あらゆる類のサービスの監視ができるでしょう。また、バージョンも3になって機能的にも非常に枯れたソフトウェアになっているので、割と安心して使えるものだなと感じました。

 

[rakuten]book:14440026[/rakuten]