SmokePing – About SmokePing
http://oss.oetiker.ch/smokeping/
Smokepingは、ネットワークのレイテンシ(遅延、という和訳が適切かどうか分かりませんが、そのように表現されることもあると思います)を視覚的に表示するためのツールです。オープンソースで公開されており、作者は MRTG や RRDtool でおなじみTobias Oetiker氏。
これが Smokeping の画面。特定ホストに対する PING の状況が視覚化されています。”Smoke”という名の通り、値の幅を視覚化できるのが、他のツールとの大きな違いです。
Smokeping には、次のような特長があります。
- レイテンシの視覚化
- 動的なグラフの展開可能
- 幅広いレイテンシの視覚化を行うプラグイン(HTTPやDNSにも対応)
- 高度にカスタマイズ可能なアラート機能
言語自体は Perl で記述されていて、公式サイトの説明では色々な事が出来るようです。
◆導入経緯
とあるネットワークで、不定期に遅延が発生している「らしい」とう事象。時たまアラートがあがることもあるのだが、見かけ上は何も問題が無い「らしい」所うっきょう(;´∀`) しかし、放っておくと、何かのトラブルに陥るかもしれないし、各種のアラーティングでは、閾値以下…。
という所、ググッて見つけたのが Smokeping 。これを使えば、結構、細かく ping の状況を視覚化出来るとサイトに書いてある。で、実際に試してみた結果がこちらです。今回は、実際に1分間隔で ping の状況をグラフ化する所まで、試してみました。
◆導入方法
使うためには、ウェブサーバが動いている鯖で、ソースからコンパイル&設定を行います。なお、以下手順(私の環境)は Red Hat Enterprise Linux 5 ですが、CentOS や Debian 等々、同じような方法でインストールできると思います。なお、インストール手順詳細は、オフィシャルのドキュメントが参考になります。
まずは、ソースの入手と展開です。
# cd /usr/local/src/ # wget http://oss.oetiker.ch/smokeping/pub/smokeping-2.6.8.tar.gz # tar xvfz smokeping-2.6.8 # cd smokeping-2.6.8
次に、Perl のモジュールをセットアップします。
# ./setup/build-perl-modules.sh /opt/smokeping/thirdparty
もしかしたら、環境によっては Perl のモジュールはセットアップ不要かもしれません。
あとは、configure です。/opt/smokeping にインストールします。
# ./configure --prefix=/opt/smokeping # gmake install
lsでディレクトリをひらくと、必要なファイル群が展開されていることが分かります。
# ll /opt/smokeping/ 合計 24 drwxr-xr-x 2 root root 4096 4月 23 13:10 bin drwxr-xr-x 3 root root 4096 4月 23 13:11 etc drwxr-xr-x 3 root root 4096 4月 23 13:11 htdocs drwxr-xr-x 3 root root 4096 4月 23 13:11 lib drwxr-xr-x 3 root root 4096 4月 23 13:11 share drwxr-xr-x 6 root root 4096 4月 23 13:08 thirdparty
次に、fping をセットアップします。Smokeping はfpingと連動するため、もし入っていなければセットアップします。EPEL のパッケージで公開されているので、セットアップは非常に簡単。
# yum install fping
これでokです。EPEL リポジトリの組み込み方は、こちらのページを参照ください。
【メモ】EPELリポジトリをRed Hat Enterprise Linuxで使うには | Pocketstudio.jp log3
http://pocketstudio.jp/log3/2012/04/09/how_to_use_epel_repository_on_rhel/
◆初期設定
インストールが終われば、あとは設定ファイルの設置、Web サーバから見えるようにする設定、そして smokeping デーモンの起動です。
まずはsmokepingの設定ファイルです。「/opt/smokeping/etc/config」に設定ファイルを置きます。/opt/smokeping/etc/config/example/ のサンプルや、サイトの例を参考に、自分の場合は、次のようにしました。(変更箇所が青字です)
その前に、サンプル用の設定ファイル(config.dist)をコピーし、必要情報を書き換えます。
# cd /opt/smokeping/etc # cp config.dist config
設定ファイルを編集します。
# vi config
*** General *** owner = Masahito Zembutsu # 管理者の名前。Smokepingトップページに出ます contact = zem@pocketstudio.jp # 管理者のアドレス mailhost = localhost sendmail = /usr/sbin/sendmail # NOTE: do not put the Image Cache below cgi-bin # since all files under cgi-bin will be executed ... this is not # good for images. imgcache = /opt/smokeping/cache imgurl = cache datadir = /opt/smokeping/data piddir = /opt/smokeping/var cgiurl = http://example.jp/smokeping/smokeping.cgi # ブラウザ上からのURL smokemail = /opt/smokeping/etc/smokemail.dist tmail = /opt/smokeping/etc/tmail.dist # specify this to get syslog logging syslogfacility = local0 # each probe is now run in its own process # disable this to revert to the old behaviour # concurrentprobes = no *** Alerts *** to = zem@pocketstudio.jp # アラート用の通知先 from = zem@pocketstudio.jp # アラート用の From +someloss type = loss # in percent pattern = >0%,*12*,>0%,*12*,>0% comment = loss 3 times in a row *** Database *** #step = 300 step = 60 # 一分間隔 pings = 20 # consfn mrhb steps total AVERAGE 0.5 1 1008 AVERAGE 0.5 12 4320 MIN 0.5 12 4320 MAX 0.5 12 4320 AVERAGE 0.5 144 720 MAX 0.5 144 720 MIN 0.5 144 720 *** Presentation *** template = /opt/smokeping/etc/basepage.html.dist + charts menu = Charts title = The most interesting destinations ++ stddev sorter = StdDev(entries=>4) title = Top Standard Deviation menu = Std Deviation format = Standard Deviation %f ++ max sorter = Max(entries=>5) title = Top Max Roundtrip Time menu = by Max format = Max Roundtrip Time %f seconds ++ loss sorter = Loss(entries=>5) title = Top Packet Loss menu = Loss format = Packets Lost %f ++ median sorter = Median(entries=>5) title = Top Median Roundtrip Time menu = by Median format = Median RTT %f seconds + overview width = 600 height = 50 range = 10h + detail width = 600 height = 200 unison_tolerance = 2 "Last 3 Hours" 3h "Last 30 Hours" 30h "Last 10 Days" 10d "Last 400 Days" 400d #+ hierarchies #++ owner #title = Host Owner #++ location #title = Location *** Probes *** + FPing binary = /usr/sbin/fping *** Slaves *** secrets=/opt/smokeping/etc/smokeping_secrets.dist +boomer display_name=boomer color=0000ff +slave2 display_name=another color=00ff00 *** Targets *** probe = FPing menu = Top title = Network Latency Grapher remark = Welcome to this SmokePing website. + mysite1 menu = Site 1 title = Hosts in Site 1 ++ node1 # 以下ping対象ノード 環境に合わせ書き換えてください host = node1.pocketstudio.net ++ node2 host = node2.pocketstudio.net ++ node3 host = node3.pocketstudio.net
ほとんどデフォルトのままですが、監視の時間間隔をデフォルトの300秒(5分)から60秒(1分)に変えています。これは、より細かなネットワークの情報が欲しかったからです。
設定ファイルの次は、Web インターフェース(Webから見えるところ)を設定します。/opt/smokeping/htdocs がウェブから見えるべき場所です。とある環境では、そのままドキュメントルート直下におきました。
# ln -s /opt/smokeping/htdocs/ /var/www/html/smokeping # mv /var/www/html/smokeping/smokeping.fcgi.dist /var/www/html/smokeping/smokeping.cgi # chmod 755 /var/www/html/smokeping/smokeping.cgi
※fcgi環境が入っていないとエラーになるかもしれません。その場合は、必要なモジュール・パッケージをインストールください。
※自分は、この直後ハマりました。なぜか画面は次のようなエラーが。
Software error: ERROR: /opt/smokeping/etc/config, line 10: Directory '/opt/smokeping/cache' does not exist For help, please send mail to the webmaster (root@xxxx, giving this error message and the time and date of the error.
原因は、見ての通り、「/opt/smokeping/cache」ディレクトリが無いよとの事。そういえば config ファイルで指定したディレクトリを作成していませんでした。ディレクトリ作成後も、エラーが表示されます。
ERROR: /opt/smokeping/etc/config, line 111: File '/opt/smokeping/etc/smokeping_secrets.dist' is world-readable or writable, refusing it
まだ足りないところがありました。最終的に、次のように対処。
# mkdir /opt/smokeping/cache # mkdir /opt/smokeping/data # mkdir /opt/smokeping/var # chmod 640 ./smokeping_secrets.dist # chown -R apache.apache /opt/smokeping/cache/ /opt/smokeping/data/ /opt/smokeping/var # ln -s /opt/smokeping/cache /var/www/html/smokeping
※ chown の所有者およびグループが apache になっていますが(Red Hat のデフォルト設定)、Web サーバが動作するユーザ権限に書き換えてください。
最後に smokeping デーモンの起動です。
/opt/smokeping/bin/smokeping --config=/opt/smokeping/etc/config --logfile=smoke.log
正常に起動すると 、次のようにデーモンが立ち上がっているのが見えると思います。
# ps ax | grep smoke 18938 pts/0 S+ 0:00 grep smoke 28517 ? Ss 0:00 /opt/smokeping/bin/smokeping [FPing]
ちなみに、/var/log/messages にも、起動時の記録が残ります。もし正常動作しない時は、ログのチェックが有効でしょう。
Apr 23 14:20:08 sv smokeping[28434]: Starting syslog logging Apr 23 14:20:08 sv smokeping[28517]: Smokeping version 2.006008 successfully launched. Apr 23 14:20:08 sv smokeping[28517]: Not entering multiprocess mode for just a single probe.
あとは、しばらく待てば、グラフがアップデートされます。
ブラウザから http://URL/smokeping/smokeping.cgi にアクセスすると、画像が見えます。
この画面を更にクリックすると、特定のホストに関するグラフが拡大できます。
なお、グラフの上をクリック&ドラッグすると、その区間だけ拡大表示することもできます。
今の所まだPingしか試していませんが、色々応用が利きそうです。特に、HTTPの応答時間の監視や、DNSサーバの応答時間測定、その他なんらかのパラメータをグラフ化したい時には役立つのじゃ無いでしょうか( ´∀`)
Reference:
- SmokePing – About SmokePing
http://oss.oetiker.ch/smokeping/
先駆者のみなさん(ググッたら結構ありますね):
- SmokePing – PukiWiki Plus!
http://baalzephon.dyndns.org/tech/index.php?SmokePing - サイオンコミュニケーションズ株式会社 第1回 状態監視ツール(smokeping)構築ガイド
http://www.syon.co.jp/syontech/tech001.html - まだある!便利ツール – プロが愛用するネット管理のフリー・ツール:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20071002/283517/ - SmokePingのインストール – maruko2 Note.
http://www.maruko2.com/mw/SmokePing%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB - ず’s – smokeping
http://wiliki.zukeran.org/index.cgi?smokeping