こんにちは。CTOの馬場です。
ハートビーツからお届けする技術情報の初回シリーズの、Nagiosについての第2回です。
今回は設定についてご紹介します。
マニュアルなどにもあまり書いていない、俯瞰した内容を中心に話をすすめましょう。
Nagiosの動作概要
まずはNagiosの動作概要について見てみましょう。
Nagiosは、大きく3つの要素で成り立っています。
- CGI
- Webインターフェースを提供します
- Webインターフェースからある程度の操作(External Command)を実行することにより、Nagiosデーモンの動作を制御できます
- Nagiosデーモン
- 監視を司ります。チェックのスケジューリングや、監視プラグインの呼び出しなどを行います
チェックの結果がエラーだった場合のリトライなども実施します - 監視の結果をもとに、通知したりイベントハンドラを起動したりします
- Webインターフェースからの操作(External Command)を受け付けます
- 監視結果を記録します
- 監視を司ります。チェックのスケジューリングや、監視プラグインの呼び出しなどを行います
- 監視プラグイン
- 実際に監視を実施します
Nagiosの設定
Nagiosの設定は、正直なところかなり複雑に見えます。
これは、設定ファイルがいくつもあったりして見渡しづらいのが原因だと思います。
でも、実はそんなに複雑じゃないんですよ。 まずはコアな部分を押さえましょう。
- ホスト定義(host)
- 監視対象ホストを定義します
- 名称やIPアドレスなどを設定します
- 物理的なトポロジに合わせて、親子関係を設定することができます
- ホストごとに、ホスト死活監視用のコマンド(command)を設定できます
- ホストごとに、ホストダウン時の通知先(contactgroup)を設定できます
- ホストごとに、チェックする時間帯(timeperiod)を設定できます
- ホストごとに、監視間隔の設定などもできます
- その他にも、ホストごとに細かく動作を設定できます
- サービス定義(service)
- ホストごとにサービスを定義します
- サービスごとに、利用する監視で利用するコマンド(command)を設定できます
- サービスごとに、サービス異常時の通知先(contactgroup)を設定できます
- サービスごとに、チェックする時間帯(timeperiod)を設定できます
- サービスごとに、監視間隔の設定などもできます
- その他にも、サービスごとに細かく動作を設定できます
- コマンド定義(command)
- 実際に利用するコマンドを定義します
- 定義のときに使えない文字(セミコロンなど)があるので注意してください
使えない文字を使いたいときは、マクロを使います
- コンタクト定義(contanct)
- サービス異常などを検知したときの通知先を定義します
- 通知先ごとに、通知する時間帯(timeperiod)を設定できます
- 通知先ごとに、通知するイベントの種類 - warning, critical, recoveryなど - を設定できます
- 通知先ごとに、メールアドレスを設定できます
pager(ポケベル)も指定できます
- コンタクトグループ定義(contactgroup)
- 通知先のグループを作成できます
- グループごとに、通知先(contact)を複数設定できます
- タイムピリオド定義(timeperiod)
- 時間帯を定義します
- 曜日、時間帯(分単位)、日付指定、第○水曜日、などの指定ができます
応用することで、祝日などに対応したタイムピリオドを定義できます
メインの設定ファイルはnagios.cfgなのですが、これらの定義はそのファイルには載っていません。
Nagiosの設定ファイルはIncludeを活用できる形になっていますので、うまく整理してみてください。
設定ファイルのリポジトリ管理と組み合わせるととても使いやすいですよ。