Xymon(旧Hobbit)の設定方法



●Xymon(旧Hobbit)について

 Hobbitとは、GPLのUNIXベースのネットワーク監視ソフトウェアです。2008年11月、商標の問題を理由として名称が「Xymon」に変更されました。詳細はこちらのページを参照してください。

●Xymon(旧Hobbit)に必要なソフトウェア

 はじめに、Hobbitが必要なソフトウェアがすでにインストール済みであるかどうかを確認しましょう。下記のようなソフトウェアが必要です。

  * fping
  * httpdなどのWebサーバ
  * openldap-devel
  * openssl-devel
  * pcre-devel
  * rrdtool-devel

 上記がインストールされていない場合はインストールしてください。Fedora 11ではすべてyumコマンドでインストールできます。

●Xymon(旧Hobbit)用ユーザの作成

 必要なソフトウェアのインストールが終わったら、Hobbitを実行するユーザを作成します。この作業を怠ると、Xymon(旧Hobbit)サーバのインストール(configure)時に下記のようなエラーが表示され停止してしまいます。
ymatch: can't get local yp domain: ローカルドメイン名が設定されていません
FAILURE: The user xymon does not exist. Create user and try again.
 ですので、下記のようにユーザを作成します。
# useradd -c 'Hobbit Administrator' xymon ← ユーザ「xymon」の作成
# passwd xymon ← 「xymon」のパスワードを設定
ユーザ xymon のパスワードを変更。
新しいパスワード: ← パスワード入力
新しいパスワードを再入力してください: ← パスワード再入力
passwd: 全ての認証トークンが正しく更新できました。

●Xymon(旧Hobbit)サーバのインストール

 http://sourceforge.net/projects/xymon/から、xymon-4.2.3.tar.gzをダウンロードします。
 ダウンロードしたファイルを/usr/local/srcディレクトリに保存します。
# cd /usr/local/src
# tar xvzf xymon-4.2.3.tar.gz
# cd xymon-4.2.3
# ./configure
以下のように質問されるが、デフォルトで問題なければ[Enter]でよい。
Configuration script for Xymon
This script asks a few questions and builds a Makefile to compile Xymon
Checking your make-utility
Checking pre-requisites for building Xymon
Checking for fping ...
Hobbit has a built-in ping utility (hobbitping)
However、 it is not yet fully stable and therefore it
may be best to use the external fping utility instead.
I found fping in /usr/sbin/fping
Do you want to use it [Y/n] ?
[Enter]
Checking to see if '/usr/sbin/fping 127.0.0.1' works ...
127.0.0.1 is alive
OK、 will use '/usr/sbin/fping' for ping tests
NOTE: If you are using an suid-root wrapper、 make sure the 'hobbit'
      user is also allowed to run fping without having to enter passwords.
      For 'sudo'、 add something like this to your 'sudoers' file:
      hobbit: ALL=(ALL) NOPASSWD: /usr/local/sbin/fping
Checking for RRDtool ...
test-rrd.c: In function ‘main’:
test-rrd.c:30: error: too few arguments to function ‘rrd_graph’
make: *** [test-compile] エラー 1
Not RRDtool 1.0.x、 checking for 1.2.x
Found RRDtool include files in /usr/include
Found RRDtool libraries in /usr/lib
Linking RRD with PNG library: -L/usr/lib -lpng
Checking for PCRE ...
Found PCRE include files in /usr/include
Found PCRE libraries in /usr/lib
Checking for OpenSSL ...
Found OpenSSL include files in /usr/include
Found OpenSSL libraries in /usr/lib
Xymon can use the OpenSSL library to test SSL-enabled services
like POP3S、 IMAPS、 NNTPS and TELNETS. If you have the OpenSSL
library installed、 I recommend that you enable this.
Do you want to be able to test SSL-enabled services (y) ?
[Enter]
Checking for LDAP ...
Found LDAP include files in /usr/include
Found LDAP libraries in /usr/lib
Xymon can use your OpenLDAP LDAP client library to test LDAP servers.
Do you want to be able to test LDAP servers (y) ?
[Enter]
Enable experimental support for LDAP/SSL (OpenLDAP 2.x only) (y) ?
[Enter]
Checking for clock_gettime() requiring librt ...
clock_gettime() requires librt
Checking for Large File Support ...
Large File Support OK
Setting up for a Xymon server
What userid will be running Xymon [xymon] ?
[Enter]
Found passwd entry for user xymon:x:504:504:Hobbit Administrator:/home/xymon:/bin/bash
Where do you want the Xymon installation [/home/xymon] ?
[Enter]
OK、 will configure to use /home/xymon as the Xymon toplevel directory
What URL will you use for the Xymon webpages [/xymon] ? 
[Enter]
Where to put the Xymon CGI scripts [/home/xymon/cgi-bin] ? 
(Note: This is the filesystem directory - we will get to the URL shortly)
What is the URL for the Xymon CGI directory [/xymon-cgi] ? 
(Note: This is the URL - NOT the filesystem directory)
[Enter]
********************** SECURITY NOTICE ****************************
If your Xymon server is accessible by outsiders、 then you should
restrict access to the CGI scripts that handle enable/disable of
hosts、 and acknowledging of alerts. The easiest way to do this is
to put these in a separate CGI directory and require a password to
access them.
Even if your Xymon server is on a secured、 internal network、 you
may want to have some operations (like disabling a host) be password-
protected - that lets you see who disabled or acknowledged an alert.
Where to put the Xymon Administration CGI scripts [/home/xymon/cgi-secure] ? 
(Note: This is the filesystem directory - we will get to the URL shortly)
[Enter]
What is the URL for the Xymon Administration CGI directory [/xymon-seccgi] ? 
(Note: This is the URL - NOT the filesystem directory)
[Enter]
** Note that you may need to modify your webserver configuration.
** After installing、 see /home/xymon/server/etc/hobbit-apache.conf
                                           for an example configuration.
To generate Xymon availability reports、 your webserver
must have write-access to a directory below the Xymon
top-level directory. I can set this up if you tell me
what group-ID your webserver runs with. This is typically
'nobody' or 'apache' or 'www-data'
What group-ID does your webserver use [nobody] ?
[Enter]
Where to put the Xymon logfiles [/var/log/xymon] ? 
[Enter]
What is the name of this host [*****.bigbang.dyndns.org] ? 
[Enter]
What is the IP-address of this host [127.0.0.1] ? 
192.168.0.1 ← 実IPアドレスを入力する
Where should I install the Xymon man-pages (/usr/local/man) ?
[Enter]
Using Linux Makefile settings
Created Makefile with the necessary information to build Xymon
Some defaults are used、 so do look at the Makefile before continuing.
Configuration complete - now run make (GNU make) to build the tools
# make
# make install
 問題が無ければインストール完了です。

●Apache設定

 Xymon(旧Hobbit)を/home/xymonにインストールしたので、下記のようにアクセス権を変更します。
# chmod 701 /home/xymon
# ls -l /home
合計 20
drwx-----x  10 xymon  xymon  4096 2009-09-16 18:30 xymon
 Xymon(旧Hobbit)はブラウザインターフェースを備えています。これを利用するためにApache関連のファイルを設定します。最初に、Apacheのconfファイルをコピーします。
# cp -p /home/xymon/server/etc/hobbit-apache.conf /etc/httpd/conf.d/xymon.conf
 コピーしたらApacheを再起動します。
# /etc/rc.d/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
 管理用CGIにはBASIC認証が行われるため、パスワードを設定します。
# htpasswd -c -m /home/xymon/server/etc/hobbitpasswd xymon
New password:パスワード入力
Re-type new password:パスワード再入力
Adding password for user xymon

●起動スクリプトの設定

 上記のApache設定まで行えば、「http://ドメイン名/xymon/」で正常に画面が表示されるはずです。
 引き続いて起動スクリプトの設定をします。管理を楽にするために起動スクリプトを「/etc/rc.d/init.d」配下に設置して起動/終了の管理が行えるようにします。
 最初に起動スクリプトをコピーします。
# cp -p /usr/local/src/xymon-4.2.3/rpm/hobbit-init.d /etc/rc.d/init.d/xymon
# chown root:root /etc/rc.d/init.d/xymon
# chmod 755 /etc/rc.d/init.d/xymon
 ここで気を付けなければ行けないことがあります。この起動スクリプトはhobbit時代を踏襲したままのようで、スクリプトに一部不備があります。変数の値や起動用のshellスクリプトまでのパスなどを変更します。
【修正後】
#! /bin/sh
#
# hobbit          This shell script takes care of starting and stopping
#                 hobbit(the Hobbit network monitor)
#
# chkconfig: 2345 80 20
# description: hobbit is a network monitoring tool that allows \
# you to monitor hosts and services. The monitor status is available \
# via a webpage.
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/home/xymon/server/hobbit.sh
NAME=xymon
DESC=xymon
test -x $DAEMON || exit 0
# Include hobbit defaults if available
if [ -f /etc/default/xymon ] ; then
	. /etc/default/xymon
fi
set -e
case "$1" in
  start)
	echo "Starting $DESC: "
	su -c "$DAEMON start" - "$NAME"
	;;
  stop)
	echo "Stopping $DESC: "
	su -c "$DAEMON stop" - "$NAME"
	;;
  reload|force-reload)
	echo "Reloading $DESC configuration files."
	su -c "$DAEMON reload" - "$NAME"
	  ;;
  restart)
	echo "Restarting $DESC: "
	su -c "$DAEMON restart" - "$NAME"
	;;
  rotate)
	echo "Rotating logs for $DESC: "
	su -c "$DAEMON rotate" - "$NAME"
	;;
  *)
	N=/etc/init.d/$NAME
	# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $N {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac
exit 0
 次に、上記起動スクリプトを実行すると、「Hobbit started」や「Hobbit stopped」等が表示されてしまうため、「/home/xymon/server/hobbit.sh」を修正します。
【修正後】
#!/bin/sh
# Startup script for the Hobbit monitor
#
# This starts the "hobbitlaunch" tool、 which in turn starts
# all of the other Hobbit server programs.
case "`uname -s`" in
   "SunOS")
   	ID=/usr/xpg4/bin/id
	;;
   *)
   	ID=id
	;;
esac
if test `$ID -un` != xymon
then
	echo "Xymon must be started as the xymon user"
	exit 1
fi
case "$1" in
   "start")
	if test -s /var/log/xymon/hobbitlaunch.pid
	then
		kill -0 `cat /var/log/xymon/hobbitlaunch.pid`
		if test $? -eq 0
		then
			echo "Xymon appears to be running、 doing restart"
			$0 stop
		else
			rm -f /var/log/xymon/hobbitlaunch.pid
		fi
	fi
	 /home/xymon/server/bin/hobbitlaunch --config=/home/xymon/server/etc/hobbitlaunch.cfg --env=/home/xymon/server/etc/hobbitserver.cfg \
                --log=/var/log/xymon/hobbitlaunch.log --pidfile=/var/log/xymon/hobbitlaunch.pid
	echo "Xymon started"
	;;
   "stop")
	if test -s /var/log/xymon/hobbitlaunch.pid
	then
		kill -TERM `cat /var/log/xymon/hobbitlaunch.pid`
		echo "Xymon stopped"
	else
		echo "Xymon is not running"
	fi
	rm -f /var/log/xymon/hobbitlaunch.pid
	;;
   "status")
	if test -s /var/log/xymon/hobbitlaunch.pid
	then
		kill -0 `cat /var/log/xymon/hobbitlaunch.pid`
		if test $? -eq 0
		then
			echo "Xymon (hobbitlaunch) running with PID `cat /var/log/xymon/hobbitlaunch.pid`"
		else
			echo "Xymon not running、 removing stale PID file"
			rm -f /var/log/xymon/hobbitlaunch.pid
		fi
	else
		echo "Xymon (hobbitlaunch) does not appear to be running"
	fi
	;;
   "restart")
	if test -s /var/log/xymon/hobbitlaunch.pid
	then
		$0 stop
		sleep 10
		$0 start
	else
		echo "hobbitlaunch does not appear to be running、 starting it"
		$0 start
	fi
	;;
   "reload")
	if test -s /var/log/xymon/hobbitd.pid
	then
		kill -HUP `cat /var/log/xymon/hobbitd.pid`
	else
		echo "xymond not running (no PID file)"
	fi
	;;
   "rotate")
   	for PIDFILE in /var/log/xymon/*.pid
	do
		kill -HUP `cat $PIDFILE`
	done
	;;
   *)
   	echo "Usage: $0 start|stop|restart|reload|status|rotate"
	break;
esac
exit 0
chkconfigに追加し、リスト表示がされるかを確認します。同時にきちんと起動するかも確認してみます。
# chkconfig --add xymon
# chkconfig --list | grep xymon
xymon           0:off   1:off   2:on    3:on    4:on    5:on    6:off
# service xymon start
Starting xymon: Hobbit started
xymon.
 http://localhost/xymon/にアクセスしてlocalhostの監視が始まっていればサーバは問題なく動作している。起動直後はbbgenが黄色いアイコンになっているが正しい動作であり、5分もすると緑のアイコンになる。もし赤いアイコンが出ていたらそれをクリックして原因を突き止めよう。白いアイコンは「監視対象が設定されていない」なので、とりあえずは問題ない。なお、この時点でローカルのリソース監視なども始まっているので、trendsアイコンを一時間後くらいにクリックしたりするとちょっとおもしろい。

●Xymon(旧Hobbit)の設定ファイルについて

 Hobbitの設定ファイルは、installdir/server/etc/ディレクトリに置かれます(ソースからのインストールの場合)。ここには次のファイルが置かれます。
  • bb-hostsは、最も頻繁にメンテナンスされるファイルです。このファイルは監視するホストの一覧を含みます。IPアドレス、監視するネットワークサービス、監視するURL、監視結果の画面がサブページにどのように表示されかの情報なども含まれます。このファイル名、bb-hostsは、BigBrotherとの互換性を考えられて決められました。BigBrotherと同じファイル名で同じフォーマットとなっています。
  • hobbit-clients.cfgは、Hobbitクライアントがインストールされた監視対象のホストから送られるデータのための設定ファイルです。クライアントからHobbitに送られたCPU、ディスク、メモリ、プロセスの情報の、色を定義します。
  • hobbit-alerts.cfgは、アラートの情報が記述されます。このファイルには、サービスが落ちたときのアラートを送るルールが設定されます。誰がどのようにアラートを受け取り、時間帯は24時間365日なのか平日の午前10時から午後4時までなのか、などが記載されます。
  • hobbitserver.cfgはHobbitサーバのための設定ファイルです。このファイルは多くの環境変数を定義します。定義された環境変数は、Hobbitプログラムのすべてで適用されます。BigBrotherでも定義される環境変数のいくつかは、Hobbitでも設定されます。そのため、BigBrotherのエクステンションスクリプトも動作します。hobbitserver.cfgは、Hobbitインストール時のconfigureスクリプトによって設定され、通常は変更する必要はありません。
  • hobbitlaunch.cfgはhobbitlaunchツールのための設定ファイルです。hobbitlaunchは、Hobbitを起動するプログラムで、Hobbitサーバを起動するするだけのプログラムです。hobbitlaunchはhobbitlaunch.cfgファイルを読み込み、サーバを起動するためにこれに一覧されたプログラムを実行します。プログラムのいくつかはデーモンとして実行されるかもしれません。いくつかのプログラムは定期的な間隔で実行されるかもしれません。bb-genかbbtest-netのオプションを使うなら、これらのオプションをコマンドラインに追加するために、hobbitlaunchを変更してください。
  • hobbitgraph.cfgはhobbitgraph CGIのための設定ファイルです。RRDファイルのデータからどのようにグラフが生成されるかを定義します。
  • bb-servicesはbbtest-netプログラムのための設定ファイルです。どのようにネットワークファイルが監視されるかを定義します
 アクセスしやすいようにxymonの構成ファイルのシンボリック・リンクを作成します。
# ln -s /home/xymon/server/etc /etc/xymon-server

●bb-hostsの設定について

 bb-hostsはクライアント外部(サーバ)から監視できるものを設定します。
 下記のように設定しました。
group-compress <b>Servers</b>
192.168.0.5   inu.bigbang.dyndns.org      # ajp13 dns imap pop3 smtp ssh telnet vnc:5901 http://pub.bigbang.dyndns.org/ https://pub2.bigbang.dyndns.org/ 
192.168.0.4   sun.bigbang.dyndns.org      # dns ldap ssh vnc:5900 http://sun.bigbang.dyndns.org/
group-compress <b>Gateways</b>
192.168.0.254   router     # telnet http://192.168.0.254/
 「192.168.0.5」はXymon(旧Hobbit)サーバがインストールされているマシンです。#記号の右側に記載されているサービスを監視するようにしています。
 「192.168.0.4」はWindows Server 2003が動作しています。#記号の右側に記載されているサービスを監視するようにしています。
 「192.168.0.254」は自宅ネットワークのルータです。この機器も監視するように設定しました。
 設定が完了したら、リロードして反映させます。
# service xymon reload

●hobbit-clients.cfgの設定について

 クライアント内部(クライアント自身)から監視できるものを設定します。Hobbitクライアントをインストールしたマシンのみhobbit-clients.cfgの設定で監視できます。
 Hobbitサーバ側で設定し、マッチパターンを検出、警告レベルの判定を行います。

 下記のように設定しました。
DEFAULT
	# These are the built-in defaults.
	UP      1h
	LOAD    2.0 4.0
	DISK    * 90 95
	MEMPHYS 100 101
	MEMSWAP 50 80
	MEMACT  90 97
 「LOAD」の部分だけ変更しました。
 DEFAULT以下に記述したものは、すべてのHobbitクライアント(サーバ含む)に適用されます。UPでuptimeが1時間内のものは注意(黄色いアイコン)を表示することにしました。そもそもマシンがダウンしていたら警告(赤いアイコン)となります。LOADはロード・アベレージの設定です。1Wayマシンなので、それの2倍である2.0に達したら注意、それの4倍に達したら警告としました。DISKはディスク使用率です。すべてのディスクで使用率が90%に達したら注意、95%に達したら警告としました。
 MEMPHYSはメモリの使用率です。Linuxの場合、バッファとキャッシュにメモリを利用するのでMEMPHYSが大きくても問題ありません。100%で注意、101%(あり得ない)で警告とした。MEMSWAPはスワップの使用率で50%で注意、80%で警告としました。MEMACTはバッファとキャッシュを除いた値です。使用率90%で注意、97%で警告としました。

 以下のような設定もできます。
	DIR /var/log/httpd yellow size<10240
	DIR /var/log/httpd red size<102400
	FILE /var/spool/mail/root yellow size<10M
	LOG /var/log/messages red "%sshd.*more authentication failures"
	PROC crond
	PROC httpd 1 100 yellow
	PROC httpd 1 200 red
 「DIR」行は、/var/log/httpdディレクトリが10Mbyteを超えた場合に注意、100Mbyteを超えた場合に警告を発する設定です。
 「DIR」での設定はXymonの監視用Web画面の「files」をクリックした時に表示されます。
 「FILE」行はMailBox形式であるroot用のメールボックスが10Mを超えた場合に注意を発する設定です。
 「FILE」での設定はXymonの監視用Web画面の「files」をクリックした時に表示されます。
 「LOG」行は、/var/log/messagesを監視し、SSH時に連続3回以上パスワードを間違えられたときに記録される「more authentication failures」を監視する設定です。
 「LOG」での設定はXymonの監視用Web画面の「msgs」をクリックした時に表示されます。
 「PROC」行は、crondが動作しているかどうかの単純な監視、httpdは「1未満または100以上で注意」「1未満または200以上で警告」するという意味でHTTPサーバの負荷を監視する設定です。
 「PROC」での設定はXymonの監視用Web画面の「procs」をクリックした時に表示されます。
 「PORT」での設定はXymonの監視用Web画面の「ports」をクリックした時に表示されます。
 下記は特定のホストに対して設定を定義しています。
 ホスト名「inu.bigbang.dyndns.org」に対する設定です。bb-hostsで設定した以外にポートを設定するようにしています。
HOST=inu.bigbang.dyndns.org
	FILE /bin/ls red md5=md5sumコマンドで得られたhash値を設定
	FILE /bin/mv red md5=md5sumコマンドで得られたhash値を設定
	FILE /bin/cp red md5=md5sumコマンドで得られたhash値を設定
	FILE /bin/rm red md5=md5sumコマンドで得られたhash値を設定
	FILE /etc/ssh/sshd_config red md5=md5sumコマンドで得られたhash値を設定
	PORT LOCAL=%[.:]22$ STATE=LISTEN "TEXT=SSH: 22"
	PORT LOCAL=%[.:]23$ STATE=LISTEN "TEXT=TELNET: 23"
	PORT LOCAL=%[.:]25$ STATE=LISTEN "TEXT=SMTP: 25"
	PORT LOCAL=%[.:]53$ STATE=LISTEN "TEXT=DNS: 53"
	PORT LOCAL=%[.:]80$ STATE=LISTEN "TEXT=HTTP: 80"
	PORT LOCAL=%[.:]143$ STATE=LISTEN "TEXT=IMAP: 143"
	PORT LOCAL=%[.:]443$ STATE=LISTEN "TEXT=HTTPS: 443"
	PORT LOCAL=%[.:]3306$ STATE=LISTEN "TEXT=MySQL: 3306"
	PORT LOCAL=%[.:]5432$ STATE=LISTEN "TEXT=PostgreSQL: 5432"
	PORT LOCAL=%[.:]5901$ STATE=LISTEN "TEXT=VNC: 5901"
	 ↑ 頻繁に監視するとLinux版のVNC(tigervnc-server)では「too many security failures」
	   が表示されてしまい、VNCを再起動しないと接続できなくなってしまうため、
	   コメントアウトするようにした。
	PORT LOCAL=%[.:]8009$ STATE=LISTEN "TEXT=AJP13: 8009"
	PROC crond 1 -1 yellow
	PROC httpd 1 -1 yellow
	PROC mysqld 2
	PROC named 1 -1 yellow
	PROC ntpd 1 -1 yellow
	PROC postmaster 1 -1 yellow
	PROC rsyslog 1 -1 yellow
	PROC snmpd 1 -1 yellow
	PROC sshd 1 -1 yellow
	PROC vnc 1 -1 yellow
 MySQLはmysqld_safeとmysqldが動いているべきなので「2未満だと警告」という設定です。
 設定が完了したら、再起動(リロードじゃ反映されない・・)して反映させます。
# service xymon restart
 その他にも様々な設定ができます。詳細ついてはマニュアルを参照してください。

●client-local.cfgの設定について

 hobbit-clients.cfgで「DIR」、「FILE」、「LOG」を使用する場合はinstalldir/server/etc/client-local.cfgの設定も必要です。ここに設定したファイルの情報をHobbitクライアントはサーバに送信することになります。
[test.bigbang.dyndns.org]
dir:/var/log/httpd
file:/bin/ls:md5
file:/bin/mv:md5
file:/bin/cp:md5
file:/bin/rm:md5
file:/etc/ssh/sshd_config:md5
file:/etc/vsftpd/vsftpd.conf:md5
file:`find /var/spool/mail -maxdepth 1 -type f`
log:/var/log/messages:10240 ignore ABCDABCD
 
[linux]
dir:/var/log/httpd
file:/bin/ls:md5
file:/bin/mv:md5
file:/bin/cp:md5
file:/bin/rm:md5
file:/etc/ssh/sshd_config:md5
log:/var/log/messages:10240 ignore EFGHEFGH
 file:の末尾に:md5をつけるとMD5値も送信されるようになります。
 「`find /var/spool/mail -maxdepth 1 -type f`」は指定したディレクトリ以下のファイルをチェックする方法です。詳細はfindのマニュアルを参照してください。
 また、ignoreで送信しない行を設定でき、test.bigbang.dyndns.orgはSyslogサーバとして動作しており、ルータからのログも混ざっているため、ABCDABCDを含む行は送信しないようにしている。[linux]ではLinuxマシンでのデフォルト設定となり、ホスト名での記述がないLinuxマシンはこの設定を使用します。
 なお、デフォルトでは/var/log/messagesや/etc/ssh/sshd_config、/etc/vsftpd/vsftpd.confはrootユーザしか読めないので、権限を変更する必要があります。
# chgrp xymon /var/log/messages*
# chmod 640 /var/log/messages*
# chgrp xymon /etc/ssh/sshd_config
# chmod 640 /etc/ssh/sshd_config
# chgrp xymon /etc/vsftpd/vsftpd.conf
# chmod 640 /etc/vsftpd/vsftpd.conf

●ログファイルの設定

 ログの出力先を/var/log以外に設定した場合はアクセスしやすいようにログへのシンボリック・リンクを作成します。
# ln -s /home/xymon/server/logs /var/log/xymon-server
 ログファイルも同じようにサンプルからコピーします。こちらも一部誤りがあるので修正します。
# cp -p /usr/local/src/xymon-4.2.3/rpm/hobbit.logrotate /etc/logrotate.d/xymon
#
#       Logrotate fragment for Xymon.
#
/var/log/xymon/*.log {
        weekly
        compress
        delaycompress
        rotate 5
        missingok
        nocreate
        sharedscripts
        postrotate
                /etc/init.d/xymon rotate
        endscript
}
 所有者を変更します。
# chown root:xymon /etc/logrotate.d/xymon
 次に、XymonのWebページからmessagesを読み込めるようにします。
# chgrp xymon /var/log/messages
# chmod 640 /var/log/messages

●fpingコマンド、その他

 上記でインストールはほぼ完了です。最後に細かい修正を行います。
 xymonで利用するfpingコマンドのグループとパーミッションを変更します。これは一般ユーザであるxymonからコマンドを利用できるようにする処置です。
# chown root:xymon /usr/sbin/fping
# chmod 4710 /usr/sbin/fping
 xymonでは一部のディレクトリにBasic認証が設定されており、ユーザを追加しないとWebからアクセスできないエリアが存在しています。htpasswdコマンドを利用してユーザを追加します。
# /usr/bin/htpasswd -c -m /home/xymon/server/etc/hobbitpasswd xymon
New password: 
Re-type new password: 
Adding password for user xymon
 これでXymonのインストールはすべて完了です。引き続いてXymonの初期設定を行って行きます。

●Xymon(旧Hobbit)の設定

o bb-hosts
 installdir/server/etc/bb-hostsにあります。
 bb-hostsには、監視対象のホストを記述します。また、監視するネットワークサービス、監視するURL、画面がサブページにどう表示されるかを設定します。

監視対象ホストの設定

(構文) IPアドレス  ホスト名  # 監視項目

(例)
192.168.1.4 XXX1 # conn bbd smtp pop ssh http://XXX1.net/
192.168.1.3 XXX2 # conn smtp pop ssh http://XXX2.net/ vnc:5901
192.168.1.2 XXX3 # conn ssh
vnc:5901は5901ポートで動作しているVNCサーバの監視
監視サービス一覧
*注 は HobbitがOpenSSLをサポートしてビルドされていれば、監視可能な項目
サービス 説明
conn pingテスト。デフォルトで有効。noconnキーワードを書くと無効になります
http Webサーバテスト。WebサーバのURLを記述します
ftp FTPサーバテスト
ssh SSH(Secure Shell)サーバテスト。ssh1とssh2をサポートします
telnet Telnetサーバテスト
smtp SMTP(メールサーバ)テスト
pop3 POP3テスト
imap IMAPテスト。IMAPバージョン2と4をサポート。バージョン3は"imap3"を利用してください
nntp NNTP(ネットニュース)サーバテスト
ldap LDAP(ディレクトリサーバ)テスト。LDAPがサポートされたHobbitでLDAP URIを記述してください
rsync rsyncサーバテスト
bbd BigBrotherデーモンテスト。Hobbitネットワークデーモンテストとしても稼働する
clamd CLAMアンチウィルスデーモンテスト
spamd SpamAssassinアンチスパムデーモンテスト
oratns Oracle TNSリスナテスト。Oratns "ping"をテストする
qmtp QMTPサーバテスト。qmailのqmtpdサービス用
qmqp QMQPサーバテスト。qmailのqmqpdサービス用
vnc VNC(Virtual Network Computing)サーバテスト
https(*注) Webサーバテスト。WebサーバのURLを記述します。
ftps(*注) セキュアFTPサーバテスト
telnets(*注) セキュアTelnetサーバテスト
smtps(*注) セキュアSMTPサーバテスト
pop3s(*注) セキュアPOP3サーバテスト
imaps(*注) セキュアIMAPサーバテスト
nntps(*注) セキュアNNTP(News)サーバテスト
ldaps(*注) セキュアLDAP(ディレクトリ)サーバテスト。HobbitがLDAPをサポートしてビルドされていれば、Full LDAP URIを入れてください。OpenLDAP v2.xクライアントライブラリとともにビルドされていて、かつLDAPサーババージョン3で、"starttls"コマンドがサポートされているときに有効であることに気をつけてください。ポート636でSSL経由の古い非標準のLDAPトンネルはLDAPサーバは機能しないでしょう。


o hobbit-clients.cfg

 hobbitクライアントがインストールされた監視対象のホストから送られるデータの為の設定ファイルです。クライアントからhobbitに送られた、CPU、ディスク、メモリ、プロセスの情報の色を設定します。
(例)
HOST=XXX3
  UP 30m
  DISK * 90 95
  LOAD 5.0 10.0
  MEMPHYS 100 101
  MEMSWAP 50 80
  MEMACT 90 97
  PROC sshd 1 -1 yellow
  PROC httpd 1 -1 yellow
  PROC syslog-ng 1 -1 yellow
  PROC named 1 -1 yellow
  PROC ntpd 1 -1 yellow
  PROC postmaster 1 -1 yellow
  PROC nmbd 1 -1 yellow
  PROC smbd 1 -1 yellow
  PROC snmpd 1 -1 yellow

●Alertの通知

 HOBBITではメールによるアラートの通知が可能です。

[設定ファイル] installdir/server/etc/hobbit-alerts.cfg

[設定]
 hobbit-alerts.cfg にある設定例は以下のようになってます。
HOST=www.foo.com SERVICE=http
MAIL webadmin@foo.com REPEAT=20 RECOVERED
MAIL cio@foo.com DURATION>60 COLOR=red
SCRIPT /usr/local/bin/sendsms 1234567890 FORMAT=SMS
 「HOST=」の部分で対象のホストを設定します。「SERVICE=」をつける事によって対象のサービスも指定できます。何も指定しなければ全てになります。
 「MAIL」の部分でアラートを通知するメールアドレスを設定します。復旧した際にもメールの通知が欲しい場合にはRECOVERDをつけます。
 「COLOR=」の部分では、監視設定をした際に指定した色の障害のみ通知する設定ができます。何も指定しなければ全てです。
 また、障害が発生した際に、何かのスクリプトを実行して欲しい場合には、SCRIPTを記述します。
 私の環境では、スクリプトの実行はいらないですが、全ての監視対象、監視項目でメールが欲しいので以下のように設定してます。
==
host=xxx1、xxx2、xxx3
MAIL xxx@xxx.com RECOVERD
==
 これで、xxx1 と xxx2 と xxx3 の全ての監視項目にて障害が発生及び復旧した際に、xxx@xxx.com宛てにメールがきます。

[Alert通知メール例]デフォルトで以下のフォーマットでメールが通知されます。
・検知時
==
red Tue Apr 22 16:20:14 2008 ssh NOT ok
Service ssh on xxx1 is not OK : Service unavailable (connect timeout)
Seconds: 0.00
See http://xxx3/hobbit-cgi/bb-hostsvc.sh?HOST=xxx1&SERVICE=ssh
==
・復旧時
==
green Tue Apr 22 16:22:16 2008 ssh ok
Service ssh on xxx1 is OK (up)
SSH-1.99-OpenSSH_4.3
Seconds: 0.00
See http://xxx3/hobbit-cgi/bb-hostsvc.sh?HOST=xxx1&SERVICE=ssh
==
ルールを設定するキーワード
環境変数 説明
ACKCODE アラートを扱っている"cookie"
PAGE ページ名でマッチするルール。これはbb-hostsの"page"、"subpage"、"subparent"キーワードの名前です。
EXPAGE ページ名で除外するルール。
HOST ホスト名でマッチするルール。
EXHOST ホスト名で除外するルール。
SERVICE サービス名でマッチするルール。
EXSERVIC サービス名で除外するルール。
COLOR 色でマッチするルール。"red"、 "yellow"、 "purple"を指定できます。
TIME 時間でマッチするルール。これはbb-hostsのDOWNTIME時間詳細として特定されます(訳注:?)。(bb-hosts(5)を参照)
DURATION 最後に起きたイベントからの時間でマッチするルール。例:DURATION>10m (10分以上続いた場合)、DURATION<2h(最初の2時間だけアラートを送ります)。単位は、'm'、'h'、'd'を、それぞれ分、時間、日として利用でき、明示されていない場合は分です。
UNMATCHED 受取人のこのキーワードは、他のアラートが送られず、このアラートだけが送られることを意味します(訳注:?)。たとえば、いくつかのサービスを特定の人に送りたい場合に使うことができます。UNMATCHEDキーワードのある他の誰にも送られなかったアラートを受け取る受取人を加えることもできます。すべてのアラートを受け取る受取人を作って、hobbit-alerts.cfgファイルの最後にUNMATCHEDキーワードのある受取人を作ることもできます。(訳注:覚え書き:意味がわからないので、試してみること。)
RECOVERED アラート状態が復旧したときにマッチするルール。
NOTICE メッセージが"notify"となった場合にマッチするルール。ホストかテストを無効にするか有効にするかしたときに、このメッセージが送られます。(訳注:?)。

受取人を設定するキーワード
環境変数 説明
MAIL メールを受け取る受取人。これは一つのパラメータ(メールアドレス)を取ります。
SCRIPT スクリプトを実行する受取人。これは二つのパラメータ(スクリプトのファイル名と、スクリプトに渡される受取人(訳注:RECIPIENT?))
IGNORE アラートを送らない受取人。Hobbitは受取人を捜さないようになります。下の例を参照してください。
FORMAT アラートのテキストメッセージのフォーマット。デフォルトは"TEXT"(メールでのアラートに適している)です。"PLAIN"はステータスページへのリンクが含まれないことを除いてTEXTと同じです。"SMS"はSMS用のサブジェクトのない短いメッセージです。"SCRIPT"はスクリプト用の要約されたメッセージテンプレートです。
REPEAT アラートを繰り返す頻度。DURATION設定と共にして指定されます。単位は'm'、'h'、'd'で指定でき、明示されない場合は分です。
STOP デフォルトで、hobbitd_alertはアラートを扱うときにhobbit-alerts.cfgファイルのすべての有効な受取人を見ます。もし特定の受取人がアラートを受け取って停止したいのであれば、STOPキーワードをこの受取人に追加してください。これはもっと多くの受取人を捜すのを停止します。

スクリプトに渡すすべての環境変数
環境変数 説明
ACKCODE アラートを扱っている"cookie"
BBALPHAMSG ステータスログのすべてのテキスト
BBCOLORLEVEL ステータスの現在の色
BBHOSTNAME アラートを扱っているホスト名
BBHOSTSVC アラートのHOSTNAME、SERVIC
BBHOSTSVCCOMMAS BBHOSTSVC、しかしHOSTNAMEはカンマで区切られている
BBSVCNAME アラートを扱っているサービス名
BBSVCNUM サービスの番号コード、SVCCODES定義から
BBNUMERIC BBSVCNUM、 MACHIP、ACKCODEによって作られる22文字の数値
DOWNSECS サービスがダウンしている秒数
DOWNSECSMSG サービスが復旧したときの、保持しているテキスト"Event duration : N"のNのダウンした秒の値
MACHIP 問題が起きているホストのIPアドレス
RECOVERED サービスが復旧していれば"1"
RCPT 受取人、SCRIPTエントリからの


●WindowsへのXymon(旧Hobbit)クライアントの設置

 bb-hosts.cfgに監視対象マシンの”NETBIOSコンピュータ名”と”IPアドレス”を追加します。
192.168.0.4   xxx      # dns ldap ssh http://xxx.server.co.jp/
 次に「hobbit-clients.cfg」を編集します。
HOST=xxx #Windows Server 2003
#        LOAD 80 90 # Load threholds are in %
#        DISK D 50 55 # Can be harddrive or mount points
#        DISK InetPub 30 35
#        MEMPHYS 90 101
#        MEMSWAP 90 95
#        MEMACT  90 97
#        PORT "LOCAL=%([.:]80)$" state=LISTENING TEXT=http
#        PROC BBWin.exe 1 1
#        PROC svchost.exe 3 4
#        LOG %.*  %.*error.* COLOR=yellow
#        SVC MSSQLSERVER startup=automatic status=started
 設定ファイルを読み込ませます。
# service xymon reload
 Windows用クライアント(bbwin)をダウンロードし、インストールします。
 [BBWin Root]/etc/BBWin.cfgを編集します。HobbitサーバのIPアドレス、ポート(デフォルトの1984使用ならば指定不要)を指定します。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<bbwin>
	<setting name="bbdisplay" value="192.168.0.1" />
	<setting name="bbdisplay" value="192.168.0.2" /> ← 監視サーバが複数ある場合
	<!-- <setting name="bbdisplay" value="yoursecondbbdisplay:port" />-->
 Windowsサービス「Big Brother Hobbit Client」を開始します。
 閾値等の制御は、hobbit-clients.cfgではなくBBWin.cfgで行います。

 「memory」の閾値を下記の通りデフォルトから変更しています。
<memory>
	<!-- If true、 the agent  will always report with green status -->
	<setting name="alwaysgreen" value="false" />
	<setting name="physical" warnlevel="90" paniclevel="98" />
	<setting name="page" warnlevel="85" paniclevel="90" />
	<setting name="virtual" warnlevel="85" paniclevel="90" />
</memory>
 「msgs」にはエラーとして頻繁に発生するイベントに対して、対策として以下の項目を追記しました。
 また、イベントビューアの「アプリケーション」及び「システム」の警告表示(type設定ではwarning)をデフォルトの1時間から30分に変更しました。
<msgs>
				:
	<match logfile="Application" type="warning" alarmcolor="yellow" delay="30m" />
	<match logfile="System" type="warning" alarmcolor="yellow" delay="30m" />
				:
	<ignore logfile="Application" source="Apcupsd" />
	<ignore logfile="Application" source="sshd" />
	<ignore logfile="Application" source="WinVNC4" />
</msgs>
  • APCUPSD対策
     Windows Server 2003にApcupsd(クライアント)をインストールしています。UPSの動作をネットワーク越しに連携させているのですが、頻繁に「Communications with UPS lost..」と発生するため追記しました。
  • WinVNC4対策
     Windows Server 2003にWinVNC4をインストールしています。bb-hosts.cfgの設定VNCサービスの監視を設定すると「Connections: blacklisted: 1.0.0.5」のエラーが出力されてしまうため追記しました。
  • OPENSSH for Windows対策
     Windows Server 2003にOPENSSH for Windowsをインストールしています。「fatal: Read from socket failed: Connection aborted.」がたまに発生するので、ignoreで除外した方がいいかもしれない。
  • Event ID 3、4、8 Source TermServDevices対策
    yellow system: warning - 2010/01/28 09:38:07 - Print (3) - NT AUTHORITY\SYSTEM 
     "プリンタ (WINXPVM からの) Microsoft XPS Document Writer が削除されました。"
    yellow system: warning - 2010/01/28 09:38:06 - Print (4) - NT AUTHORITY\SYSTEM 
     "プリンタ (WINXPVM からの) Microsoft XPS Document Writer の削除は保留されています。"
    yellow system: warning - 2010/01/28 09:38:06 - Print (8) - NT AUTHORITY\SYSTEM 
     "プリンタ (WINXPVM からの) Microsoft XPS Document Writer のすべての印刷ジョブが削除されました。"
    
     リモートデスクトップ接続時に、[ローカルリソース]タブ−[ローカルデバイスとリソース]で[プリンタ]と[クリップボード]を両方ともチェックを入れた状態である場合、上記のようなエラーが発生する。
  • Event ID 1111 Source TermServDevices対策
     [Terminal Service Configuration]を開く → 左ペインの[Connections]を選択 → [RDP-Tcp]を右クリックして[Properties]を開く → [Client Settings]タブを開く → [Windows printer mapping]にチェックを入れます。
     以上です。やはり不要なサービスはすべて停止するに限ります。サーバの負荷を軽減し、セキュリティの強化にもつながります。皆さんのXPやVistaでも不要なサービスは動いていませんか?次のサイトが役に立つはずです。確認してみてください。
     http://www.jasonn.com/turning_off_unnecessary_services_on_windows_xp
     http://www.marksanborn.net/howto/turn-off-unnecessary-windows-services/
     http://blogs.techrepublic.com.com/security/?p=354
  • Event ID 213 Source LicenseService対策
     ADがWindows2003でドメインに参加するクライアントがWindows2000Serverの時に発生するようです。とりあえずの対処方法は、ドメインに参加するWindows2000ServerのLisenceLoggingServiceを停止すればエラーは出なくなります。
  • Event ID 1517 Userenv対策
     プロファイルのアンロードに関する問題のトラブルシューティングを参照しました。
  • 「SYMANTEC TAMPER PROTECTION ALERT」対策
     上記の「Event ID 1517 Userenv対策」によりインストールしたuphcleanにより、「SYMANTEC TAMPER PROTECTION ALERT」がアプリケーションエラー(警告)として出力されるようになってしまいました。内容は以下のとおりです。
    Target: C:\Program Files\Symantec\Symantec Endpoint Protection\Rtvscan.exe
    Event Info:  停止 スレッド
    Action Taken:  ログ記録
    Actor Process:  C:\Program Files\UPHClean\uphclean.exe (PID 2624)
    
     この対策として該当イベントIDを無視するように設定しました。
    <msgs>
    				:
    	<ignore logfile="Application" eventid="45" />
    </msgs>
    
  • 「リダイレクタは接続の種類を判断できませんでした」対策
  • イベント ID : 3019
    ソース : MRxSmb
    説明 : リダイレクタは接続の種類を判断できませんでした。
    
     エラー メッセージ : "リダイレクタは接続の種類を判断できませんでした" によると、「このエラー メッセージは通知のみを目的としています。無視しても安全です。 」ということらしいので、無視する設定にしました。
    <msgs>
    				:
    	<ignore logfile="System" eventid="3019" />
    </msgs>
    
 「procs」では、監視するため下記を追記しました。
<procs>
				:
	<setting name="apcupsd.exe" rule="=1" comment="Apcupsd UPS Monitor" />
	<setting name="BBWin.exe" rule="=1" comment="Big Brother Hobbit Client" />
	<setting name="dice.exe" rule="=1" comment="DiCE DynamicDNS Client Service" />
	<setting name="dns.exe" rule="=1" comment="DNS Server" />
	<setting name="lsass.exe" rule="=1" comment="Net Logon" />
	<setting name="Rtvscan.exe" rule="=1" comment="Symantec Endpoint Protection" />
	<setting name="SemSvc.exe" rule="=1" comment="Symantec Endpoint Protection Manager" />
	<setting name="sqlservr.exe" rule="=1" comment="Windows Internal Database (MICROSOFT##SSEE)" />
	<setting name="WsusService.exe" rule="=1" comment="Update Services" />
</procs>
 「svcs」では、監視するため下記を追記しました。
<svcs>
				:
	<setting name="Automatic Updates" value="started" autoreset="true" alarmcolor="red" />
	<setting name="Apcupsd UPS Monitor" value="false" />
	<setting name="Big Brother Hobbit Client" value="false" />
	<setting name="DHCP Server" value="false" alarmcolor="red" />
	<setting name="DiCE DynamicDNS Client Service" value="false" alarmcolor="red" />
	<setting name="DNS Server" value="false" alarmcolor="red" />
	<setting name="Kerberos Key Distribution Center" value="false" alarmcolor="red" />
	<setting name="Net Logon" value="false" alarmcolor="red" />
	<setting name="OpenSSH Server" value="false" />
	<setting name="Symantec Embedded database" value="false" alarmcolor="red" />
	<setting name="Symantec Endpoint Protection" value="false" alarmcolor="red" />
	<setting name="Symantec Endpoint Protection Manager" value="false" alarmcolor="red" />
	<setting name="Symantec Event Manager" value="false" alarmcolor="red" />
	<setting name="Symantec Management Client" value="false" alarmcolor="red" />
	<setting name="Update Services" value="false" alarmcolor="red" />
	<setting name="VNC Server Version 4" value="false" />
	<setting name="Windows Internet Name Service (WINS)" value="false" />
</svcs>

●文字化け対策

 Windows用のXymon(旧Hobbit)クライアントをインストール後、注意や警告で報告されるイベントログ表示(msgs)が文字化けしてしまう。
 その対策として、installdir/server/etc/hobbitserver.cfgを下記の通り編集しました。
# HTML content
HTMLCONTENTTYPE="text/html; charset=shift-jis"

●iconの意味は

 各アイコンの意味はこちらを参照してください。

●Xymon(旧Hobbit)で追加したサービスを取り消すには

 bb-hostsで監視対象サービスをテストで色々設定してしまい、Web画面上から取り除く場合、以下の方法により解決しました。
 下記は、ホスト名www.abc.co.jpから「bbd」を取り除く場合の方法です。
 まず、installdir/server/etc/bb-hostsで「bbd」を削除します。
 次に「bb」コマンドを実行します。
# installdir/server/bin/bb 127.0.0.1 "drop www.abc.co.jp bbd"

例:/home/xymonにインストールした場合
# /home/xymon/server/bin/bb 127.0.0.1 "drop www.abc.co.jp bbd"
 自己環境に合わせて「www.abc.co.jp」、「bbd」の部分を変更します。
 これでも取り除くことができない場合は、下記を実行します。
# service xymon restart
# service httpd reload

●Fedora 11からFedora 12にアップグレードしたら一部のアイコンが紫色になった

 Fedora 11からFedora 12にアップグレードしたところ、xymon用監視ページのアイコンが正常にもかかわらず紫色のアイコンで表示されるようになってしまった。
 xymonはソースからインストールしていたので、アップグレードしたのだから再インストールしないとダメなのであろう。
 いろいろ設定ファイルも変わっているので、今回はconfigureは行わず、make、make installを実行しました。
 ところが、make時に「libssl.so.8」、「libcrypto.so.8」が無いと表示されました。
 確認したところ、それぞれ「libssl.so.10」、「libcrypto.so.10」にバージョンアップされていました。
 仕方がないので、下記のようにリンクを張ることにより対処することにしました。
ln -s /usr/lib/libssl.so.10 /usr/lib/libssl.so.8
ln -s /usr/lib/libcrypto.so.10 /usr/lib/libcrypto.so.8
 再度、makeすると問題なく終了したので、引き続きmake installを実行しました。
 xymonを再起動したところ、紫色のアイコンは元の緑色のアイコンに戻りました。

●bb-hostsとresolv.confの関係

 Xymonのメイン設定ファイルであるbb-hostsでホスト名で記載した場合とFQDNで記載した場合で、resolv.confのdomainオプション、searchオプションにより期待どおりに動作しない場合があります。
 私のサーバでは、bb-hostsでホスト名で記載し、かつ、resolv.confでdomainオプションを指定するとサービス監視がうまく動作しませんでした。
 そこでいろいろやってみた結果、下記のように設定するとサービス監視を期待どおりにできるようになりました。
 ・bb-hostsでホスト名、かつ、resolv.confでsearchオプションを指定
 ・bb-hostsでFQDN、かつ、resolv.confでdomainオプションを指定