公開日: 2012年8月29日 00:46:13
最終更新: 2012年9月22日 19:21:22

Nagiosによるサーバ監視

Nagios によるサーバ監視

Nagios は perl ベースのサーバ監視ツールです。デフォルトでは SNMP を使用しないため、サーバやデーモンの死活確認が主な利用目的となります。

Nagios 本体のインストール・日本語化

Nagios は SourceForge より tar ボールをダウンロードします。

Nagios – SourceForge

※ rpmforge から YUM でインストールすることもできますが、その場合 コンフィグパスは /etc/nagios になります。

また、Nagios-JPよりバージョンの一致する日本語化パッチをダウンロードします。このパッチを適用することにより、web インターフェースが日本語(utf-8)で表示されます

# nagios 本体をダウンロード
$ wget http://jaist.dl.sourceforge.net/project/nagios/nagios-3.x/nagios-3.1.0/nagios-3.1.0.tar.gz

# tar.gz を展開
$ tar -zxvf nagios-3.1.0.tar.gz
$ cd nagios-3.1.0/

# 日本語化パッチをダウンロード
$ wget http://jaist.dl.sourceforge.jp/nagios-jp/38828/nagios-3.1.0-ja-utf8.patch.gz

# パッチを適用
$ gzip -dc nagios-3.1.0-ja-utf8.patch.gz| patch -p0

参考: @it Webインターフェイスから手軽に監視

Nagios のコンパイルとインストール

先に Nagios の起動ユーザを追加しておきます。

# nagios ユーザを追加
$ useradd -d /usr/local/nagios -m nagios

コンパイル&インストールします。configure オプションは不要だと思いますが、ここではソースインストールした Apache2 のコンフィグファイルパスのみ指定しています。(nagios.conf が作成されます。)

# コンパイル&インストール
$ ./configure --with-httpd-conf=/usr/local/apache2/conf/extra
$ make all
$ make fullinstall

# 設定ファイル サンプルのインストール
$ make install-config

nagios プラグイン インストール

やはり SourceForge より nagios プラグイン をダウンロードします。

$ wget wget http://jaist.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz

# コンパイル&インストール
$ tar -zxvf nagios-plugins-1.4.13.tar.gz
$ cd nagios-plugins-1.4.13

$ ./configure
$ make && make install

Nagios 設定

Nagios の全体的な設定を行うには /usr/local/nagios/etc/nagios.cfg を編集します。

## /usr/local/nagios/etc/nagios.cfg

## servers 行をアンコメント
cfg_dir=/usr/local/nagios/etc/servers
#cfg_dir=/usr/local/nagios/etc/printers
#cfg_dir=/usr/local/nagios/etc/switches
#cfg_dir=/usr/local/nagios/etc/routers

監視するホストごとの設定ファイルを格納する etc/servers ディレクトリを作成しておきます。ディレクトリの所有者は nagios ユーザに変更します。

$ mkdir /usr/local/nagios/etc/servers
$ chown nagios. /usr/local/nagios/etc/servers

デフォルトでは基本認証を使用するようになっていますが、閲覧するたびに ID/パスワードを入力するのは結構煩わしいものです。今回はローカル側のみの利用で外部から参照は許可しないため、nagios の認証機能は解除します。

## /usr/local/nagios/etc/cgi.cfg

## デフォルトユーザ行をアンコメント
default_user_name=guest

## authorized_for ... = nagiosadmin の行を全て「*」に変更
## スペース・タブ等を入れるとうまく動きません
  authorized_for_system_information=*
  authorized_for_configuration_information=*
  authorized_for_system_commands=*
  authorized_for_all_services=*
  authorized_for_all_hosts=*
  authorized_for_all_service_commands=*
  authorized_for_all_host_commands=*

 

## apache を nagios グループに登録する
$ usermod -G nagios apache

## グループユーザ(apache)が cgi を実行できるよう
## アクセス権を変更する
$ chmod -R 755 /usr/local/nagios

サーバ設定ファイルの作成

監視ホストの定義

監視対象とするサーバ/サービスの設定を行います。etc/servers/ 以下に「*.cfg」という名前で作成します。

ex.)nodes.cfg

########
# 監視ホストの設定
define host{
	use	linux-server		# ホストが linux の場合
	host_name	www-server	# ホスト名を定義
	alias		www.cro-pel.com	# エイリアス名
	address		192.168.10.2	# ホストのIPアドレス
	}

# 監視サービスの設定
define service{
	use	generic-service
	host_name				www-server
	service_description		SSH			# サービス名を定義
	check_command			check_ssh	# ssh 接続をチェック
	}

define service{
	use	generic-service
	host_name				www-server
	service_description		PING		# サービス名を定義
	check_command			check_ping!100.0,20%!500.0,60%
								# ping 応答をチェック
	}

define service{
	use	generic-service
	host_name				www-server
	service_description		VNC			# サービス名を定義
	check_command			check_tcp!5901!2!5	# VNC で利用する 5901/tcp をチェック
	}

「host_name」で紐付けられ、「address」で指定されたアドレスに対して監視を行います。実際には以下のように表示されます。

nagios-sample

ホストグループの定義

複数の監視ホストがある場合、例えば東京のホスト群、大阪のホスト群というようにグルーピングして管理することができます。ホストグループの設定も、etc/servers/ 以下に任意の *.cfg ファイルを作成します。

ex.)nodes.cfg

define hostgroup{
	hostgroup_name	Tokyo
	alias			tokyo_group
	members			akihabara,shinjuku,ikebukuro,
        }

設定ファイルについて

nagios の設定ファイルは nagios.cfg にすべてまとめることも、ホストの設定ごとに host-01.cfg、host-02.cfg・・・というようにバラバラに作成することもできます。上記のホスト設定とグループ設定も一つのファイルにまとめてしまうことも可能です。

Nagios の起動

すべての設定が完了したら、Nagios を起動します。nagios の起動は rc スクリプトで行います。

$ /etc/rc.d/init.d/nagios start

もしここでエラーが表示されるようであれば、サーバ設定などに間違いがあるかもしれません。-v オプションを使用してコンフィグファイルのチェックをすることができます。例えば以下はホスト設定ファイルに記述のないホストを、グループに登録してしまった時のエラーです。

$ /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Nagios 3.1.0
Copyright (c) 1999-2009 Ethan Galstad (http://www.nagios.org)
Last Modified: 01-25-2009
License: GPL

Reading configuration data...
   Read main config file okay...
Processing object config file '/usr/local/nagios/etc/objects/commands.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/contacts.cfg'...
Processing object config 
.
.
.
file '/usr/local/nagios/etc/servers/nodes.cfg'...
Error: Could not find any host matching '192.168.10.2' (config file '/usr/local/nagios/etc/servers/nodesgroup.cfg', starting on line 1)
Error: Could not expand members specified in hostgroup (config file '/usr/local/nagios/etc/servers/nodesgroup.cfg', starting on line 1)
   Error processing object config files!


***> One or more problems was encountered while processing the config files...

     Check your configuration file(s) to ensure that they contain valid
     directives and data defintions.  If you are upgrading from a previous
     version of Nagios, you should be aware that some variables/definitions
     may have been removed or modified in this version.  Make sure to read
     the HTML documentation regarding the config files, as well as the
     'Whats New' section to find out what has changed.

 

nagios モジュール の利用

/usr/local/nagios/libexec 以下に格納されているモジュールは、コマンドラインから直接実行することができます。

例えば 監視対象が ssh ログイン可能かどうか確認するには、check_ssh を使用します。

$ cd /usr/local/nagion/libexec/
$ ./check_ssh -p 22 -t 5 -H 192.168.1.5
SSH OK

$

また、TCP/IP の任意のポートについて死活確認を行うには、check_tcp/check_udp を利用すると良いでしょう。

$ cd /usr/local/nagion/libexec/
$ ./check_tcp -p 22 -t 5 -H 192.168.1.5
SSH OK - OpenSSH_4.3 (protocol 2.0)

$ ./check_tcp -p 22 -t 5 -H 192.168.1.5
TCP OK - 0.024 second response time on port 5124|time=0.024371s;;;0.000000;5.000000