Nagiosの設定
Nagios3についての設定方法です。
ファイル構成
Nagios3系をソースからデフォルトインストールすると、以下のような構成になります。
/usr/local/nagios/ --- bin/ Nagiosの実行ファイル
|- etc/ 設定ファイル
|- libexec/ プラグイン
|- sbin/ WebGUIのCGI
|- share/ WebGUIの静的コンテンツ
|- var/ 一時ファイルなど
この中で設定にかかわる主な部分は /etc です。
このディレクトリを主に説明します。
/etcの構成
/etcの中をさらに掘り下げてみます。
/usr/local/nagios/etc --- nagios.cfg Nagiosのメイン設定ファイル
|- cgi.cfg CGIの設定ファイル
|- resource.cfg マクロ(変数)の設定ファイル
|- objects/ --- commands.cfg チェックコマンドの定義ファイル
|- contacts.cfg 通知関連の定義ファイル
|- timeperiods.cfg 時間の定義ファイル
|- templates.cfg テンプレートの定義ファイル
|- localhost.cfg 以下はそれぞれホストの監視定義ファイル
|- printer.cfg
|- switch.cfg
|- windows.cfg
監視する
まず、あるホストを監視したいということで、それぞれこんな感じで監視システムを考えます。

- 監視元サーバ(Nagiosをインストールするサーバ)
- OS:CentOS
ホスト名:monitor
IP:192.168.1.100 - 監視対象サーバ
- OS:Linux
ホスト名:test1
IP:192.168.1.200
では、監視対象のtest1を監視してみます。
設定ファイルの作成
/etcの構成で紹介した「ホストの監視定義ファイル」を追加します。
まず、今回追加するホストの監視定義ファイルを編集します。
# cd /usr/loca/nagios/
# vi etc/objects/test1.cfg
define host{
use linux-server
host_name test1
alias test1
address 192.168.1.200
}
define hostgroup{
hostgroup_name linux-servers
members test1
}
define service{
use local-service
host_name test1
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
上から説明します。
ホストの定義
define host{}の中身がホストを定義しているものです。
use linux-server
これは「linux-server」という名前のテンプレートを使用するという宣言文で、そのテンプレートはetc/objectの中のtemplate.cfgに記述されています。
host_name test1
ここにホスト名を記入
alias test1
ホスト名の別名を記入します。
address 192.168.1.200
IPアドレスを記入します。
これでホストの定義は完了です。
ホストグループの定義
次にそのホストが所属するホストグループの定義がdefine hostgroup{}の中身です。
ホストグループとは管理上同じにした方が良いホスト、たとえば、監視対象サーバが100台あるけども、自分が管理しているのが30台だった場合、その30台だけ別のホストグループにしておくと、通知先をまとめて変更したり、ということができるので便利です。
hostgroup_name linux-servers
members test1
ここでは、ホストグループの名前が「linux-servers」でそのメンバーとして「test1」を所属させています。
サービスの定義
最後にサービスの定義です。define service{}にサービスを定義します。
サービスとは、そのホストに対して、どういった監視を実施するかを決めるものです。
use local-service
テンプレート「local-service」を使用します。テンプレートはホストと同様、template.cfgに定義されています。
host_name test1
サービスを適用するホストを記入します。
service_description PING
サービス名を記入します。同一のホストに同一のサービス名を複数設定することはできません。
check_command check_ping!100.0,20%!500.0,60%
最後にチェックコマンドを記入します。
ここがサービスのネックになっているところですので詳しく説明します。
check_pingがどのコマンドを使うか、という定義文です。
check_pingは何をするのか?というのが、commands.cfgに書かれています。
実際にcommands.cfgの中身を見てみると、
define command{
command_name check_ping
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}
ここがcheck_pingの定義の部分です。これも分解して内容を見てみます。
command_name check_ping
コマンドの名前を定義します。これが先ほどの監視定義ファイル(test1.cfg)から参照される名前です。
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
これがコマンドの内容です。$USER1$と書いてあるのはユーザ定義のマクロ(変数)で、etc/resource.cfgに定義されています。デフォルトでは「/usr/local/nagios/libexec」となっています。
次に、$HOSTADDRESS$ですが、これは監視定義ファイルの「address」が自動的に参照されます。これはNagiosのグローバルのマクロです。
そして、$ARG1$、$ARG2$ は監視定義ファイルのcheck_commandの引数を呼び出します。「!」で挟まれているのが、引数です。
つまり、 check_ping!100.0,20%!500.0,60% の「100.0,20%」が第一引数、「500.0,60%」が第二引数になります。
ようするに、以下のコマンドが実行されるわけです。
/usr/local/nagios/libexec/check_ping -H 192.168.1.200 -w 100.0,20% -c 500.0,60% -p 5
このコマンドの返り値をNagiosは監視します。
ここまでで、監視定義ファイルの作成は完了です。
通知先の変更
ホストに異常があった場合の通知先はデフォルトではnagios@localhostになっているのでそこも変更します。
etc/objects/contacts.cfgに通知先の設定がありますので、編集します。
define contact{
contact_name nagiosadmin
use generic-contact
alias Nagios Admin
email nagios@localhost
}
これの「email」の部分を任意のemailアドレスに変更してください。
定義ファイルの読み込み設定
次に、Nagiosの設定ファイルの読み込み設定をします。
etc/nagios.cfg にどの設定ファイルを読み込むかの設定がありますので、そこを編集します。
# vi nagios.cfg cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
この行を
cfg_file=/usr/local/nagios/etc/objects/test1.cfg
に変更します。
ちなみに、printer.cfg、windows.cfg、switch.cfgが読み込まれないのも、ここでコメントアウトされているためです。
起動
いよいよ起動させますが、その前に今回の設定が正しいか、文法のチェックをします。
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
実行結果に「Things look okay」が含まれればOKです。
では、起動します。
# /etc/init.d/nagios start
動作確認
http://192.168.1.100/nagiosにアクセスし、左メニューの「Service Detail」をクリックして、動作確認ができたらメール通知の確認をします。
トラックバック(0)
トラックバックURL: http://hajimeno-ippo.sakura.ne.jp/mtos/mt-tb.cgi/60
コメントする