ここ最近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 からインクルードしています。
追加で定義しているコマンド
httpsとmemcached(ポート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]