ファイヤープロジェクト
Spongのインストールと基本設定
2004-12-23T21:00+09:00   matsu
ネットワーク監視ツールSpongのインストールと基本的な設定を調査してみた.
SpongはSNMPによらない,TCPベースのシンプルなネットワーク監視ツールである.以下のようなことができる.
  • pingによる死活監視.
  • http,ssh,ntpなど,各種ネットワークサービスの監視.
  • cpu,disk,memory使用率の監視.
$ apt-cache search spong
とすると,以下の4つのパッケージが出て来た(※).
spong-client
クライアントプログラム.
spong-server
サーバプログラム.spong-clientは各監視対象のデータを収集し,spong-serverに渡す.
spong-www
WEBインタフェースプログラム.
spong-common
共通ライブラリ
※ 2004/12/19 Debian GNU/Linux unstable
まず監視サーバにて以下を実行する.
# apt-get install spong-server
すると,spong-commonの設定情報として,spong-serverのサーバ名を聞かれるので入力する.インストールの最後に以下が出力された.
Modify /etc/default/spong-server to start the spong daemon upon startup
従う./etc/default/spong-serverは
# Change the below to 1 if you want to run spong-server
run_spong=0
となっているので,run_spongの値を1に修正する.
run_spong=1
起動.
# /etc/init.d/spong-server start
まず監視対象サーバにて以下を実行する.
# apt-get install spong-client
やはり,spong-commonの設定情報として,spong-serverのサーバ名を聞かれるので入力する.インストールの最後のメッセージを見ると,以下が分かる.
  1. 設定ファイル
    /etc/default/spong-client
    
    にて,spong-client,spong-networkそれぞれを起動するか否かの設定ができる.
    $ cat /etc/default/spong-client 
    # Change the below to 1 if you want to run spong-client/-network
    run_client=1
    run_network=0
    
    spong-serverの場合と同様に,起動したければ値を1に変更する.デフォルトではspong-clientのみ起動するようになっている.
  2. spong-clientはデフォルトでは,ディスク空容量,ロードアベレージ,syslog,klog,cron実行状況のみチェックする.
  3. チェック項目を修正するには,
    /etc/spong/
    
    配下の設定ファイルを修正する.設定の詳細については後述.
まずapacheをインストールする.詳細は割愛.次に監視サーバにて以下を実行する.
# apt-get install spong-server
するといくつか質問される.
  • spong-wwwにて監視情報をグラフ表示できるが,そのためにはspong-rrdスクリプトを実行する必要がある.それをインストールするかどうかを聞かれるので,Yesと答える.
  • apacheをインストール済だと,それを検知して,spong-wwwのためapacheの設定を更新してよいか聞かれる.恐ければバックアップをとってからYesとする.
....なんか怒られた.
Setting up spong-www (2.7.7-7) ...
cp: `/usr/share/spong/Spong/plugins': specified destination directory does not exist
Try `cp --help' for more information.
こんな感じで対応できるだろうか.
# mkdir /usr/share/spong/Spong/plugins
# apt-get install spong-www
...できた?apacheの設定を確認すると,/etc/apache/httpd.confの末尾に
Include /etc/spong/apache.conf
が追記されている.apacheを再起動して確認してみる.
http://localhost/spong/
ページが表示されればOK(※).
※ 現時点ではspong-serverに監視対象のサーバを登録していないので,つまらない表示になっている.
現在の状態では,spong-clientを起動したものの,サーバ側で設定していないので,spong-serverがエラーログを吐いている.
Sun Dec 19 17:49:18 2004 Error: save_status: undefined host [spong-client.example.com]
spong-server側で監視対象の設定を追加していく(※).まず,設定ファイルは
/etc/spong/spong.hosts
である.この設定ファイルでは主に以下の2種類の設定を行う.
  • システムの関係者と,その人への連絡方法
  • モニタリング対象のシステムと監視内容
設定ファイルはPerl文法,特にハッシュの定義に従う.システムの関係者の設定はデフォルトでは以下のようになっていた.
%HUMANS = (
 'root' =>    { name  => 'The local super-user',
                email => 'root@localhost' },
);
ハッシュのハッシュである.追加すると,以下のようになる.
%HUMANS = (
 'root' =>    { name  => 'The local super-user',
                email => 'root@localhost' },
 'hoge' =>   { name  => 'hoge',
                email => 'hoge@example.com' },
);
内側のハッシュのキーには以下がある.
name
名前.必須.
email
e-mailアドレス
skytel
skytelページャーの番号
alltelsms
Slltel Communications社のSMSサービス(?)の電話番号.
teletouch
teletouchページャーの番号
teletouch_short
teletouchページャー(small alpha pagers)の番号
group
該当エントリをグループとして登録する際の,グループメンバーのキー.すなわち連絡先グループを設定する際に使用する.以下にhoge,fugaをメンバとするグループadminsを設定する例を示す.
%HUMANS = (
  'hoge'   => { name => 'Hoge', email => 'hoge@example.com', },
  'fuga'   => { name => 'Fuga', email => 'fuga@example.com', }
  'admins' => { name => 'Admins Group', group => 'hoge,fuga' },
);
nameのみ必須である.また,残りのうちemail,group以外は日本では普通使用しないと思う. 監視対象もまた,ハッシュのハッシュである.デフォルトでは監視対象はない.
%HOSTS = ( # Leave this alone on this line
);
これに以下のように追加する.
%HOSTS = ( # Leave this alone on this line
 'hoge.example.com' => { services => 'ftp smtp http',
                                           contact  => 'root' },
);
内側のハッシュのキーには以下がある.
services
ホスト上で稼働しているネットワークサービス.必須項目.複数ある場合は空白区切りで指定する.デフォルトでサポートされているのは以下.
  • dns
  • ftp
  • smtp
  • http
  • imap
  • pop3
  • nntp
  • nfs
  • ntp
  • ssh
プラグインを開発することで,どんどん拡張できる.%HOSTSに登録されたホストは自動的にpingでネットワーク接続確認が行われるが,servicesにnopingというサービスを設定することで,それをスキップするように設定できる.サービス名の末尾に:をつけると,該当サービスのチェックが失敗した後,それ以降のサービスのチェックが行われない.例えば以下の場合,pingチェックに失敗するとhttpのチェックを行わない.
%HOSTS = ( # Leave this alone on this line
 'hoge.example.com' => { services => 'ping: http' },
);
contact
該当ホストの担当者の連絡先.%HUMANSのエントリのキーを指定する.
down | down:services
運用上,サーバ(後者の指定方法(down:services)の場合は特定のサービス)がダウンすると分かっている時間帯を設定する.設定しておくと該当時間にサーバ(あるいは特定のサービス)がダウンしても問題として認識されない.設定値は配列である([]で囲み,要素はカンマで区切る).時刻は以下のフォーマットで指定する.
d:hh:mm-hh:mm
頭のdは曜日(0から6で0は日曜,6は土曜)で*を指定すると毎日となる.残りの二つのhh:mmは(ダウンの)開始時刻と終了時刻である.hhは24時間で指定する.以下に例を示す.
%HOSTS = ( # Leave this alone on this line
           'hoge.example.com' => { services => 'ftp smtp http',
            down => [ "*:05:30-06:30", "0:00:00-04:00" ] },
);
ip_addr
該当ホストが複数のネットワークインタフェースを持っているときに設定する.設定値は配列である([]で囲み,要素はカンマで区切る).
%HOSTS = ( # Leave this alone on this line
 'hoge.example.com' => { services => 'ftp smtp http',
                                           ip_addr => [ "123.45.67", "123.45.68" ],
                                           contact  => 'root' },
);
skip_network_checks
ネットワークチェックのスイッチ.0はチェックする(スキップしない),1はチェックしない(スキップする).spong-clientからのステータス更新は受け付けるホスト名やネットワーク構成の一時的な構成変更に対応するのに便利である.
servicesのみが必須である.
※ 本節で説明する
/etc/spong/spong.hosts
及び次節で説明する
/etc/spong/spong.groups
は,spong-serverにて設定すればよいと思う(spong-client側にも同名のファイルがあるが設定は不要...だと思う).
先述の
/etc/spong/spong.hosts
にて設定した監視対象をグルーピングすることができる.設定ファイルは
/etc/spong/spong.groups
この設定ファイルもまた,Perl文法にしたがう.デフォルトでは以下のように,全ホスト(監視対象)を含むグループが記述されている.
%GROUPS = (
 'all' =>   { name    => 'All Systems',
              summary => "This groups contains all hosts monitored by spong" },
);
やはりハッシュのハッシュである.%HOSTSの場合と同様にエントリを追加していく.
%GROUPS = (
 'all' =>   { name    => 'All Systems',
              summary => "This groups contains all hosts monitored by spong" },

 'mytargets' => { name    => "mytargets",
                  summary => "group setting test",
                  members => [
                    'hoge.example.com'
                  ] },
);
上記はグループmytargetsを設定している.内側のハッシュの各項目は以下.
name
グループ名
summery
サマリ
members
グループのメンバ.%HOSTSに登録した対象をホスト名(FQDN)で指定する.
compress
Webインタフェースのテーブルの見栄えの設定である.監視していないサービス欄を除去するか否か.0は除去しない.1は除去する.デフォルトは0.
display
Webインタフェースのテーブルの見栄えの設定である.グループ表示画面でグループとして表示するか否かを指定する.0は表示しない.1は表示する.デフォルトは1.
Spongを運用する際には,cronなどを使用して毎日一回spong-cleanupコマンドを実行する必要がある.これにより,spongのデータファイルの退避や,監視サービス変更などに伴うゴミファイルの削除などが行われる.
spong-wwwを使用するとWebインタフェースにて各機器の状態を監視できるが,spong-clientをインストールすることによって使用できるspongを使用して機器状態を確認することもできる.オプションによりさまざまなデータを取得できるが,そのうちのいくつかを紹介する.オプションなしで実行すると,各機器の項目毎の状態が確認できる.
# spong
---------------------------------------------------
Key: . = green,  ? = purple                  e     
     Y = yellow, R = red      p     d  h  j  m     
     B = blue,   o = clear    i  c  i  t  o  o  s  
                              n  p  s  t  b  r  s  
Host:                         g  u  k  p  s  y  h  
---------------------------------------------------
hoge.example.com              .  .  .  .  .  .  .  
fuga.example.com              .  .  .  .  .  .  .  
memobryがemoryになっているのはご愛敬.次に--briefにより,spong-serverに登録されている機器のステータス概要(問題有無レベル)が表示される.
# spong --brief
green  hoge.example.com
green  fuga.example.com
次に-hostの後にホスト(監視対象機器)を指定することで,該当ホストの詳細情報を閲覧できる.
# spong -host hoge.example.com

Services
==============================================================================
Name    Color    Updated    Summary
------- -------- ---------- --------------------------------------------------
memory  green    23:32      14% phys mem used, 6% virt mem used
jobs    green    23:32      processes ok
ping    green    23:35      ping ok
cpu     green    23:32      up 3 days, load = 0.00, 1 users, 31 jobs
disk    green    23:32      largest filesystem /boot at 9%


History
==============================================================================
Monday, 12/20/04
------------------------------------------------------------------------------
green   S 01:43  hoge    ping   ping ok
green   S 01:42  hoge    disk   largest filesystem /boot at 9%
green   S 01:42  hoge    cpu    up 2 days, load = 0.00, 1 users, 31 jobs
green   S 01:42  hoge    jobs   processes ok
green   S 01:42  hoge    memor  13% phys mem used, 6% virt mem used
matsu(C)
Since 2002
Mail to matsu