tools team/tools/Nagios

インストールの仕方によって nagios.cfg や objects ディレクトリの場所は違いますが、以下 nagios.cfg のあるディレクトリからの相対パスで表記します。適宜読み替えてくだせぇ。

たとえば、

  • CentOS で RPMforge を用いた場合は /etc/nagios からの
  • FreeBSD で ports からインストールした場合は /usr/local/etc/nagios からの

相対パスに、それぞれなります。

はじめに

Nagios ではテンプレートを用いて設定を簡略化させたり、監視対象の依存関係を指定することで冗長なアラートメールを省かせたり、とけっこう高機能な設定もできますが、ここでは最低限監視をするための設定のみを説明します。詳しくは本家のドキュメントを参照してください。

設定を記述する場所

設定ファイルを分離して管理するための仕組みが用意されています。ので、あとあと管理がしやすくなるように監視対象をグループ化し、グループごとに設定ファイルをわけるようにしたほうがよいでしょう。

たとえば「ルーター」と「スイッチ」と「サーバー」で設定ファイルを分離しようとおもったなら、それぞれ objects/router.cfg と objects/switch.cfg と objects/server.cfg というファイルを用意し、 nagios.cfg に以下のような記述を追加すればよいです。

cfg_file=/path/to/objects/router.cfg
cfg_file=/path/to/objects/switch.cfg
cfg_file=/path/to/objects/server.cfg

ホストとサービスの定義

サーバーやルーターなどの物理的な1台分(より正確には IP アドレス1個分?)をホストとして登録します。

# ホストの設定例)
define host {
	use			linux-server
	host_name		localhost
	alias			localhost
	address			127.0.0.1
	}

ホストの上で動くサービスやホスト上のリソースなどの監視対象をサービスとして登録します。

# サービスの設定例)
define service {
	use			local-service
	host_name		localhost
	service_description	PING
	check_command		check_ping!100.0,20%!500.0,60%
	}

このなかで補足が必要そうなのは check_command ですかね。ここには objects/commands.cfg で定義したコマンドの command_name を記述します。引数は ! で区切って指定します。上記例では 100.0,20% が第一引数に、 500.0,60% が第に引数になって check_ping というコマンドが実行されるんだけど、実際に引数がどのように check_ping に渡されるのかは objects/commands.cfg を確認しないとわかんなくて、こんな感じで定義されてます。

# 'check_ping' command definition
define command {
	command_name		check_ping
	command_line		$USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
	}

というわけで第一引数として渡された値が -w オプションの値として使われ、第に引数として渡された値が -c オプションの値として使われるわけですね。

ほかにも設定項目がありますが、詳細は 公式ドキュメント を参照してください。

上記の例では必須項目がいくつか抜けてますがそれは use でテンプレートの定義を引き継ぐように設定しているから。詳しくは次の テンプレートの定義 を読みましょう。

テンプレートの定義

上記のホストとサービスの例では両方とも use 文でテンプレートを指定しています。オブジェクト service や host には上記以外にも様々な設定項目がありますが、テンプレートを定義しておき、そのテンプレートを利用するようにすることで、同じような設定内容のホストやサービスを定義するときにわかりやすく記述できるようになります。

# ホストテンプレートの設定例)
define host {
	name			linux-server
	use			generic-host
	check_period		24x7
	check_interval		5
	retry_interval		1
	max_check_attempts	10
	check_command		check-host-alive
	notification_period	workhours
	notification_interval	120
	notification_options	d,u,r
	contact_groups		admins
	register		0
	}
# サービステンプレートの例)
define service {
	name			generic-service
	active_checks_enabled	1
	passive_checks_enabled	1
	parallelize_check	1
	obsess_over_service	1
	check_freshness		0
	notifications_enabled	1
	event_handler_enabled	1
	flap_detection_enabled	1
	failure_prediction_enabled	1
	process_perf_data	1
	retain_status_information	1
	retain_nonstatus_information	1
	is_volatile		0
	check_period		24x7
	max_check_attempts	3
	normal_check_interval	10
	retry_check_interval	2
	contact_groups		admins
	notification_options	w,u,c,r
	notification_interval	60
	notification_period	24x7
	register		0
	}

テンプレートは objects/templates.cfg にまとめておくようにしましょう。

たぶんチェックの間隔とかはみんないじりたいと思うので、適当な名前でサービステンプレートを定義して normal_check_interval と max_check_attempts あたりを適当に調整して、サービス定義のときにそのサービステンプレートを use してたくさんサービスを定義するような感じになるんじゃないかな。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-06-25 (金) 17:33:08 (2677d)