3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(ツール)ネットワーク遅延グラフツールSmokePingを入れてみた

まだある!便利ツール - プロが愛用するネット管理のフリー・ツール:ITproを見てて、SmokePing というツールがあることを知りました。

Pingを飛ばしてRTT(遅延時間)をグラフ化するツールだそうです。

グラフ化するので遅延が一目でわかるのが利点のようですね。しきい値を超えるとメール通知する仕組みもあるようです。

こりゃ便利と思い、すぐに導入できると思ったのですが、案外手間取りました。

インストール対象はRedHatのクローンである CentOS5.6 です。

SmokePingはPerlアプリケーションなので、PerlApacheが入っている必要があります。

インストール

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

#デフォルトでは自分自身しかアクセス出来ない

Order deny,allow

Deny from all

Allow from 127.0.0.1

Order deny,allow

Deny from all

Allow from 127.0.0.1

  ↓

#とりあえず誰でもアクセスできるようにしてみた。

Order allow,deny

# Deny from all

Allow from all

Order allow,deny

#Deny from all

Allow from all

次に、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

デフォルトだと +PingFedoraサイトへの設定があるので、これはのけてしまっていいと思います。

なお、設定例は公式サイトにもあるので参考にできるかもしれません。

これで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の日本語、文字化け対策