死活監視システムを置いてみよう

Xymon

死活監視とは、サーバーやサービスが稼動しているかどうかを監視することです。

Web事業を手がけるパラファミリーにとっても死活監視は大事なこと。

今日はその死活監視をしてくれるシステム Xymon を導入します。

(今までも運用していたのですが、今日は今までと別のサーバーにもうひとつ入れます)

まず、 Xymon の公式ホームページはこちらです。

The Xymon Monitor

稼働状況を監視して、Web上でこんな感じに表示してくれるほか、異常を見つけるとメールで通知する機能もあります。

公式は日本語対応していないので判りづらい点もありますが、日本語ドキュメントを見たい人はスカイホビットさんのページが実に参考になります。

さて、まずは導入のために必要なものを揃えます。

説明によると以下のものが必要らしいです。

  • Webブラウザ

    ここを見ている貴方は既にブラウザを持っています。
  • UNIXライクなOS

    Webサーバーの多くはLinuxかBSDかSolarisかHP-UXなので大丈夫。

    Windows上で動かす方法も何かあるかもしれませんが、わたしは知りません。

    なお、インストールにroot権限が必要なので、レンタルサーバー不可。
  • 十分なシステムリソース

    監視システムはDAEMONとして常に動くので、それなりのリソースが必要です。

    といっても数MiBくらいとか言ってるので、現代のサーバーなら問題にならないと思います。

    他には一定バージョン以上のカーネルが必要とか、少々難しいことを言っていますがとりあえず気にしません。
  • Webサーバー

    Apacheを使いましょう。他のでもいけるかもしれないけど未検証。

    理論上は、メール通知機能しか使わないならWebサーバーなしでも駆動はしますが、制御も確認もできないので使いづらくなります。
  • CコンパイラとGUN make

    gccとmakeを使いましょう。

    HP-UXのユーザーはgccを使え、と書いてあるので、OSによってはバンドルのコンパイラでは駄目なようです。
  • PCRE, RRDtool, libpng, OpenSSL, OpenLDAPライブラリ

    PCRE はPerlの文法による正規表現を行うためのライブラリで、これは必須です。

    RRDtool は Xymon が監視データを保存・参照するのに使うらしく、これも必須です。

    libpng はPNG形式画像を生成するツールで、応答時間などのデータをグラフ化するのに使うようで必須です。

    OpenSSL はSSLアクセスに必要です。必須ではありませんが、これがないとhttpsサイトの監視ができません。

    OpenLDAP はLDAPサーバーへのアクセスに必要です。必須ではありませんが、LDAPサーバーを監視するのであれば必要です。
  • システムの Xymon ユーザー

    useradd xymon でさくっと作っちゃいましょう。

yum でパッケージ管理する場合、ライブラリは各パッケージの -devel とついたものを導入します。

(libpngだけはRRDtoolからアクセスする、つまりlibpng-develの必要な部分はコンパイル済みのため不要らしい)

今回の場合はライブラリがlibpngしか入ってなかったので導入します。ただしLDAPは監視する予定がないので省きます。

(青字が入力、赤字は注釈)

[root@example ~]# yum install pcre-devel rrdtool-devel openssl-devel
(yumの情報取得ステータスが表示される)

Dependencies Resolved

===============================================================================================
 Package                   Arch              Version                     Repository       Size
===============================================================================================
Installing:
 openssl-devel           x86_64           1.0.1e-16.el6_5.14           updates           1.2 M
 pcre-devel              x86_64           7.8-6.el6                    base              318 k
 rrdtool-devel           x86_64           1.3.8-6.el6                  base               28 k
(依存パッケージがある場合は続いて何か出る)
Transaction Summary
===============================================================================================
Install       3 Package(s)

Total download size: 1.5 M
Installed size: 3.2 M
Is this ok [y/N]: y
(インストールメッセージが表示される)
[root@example ~]# 


Xymon のアカウントは作らなければ存在しないはずなので、さくっと作ります。

[root@example ~]# useradd xymon
[root@example ~]# grep xymon /etc/passwd /etc/group
/etc/passwd:xymon:x:500:500::/home/xymon:/bin/bash    ←useridとgroupidはシステムによって異なる
/etc/group:xymon:x:500:
[root@example ~]# 


さて、準備が整ったので、Xymonのソースを拾ってきます。

Xymonホームページの “Where can I get Xymon ?” と書かれたあたりにあるリンクから、SourceForgeのXymonのページへと飛ぶと、Xymonのソースをダウンロードできます。

yum派の人は緑色の Download ボタンを押して、 direct link のリンクを右クリックしてURLをコピーしましょう(FireFoxの場合)。

現在の最新版は 4.3.17 のようですね。

[xymon@example ~]$ mkdir src && mv src    ←/usr/local/src などで作業するのが通例っぽいけど今回は /home/xymon/src で
[xymon@example src]$ wget "xymon-4.3.17.tar.gz"
(動作メッセージが出る)
[xymon@example src]$ ls -l
total 2732
-rw-rw-r--  1 xymon xymon 2772765 Feb 24 01:17 xymon-4.3.17.tar.gz
[xymon@example src]$ 


ダウンロードできたら展開しましょう。

[xymon@example src]$ tar xvzpf xymon-4.3.17.tar.gz
(展開するファイルの一覧が出る)
[xymon@example src]$ ls -l
total 2732
drwxrwxr-x 16 xymon xymon    4096 Jun 25 15:29 xymon-4.3.17
-rw-rw-r--  1 xymon xymon 2772765 Feb 24 01:17 xymon-4.3.17.tar.gz
[xymon@example src]$ 


configure を実行して、パラメータを設定します。

ほとんどのパラメータにはデフォルト値があるので、迷った箇所は入力しなくていい場合がほとんどです。

[xymon@example src]$ cd ./xymon-4.3.17
[xymon@example xymon4.3.17]$ ./configure

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 ...
Xymon has a built-in ping utility (xymonping)
However, it is not yet fully stable and therefore it
may be best to use the external fping utility instead.
I could not find fping on your system
Do you want to use xymonping [Y/n] ?     ←fpingとXymon自前のping、どっちを使うか
y
OK, I will use xymonping.


Checking for PCRE ...
Compiling with PCRE library works OK
Linking with PCRE library works OK


Checking for C-ARES library ...
(C-ARESのライブラリがないらしく、エラーメッセージが沢山出た)
make: *** [test-compile] Error 1
ERROR: Cannot compile using c-ares library.
The system C-ARES library is missing or not usable. I will use the version shipped with Xymon

(RRDtoolとOpenSSLライブラリに関するメッセージが出る)

Do you want to be able to test SSL-enabled services (y) ?     ←SSLの監視を有効にするか
y

(LDAPその他に関するメッセージが出る)

What userid will be running Xymon [xymon] ?     ←監視の動作するアカウント。デフォルトでいいのでそのままEnter
(enter)
Found passwd entry for user xymon:x:524:524::/home/xymon:/bin/bash


Where do you want the Xymon installation [/home/xymon] ?     ←監視システムを置くディレクトリ。デフォルトはxymonアカウントのHOME
/opt/xymon     ←ちょっと違うパスを入力してみた
WARNING: /opt/xymon does not exist.     ←ディレクトリがないと怒られた、後で作らなくちゃ


What URL will you use for the Xymon webpages [/xymon] ?     ←XymonをWeb公開するパス、デフォルトだと http://example.com/xymon といったパスになる
/     ←今回はドメインのトップに置きたいので / と入力した


Where to put the Xymon CGI scripts [/opt/xymon/cgi-bin] ?     ←CGIファイルをどこに置くか
(Note: This is the filesystem directory - we will get to the URL shortly)


What is the URL for the Xymon CGI directory [/xymon-cgi] ?     ←CGIをどういうURLで公開するか http://example.com/xymon-cgi といったパスになる
(Note: This is the URL - NOT the filesystem directory)
(enter)


(Xymon制御CGIについて、セキュリティに関する注意事項が出る)

Where to put the Xymon Administration CGI scripts [/opt/xymon/cgi-secure] ?     ←制御CGIをどこに置くか
(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] ?     ←制御CGIをどういうURLで公開するか http://example.com/xymon-seccgi といったパスになる
(Note: This is the URL - NOT the filesystem directory)
(enter)

(Xymon制御CGIについて、セキュリティに関する注意事項が出る)

(Webサーバー設定変更が必要な旨のメッセージが出る)

What group-ID does your webserver use [nobody] ?     ←Webサーバーを動かすアカウント
apache     ←yumでパッケージ管理すると、Apacheのアカウントはnobodyではなくコレになる


Where to put the Xymon logfiles [/var/log/xymon] ?     ←Xymonの動作ファイルやログファイルが置かれるパス
(enter)


What is the name of this host [example.com] ?     ←自ホスト名 デフォルト値は自動取得
xymon.example.com     ←Xymonを置くドメイン名に変えてみた


What is the IP-address of this host [127.0.0.1] ?     ←自ホストのIP
192.0.43.10     ←NIC異常も検知できるよう、変更する


Where should I install the Xymon man-pages (/usr/local/man) ?     ←Xymonのmanページをどこに置くか
(enter)

(Makefile作成に関するメッセージが出る)

Configuration complete - now run make (GNU make) to build the tools
[xymon@example xymon4.3.17]$ 


configure できたらインストールします。

[xymon@example xymon4.3.17]$ make
(makeメッセージがずらーっと出る)

Build complete.

#####################################################################
IMPORTANT: If upgrading from 4.2.x, see the docs/upgrade-to-430.txt
           file for instructions. You must run build/upgrade430.sh
           before installing the new version.
#####################################################################

Now run 'make install' as root

[xymon@example xymon4.3.17]$ su -
[xymon@example ~]# cd ~xymon/src/xymon4.3.17
[xymon@example xymon4.3.17]# make install
(makeメッセージがずらーっと出る)

Installation complete.

You must configure your webserver for the Xymon webpages and CGI-scripts.
A sample Apache configuration is in /opt/xymon/server/etc/xymon-apache.conf
If you have your Administration CGI scripts in a separate directory,
then you must also setup the password-file with the htpasswd command.

To start Xymon, as the xymon user run '/opt/xymon/server/bin/xymon.sh start'
To view the Xymon webpages, go to http://xymon.example.com
[xymon@example xymon4.3.17]# 


あ、そういえば /opt/xymon 作ってないけどインストールできた。

インストール時に作ってくれるみたいですねー。

さて、インストールしたXymonを動かしてみましょう。

[xymon@example xymon4.3.17]# exit
[xymon@example xymon4.3.17]$ /opt/xymon/server/xymon.sh
Usage: /opt/xymon/server/xymon.sh start|stop|restart|reload|status|rotate     ←デーモンの起動スクリプトのUsageみたいだなー
[xymon@example xymon4.3.17]$ /opt/xymon/server/xymon.sh status
Xymon (xymonlaunch) does not appear to be running
[xymon@example xymon4.3.17]$ /opt/xymon/server/xymon.sh start
Xymon started
[xymon@example xymon4.3.17]$ /opt/xymon/server/xymon.sh status
Xymon (xymonlaunch) running with PID 3377     ←PIDは稼動状態によって異なります
[xymon@example xymon4.3.17]$ 


おっけー、動いたよ。

そしたら最後に、稼働状況をWebで見るためApacheにサイト設定を追加します。

<VirtualHost *:443>
    ServerName        xymon.example.com
    DocumentRoot      /opt/xymon/server/www
    
    # script alias
    ScriptAlias /xymon-cgi/    "/opt/xymon/cgi-bin/"
    ScriptAlias /xymon-seccgi/ "/opt/xymon/cgi-secure/"

    # Rewrite-rules for migrating from the URL's used in Hobbit
    RewriteEngine On

    RewriteRule ^/bb.html /xymon.html [R=permanent,L]
    RewriteRule ^/bb2.html /nongreen.html [R=permanent,L]
    RewriteRule ^/bbnk.html /critical.html [R=permanent,L]

    RewriteRule ^/xymon-cgi/bb-hist.sh /xymon-cgi/history.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/bb-eventlog.sh /xymon-cgi/eventlog.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/bb-rep.sh /xymon-cgi/report.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/bb-replog.sh /xymon-cgi/reportlog.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/bb-snapshot.sh /xymon-cgi/snapshot.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/bb-findhost.sh /xymon-cgi/findhost.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/bb-csvinfo.sh /xymon-cgi/csvinfo.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/hobbitcolumn.sh /xymon-cgi/columndoc.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/bb-datepage.sh /xymon-cgi/datepage.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/hobbitgraph.sh /xymon-cgi/showgraph.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/bb-hostsvc.sh /xymon-cgi/svcstatus.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/bb-histlog.sh /xymon-cgi/historylog.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/hobbit-confreport.sh /xymon-cgi/confreport.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/hobbit-confreport-critical.sh /xymon-cgi/confreport-critical.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/hobbit-nkview.sh /xymon-cgi/criticalview.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/hobbit-certreport.sh /xymon-cgi/certreport.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/hobbit-nongreen.sh /xymon-cgi/nongreen.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/hobbit-hostgraphs.sh /xymon-cgi/hostgraphs.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/hobbit-ghosts.sh /xymon-cgi/ghostlist.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/hobbit-notifylog.sh /xymon-cgi/notifications.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/hobbit-hostlist.sh /xymon-cgi/hostlist.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/hobbit-perfdata.sh /xymon-cgi/perfdata.sh [R=permanent,L]
    RewriteRule ^/xymon-cgi/hobbit-topchanges.sh /xymon-cgi/topchanges.sh [R=permanent,L]

    RewriteRule ^/xymon-seccgi/bb-ack.sh /xymon-seccgi/acknowledge.sh [R=permanent,L]
    RewriteRule ^/xymon-seccgi/hobbit-enadis.sh /xymon-seccgi/enadis.sh [R=permanent,L]
    RewriteRule ^/xymon-seccgi/hobbit-nkedit.sh /xymon-seccgi/criticaleditor.sh [R=permanent,L]
    RewriteRule ^/xymon-seccgi/hobbit-ackinfo.sh /xymon-seccgi/ackinfo.sh [R=permanent,L]
    RewriteRule ^/xymon-seccgi/hobbit-useradm.sh /xymon-seccgi/useradm.sh [R=permanent,L]

(ほかにもSSLの設定など必要と思われるが省略)
</VirtualHost>


ちなみに、XymonではsuEXECは使うべきでないそうです。

設定を追加したらApacheに設定を読ませて……

設置したXymon

やった、できたよ!

ただし、このままだと Xymon は SNI に対応していないため、1ホストに複数のSSLサイトを収容していると正常に監視ができません。

今回 Xymon を新たに導入したのは、新サーバーに移動して SNI 対応するためなのですが、それについては次回(あれば)解説することとします。

15:20 追記

Xymon 4.3.13 からSNIにも対応済みで、4.3.14 以上では実装されてるけどデフォルトoffにしているらしいです。

4.3.13 のとき(おそらくSNI非対応のホストへのアクセスで)異常が多発したためにデフォルトoffにしたんだとか。

SNIに対応した監視をしたい場合は、監視対象設定ファイル hosts.cfg の各ホスト設定に “sni” の字を追加すればOKでした。

簡単なことやったんね~。

投稿者:

さみどり

パラファミリーの技術担当です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です