まだある!便利ツール - プロが愛用するネット管理のフリー・ツール:ITproを見てて、SmokePing というツールがあることを知りました。
Pingを飛ばしてRTT(遅延時間)をグラフ化するツールだそうです。
グラフ化するので遅延が一目でわかるのが利点のようですね。しきい値を超えるとメール通知する仕組みもあるようです。
こりゃ便利と思い、すぐに導入できると思ったのですが、案外手間取りました。
インストール対象はRedHatのクローンである CentOS5.6 です。
SmokePingはPerlアプリケーションなので、PerlとApacheが入っている必要があります。
インストール
SmokePingのソースは
公式サイトからダウンロード出来るのですが、ソースインストールは今回したくなかったので、RPMパッケージからインストールできないか調査してみました。
するとFedoraのプロジェクトにSRPMパッケージとして公開されていました。
今回は iij のFedora15ミラーサイトより SomokePing のSRPMパッケージをダウンロードしてみます。
# cd /home/hoge
※↓のURLはFedoraの最新開発バージョンによって異なるようです。http://ftp.iij.ad.jp/pub/linux/fedora/ にアクセスしてから確認したほうが無難かもしれません。
# wget http://ftp.iij.ad.jp/pub/linux/fedora/development/15/source/SRPMS/smokeping-2.4.2-12.fc15.src.rpm
# rpmbuild --rebuild smokeping-2.4.2-12.fc15.src.rpm
smokeping-2.4.2-12.fc15.src.rpm をインストール中です。
警告: InstallSourcePackage: ヘッダ V3 RSA/SHA256 signature: NOKEY, key ID 069c8460
警告: ユーザ mockbuild は存在しません - root を使用します
警告: グループ mockbuild は存在しません - root を使用します
エラー: アーカイブの伸長に失敗: ファイル /usr/src/redhat/SOURCES/README.fedora;4e03e645: cpio: MD5 チェックサムが適合しません。
エラー: smokeping-2.4.2-12.fc15.src.rpm をインストールできません。
ん?MD5のエラーになります。
その場合、
rpmbuildすると cpio: MD5 sum mismatch が出るにあるように下記のようにしてやるといいようです。
# rpm -ivh --nomd5 smokeping-2.4.2-12.fc15.src.rpm
警告: smokeping-2.4.2-12.fc15.src.rpm: ヘッダ V3 RSA/SHA256 signature: NOKEY, key ID 069c8460
1:smokeping 警告: ユーザ mockbuild は存在しません - root を使用します
警告: グループ mockbuild は存在しません - root を使用します
警告: ユーザ mockbuild は存在しません - root を使用します
警告: グループ mockbuild は存在しません - root を使用します
警告: ユーザ mockbuild は存在しません - root を使用します
# rpmbuild -ba /usr/src/redhat/SPECS/smokeping.spec
# rpm -Uvh /usr/src/redhat/RPMS/noarch/smokeping-2.4.2-12.noarch.rpm (←CentOS6.0の場合、 /root/rpmbuild/RPMS/noarch/ に出力されていました(rootユーザ))
エラー: 依存性の欠如:
rrdtool >= 1.0.33 は smokeping-2.4.2-12.noarch に必要とされています
fping >= 2.4b2 は smokeping-2.4.2-12.noarch に必要とされています
perl(Config::Grammar) は smokeping-2.4.2-12.noarch に必要とされています
perl(BER) は smokeping-2.4.2-12.noarch に必要とされています
perl(CGI::Session) は smokeping-2.4.2-12.noarch に必要とされています
perl(Net::LDAP) は smokeping-2.4.2-12.noarch に必要とされています
perl(Net::Telnet) は smokeping-2.4.2-12.noarch に必要とされています
perl(Qooxdoo::JSONRPC) は smokeping-2.4.2-12.noarch に必要とされています
perl(RRDs) は smokeping-2.4.2-12.noarch に必要とされています
perl(SNMP_Session) は smokeping-2.4.2-12.noarch に必要とされています
perl(SNMP_util) は smokeping-2.4.2-12.noarch に必要とされています
うーむ、、かなり依存パッケージが足りないようです。
ということで、
RPMforgeリポジトリ導入を参考にし、RPMforgeでインストールできるものはインストールしちゃいます。
# yum -y install yum-priorities
# vi /etc/yum.repos.d/CentOS-Base.repo
各セクションの末尾に、priority=1 を追加し上書き保存。
# wget http://apt.sw.be/RPM-GPG-KEY.dag.txt
# rpm --import RPM-GPG-KEY.dag.txt
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
# rpm -ivh rpmforge-release-0.5.2-2.el5.rf.i386.rpm
# yum -y update rpmforge-release
依存パッケージをRPMforgeよりインストール
# yum install rrdtool
# yum install fping
# yum install perl-CGI-Session.noarch
# yum install perl-LDAP.noarch
# yum install perl-Net-Telnet.noarch
# yum install perl-JSON.noarch
残りの依存パッケージはRPMforgeになかったので、SmokePingと同じく、Fedora15のSRPMパッケージを使いました。
# wget http://ftp.iij.ad.jp/pub/linux/fedora/development/15/source/SRPMS/perl-Config-Grammar-1.10-7.fc15.src.rpm
# rpm -ihv --nomd5 perl-Config-Grammar-1.10-7.fc15.src.rpm
# rpmbuild -ba /usr/src/redhat/SPECS/perl-Config-Grammar.spec
# rpm -ihv /usr/src/redhat/RPMS/noarch/perl-Config-Grammar-1.10-7.noarch.rpm
# wget http://ftp.iij.ad.jp/pub/linux/fedora/development/15/source/SRPMS/perl-Convert-BER-1.3101-8.fc15.src.rpm
# rpm -ihv --nomd5 perl-Convert-BER-1.3101-8.fc15.src.rpm
# rpmbuild -ba /usr/src/redhat/SPECS/perl-Convert-BER.spec
# rpm -ihv /usr/src/redhat/RPMS/noarch/perl-Convert-BER-1.3101-8.noarch.rpm
# wget http://ftp.iij.ad.jp/pub/linux/fedora/development/15/source/SRPMS/perl-qooxdoo-compat-0.7.3-9.fc15.src.rpm
# rpm -ihv --nomd5 perl-qooxdoo-compat-0.7.3-9.fc15.src.rpm
# rpmbuild -ba /usr/src/redhat/SPECS/perl-qooxdoo-compat.spec
# rpm -ihv /usr/src/redhat/RPMS/noarch/perl-qooxdoo-compat-0.7.3-9.noarch.rpm
# wget http://ftp.iij.ad.jp/pub/linux/fedora/development/15/source/SRPMS/perl-SNMP_Session-1.12-7.fc15.src.rpm
# rpm -ihv --nomd5 perl-SNMP_Session-1.12-7.fc15.src.rpm
# rpmbuild -ba /usr/src/redhat/SPECS/perl-SNMP_Session.spec
# rpm -ihv /usr/src/redhat/RPMS/noarch/perl-SNMP_Session-1.12-7.noarch.rpm
これで依存パッケージはが入ったので、SmokePingにインストールに再チャレンジ。
# rpm -Uvh /usr/src/redhat/RPMS/noarch/smokeping-2.4.2-12.noarch.rpm
設定
無事にインストールできたら設定を行います。
当初、httpd.confを触る必要があるのかと思ってましたが、その必要はないようです。
RPMパッケージが自動的に、/etc/httpd/conf.d/smokeping.conf という設定ファイルを作ってくれてました。
しかし、アクセス権がデフォルトでは自分自身しか無いので smokeping.conf を設定してやります。
# vi /etc/httpd/conf.d/smokeping.conf
#デフォルトでは自分自身しかアクセス出来ない
<Directory "/usr/share/smokeping" >
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
<Directory "/var/lib/smokeping" >
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
↓
#とりあえず誰でもアクセスできるようにしてみた。
<Directory "/usr/share/smokeping" >
Order allow,deny
# Deny from all
Allow from all
</Directory>
<Directory "/var/lib/smokeping" >
Order allow,deny
#Deny from all
Allow from all
</Directory>
次に、smokepingの設定をし、どのホストを監視するか設定します。
smokeping自体の設定ファイルは /etc/smokeping/config になるようです。
# vi /etc/smokeping/config
#cgiutlのホスト名を変更してやります。
cgiurl = http://localhost/smokeping/smokeping.cgi
↓
cgiurl = http://サーバホスト名/smokeping/sm.cgi
#日本語のホスト名の文字化けを解消するために文字コードを指定します。
# *** Presentation *** の後に、charset = UTF-8 を追加します。(configファイル自体もUTF-8である必要があります)
*** Presentation ***
charset = UTF-8
#各監視ホストの設定ですが、下記probe=Fping セクション内に書いてやります。
probe = FPing
menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website of Insert Company Name Here. \
Here you will learn all about the latency of our network.
#ここから↓が各監視ホストの設定です。
+dc ←監視グループ名(なんでも良い)
menu = domain controller ←ブラウザで見たときの左側のメニュー名
title = ドメインコントローラ ←ブラウザで見たときのタイトル名
++dc01 ←ホストの識別名(なんでも良い)
menu =dc01 ←ブラウザで見たときの左側のメニュー名
title=ドメコン01 ←ブラウザで見たときのタイトル名
host = 10.0.1.10 ←対象のIPアドレス
++dc02
menu = dc02
title = ドメコン02
host = 10.0.1.11
++dc03
menu = dc03
title = ドメコン03
host = 10.0.98.11
+terminal
menu = terminal
title = terminal server
++ts1
menu = ts1
title = terminal server1
host = 10.0.1.20
++ts2
menu = ts2
title = terminal server2
host = 10.0.1.21
デフォルトだと +Ping にFedoraサイトへの設定があるので、これはのけてしまっていいと思います。
なお、設定例は
公式サイトにもあるので参考にできるかもしれません。
これでApacheの再起動と、SmokePingの起動を行います。
OS起動時にも立ち上がるようにchkconfigで設定もしておきましょう。
# service httpd restart
# service smokeping start
# chkconfig smokeping on
後は、ブラウザからアクセスします。
URLは /etc/httpd/conf.d/smokeping.conf に定義してあるエイリアスになります。
デフォルトだと下記です。
http://hogehost/smokeping/sm.cgi
上記アドレスにアクセスして、下記のように表示されていればOKです。
左側のメニューから各ホストへの結果ページにアクセスできます。
Chartsメニューはサマリーのような感じで、パケットロスが多い順や、遅延が多い順に表示できるので、ここから問題がないか確認できるかもしれません。
メニューでグループを選択すると、そのグループ内の一覧が参照できます。
また、ホストを選択すると、選択したホストの期間毎の結果がわかります。

しきい値を超えた場合のメール設定とかも出来るらしいですが、今回は時間がなかったのでそこまでできませんでした。
参考:
ず's - smokeping
第1回 状態監視ツール(smokeping)構築ガイド
smokeping(その1):はいはい、備忘録ですよ。
smokepingの日本語、文字化け対策