

Weathermap
はじめに
JANOG32のトラフィック情報を http://j32info.janog.gr.jp/ で公開するにあたり、 php weathermap を Cacti のプラグインとして利用しました。このページではJANOG32におけるWeathermapの活用方法をまとめました。
インストールの方法(CentOSの場合)
http://www.network-weathermap.com/manual/0.97b/pages/install-cacti-editor.html を参考にしました。
- yum install 等のコマンドで以下のソフトウェアを導入し、使用可能な状態にします。
- rrdtool
- rrdtool-php
- cacti
- apache
- php
- mysql
- net-snmp
- その他もろもろ
- php weathermapのサイトからソフトウェアを入手し、/usr/share/cacti/plugins 以下のディレクトリ(/usr/share/cacti/plugins/weathermap とします)に展開します。
- 展開したディレクトリの中にある以下のディレクトリについてはパーミッションを777にします。
- output
- configs
- editorを使う予定がある場合、editor.phpの以下部分を書き換えます。
- (前) $ENABLED=false;
- (後) $ENABLED=true;
- これで使えるようになります。
実際に使用したconfigは以下にあります。
Editor画面
Editor画面でマップの編集を行います。

- Change File : ファイルの選択に戻ります。
- Add Node : マップ上にノードを追加します。Add Nodeをクリックしてから、ノードを追加したい場所でマウスをクリックします。
- Add Link : マップ上のノードとノードをつなぎます。SW1とServerをつなぎたい場合は以下のようにします。
- Add LinkをクリックしてからSW1をクリックします。
- SW1の枠が赤くなります。そのあとにServerをクリックします。
- SW1とServerがリンクされます。
ノードをつなぐ際は、Source-Destの順につなぐようにします。また、参照するグラフはSource側を選択します。間違えると矢印の方向が逆になってしまいます。 - Position Legend : 凡例をどこに置くか設定します。
- Position Timestamp : マップ作成日時の情報をどこに置くか設定します。
- Map Properties : マップそのものの情報を設定します。
- Map Style : マップ上のフォントや矢印の形を設定します。
- Manage Colors / Manage Images : (特に使いません)
- Editor Settings : Editorの設定(今回は使っていません)
ノードの編集
ノードをクリックするとノード編集画面が表示されます。

それぞれの意味は以下の通りです。
- Position : ノードの画面上の表示位置です。X.Yでポジションを設定します。下の方にあるMoveボタンで設定することもできます(画面をクリックすることになります)。
- Internal Name : config上のノード名です。他のノードと被らないようにします。
- Label : 画面上に表示される名前です。
- Info URL : ノードをクリックしたときに表示されるURLです(必須ではありません)。
- Hover Graph URL : マウスオーバーした際に表示される画像を指定できます。グラフである必要はないです(必須ではありません)。
- Icon Filename : ノードをアイコンにしたい場合設定します。ファイルはWeathermapをインストールしたディレクトリ内にある”images”ディレクトリから指定します。
各ボタンの機能は以下の通りです。
- Move : 画面をクリックすることでノードの位置を設定できます。
- Delete : ノードを削除します。
- Clone : ノードの複製を作ります。
- Edit : configファイルの該当Node部分を直接編集します。
リンクの編集
リンク(矢印)をクリックするとリンク編集画面が表示されます。

それぞれの意味は以下の通りです。
- Maximum Bandwidth Into “ノード名” : リンクの速度(In)を設定します。
- Maximum Bandwidth Out of “ノード名” : リンクの速度(Out)を設定します。Inと同じならSame As Inのチェックボックスをクリックします。
- Data Source : 参照するRRDのファイルを指定します。”Pick from Cacti”はCactiプラグインとして使用している場合のみ表示されます。
- Link Width : リンクする線の太さを設定します。
- Info URL : 線をクリックしたときに表示されるURLです(必須ではありません)。
- Hover Graph URL : マウスオーバーした際に表示される画像を指定できます。グラフである必要はありません(必須ではありません)。
- IN / OUT Comment : (今回は使用していません)
各ボタンの機能は以下の通りです。
- Delete Link : リンクを削除します。
- Edit : configファイルの該当ノード部分を直接編集します。
- Vert/Horiz : (今回は使用していません)
- Via : ノード間を接続する際、どこを経由させるか、画面上で設定します。Viaがない場合はノード間は直線で結ばれます。今回はSW7とSW9を結ぶ2本の線のうち1本で利用しています。
JANOG32で工夫した点
今回はさくらインターネット様にご協力いただき、さくらの専用サーバサービスを活用させていただきました。ご提供いただいたサービスサーバは さくらの専用サーバ エクスプレスシリーズ です。会場内とは別の場所になるため、会場のトラフィックを取得するためには
- 専用サーバと会場をVPN接続する。
- 会場サーバからrrd等のファイルを定期的に転送する。
といった方法を取ることになります。今回は時間の関係もあり、「会場サーバからrrd等のファイルを定期的に転送する」としました。具体的には
- rsyncで会場内トラフィックデータ(rrdファイル)をsyncさせる。
- scpで「さくらの専用サーバ」のeth0のトラフィックデータを取得する。
ようにしました。
背景画像の指定
Weathermapの一つの特徴でもありますが、描画時にアイコンや背景画像を挿入することができます。背景画像を挿入することで視覚的に見やすくなるというメリットがあると考えています。
Weathermapのファイルを展開したディレクトリ内に”images”ディレクトリがあります。このディレクトリ内に背景にしたいファイル(png/jpeg等がいいと思います)を保存し、editorで指定すると描画の際に背景になります。
- editorの”Map Properties”内に”Background Image Filename”という項目があります。
- リストから保存したファイルを指定すると背景になります。
Cactiへのログインを不要にする
ノードとノードをつないでいる線の上にマウスポインターを載せるとグラフ画像が表示されます。また、線をクリックするとCactiのグラフページに遷移します。Cactiのプラグインとして利用するだけであればeditorだけですべての作業が完了します。しかし今回は以下の理由で少し工夫をしています。
- グラフを見るためにCactiにログインしてもらうことは避けたい(変にいじられても困る)
- サイトのトップ画像として表示したい
ということで、以下のようにしました
- Cactiにログインしなくてもグラフを表示させるための対応
- CactiのExport機能でHTMLとグラフを定期的に生成これは会場内サーバで行い、そのファイルをrsyncしました。
- 画像のマウスオーバー、クリックによる表示を実現するための対応
- weathermapコマンド(CUI)で定期的に画像を出力。1回だけHTMLも出力させるこのHTMLにCactiのHTMLへのリンクとマウスオーバーの情報があります
- 出力させたHTMLの情報を今回の HTML( http://j32info.janog.gr.jp/index.html )に取り込みました
なお、一部グラフの右端が幅の関係で切れてしまうという問題がありましたが、JANOG会期中に、解決策として”overlib.js”というファイルの
- ol_offsetx の値を大きくする
- ol_vautoを1にする
- ol_hpos を RIGHTからLEFTへ書き換える
事で解決するという情報をインターネットマルチフィード株式会社川上さん経由でKDDI株式会社田原さんよりいただきました。この場を借りてお礼申し上げます。
使用される帯域に合わせた表示調整
今回の会場ネットワークはバックボーン区間の速度が1Gbpsでした。しかし実際に使われる帯域はおよそ30~50Mbps程度となっているため、色があまり変わらない恐れがありました。そのため以下の対策を行いました
- リンク速度を100Mbpsとマップ上で設定した(実際は1Gbps)(EditorのMap Properties項にある) Default Link Bandwidth を100Mbpsとしています
- 表示部分について、利用帯域が低い部分での色分けを細かくした
実際の色分けの設定は以下のようにしました。
SCALE DEFAULT 0 0.5 192 192 192
SCALE DEFAULT 0.5 1 220 220 220
SCALE DEFAULT 1 1.5 140 0 255
SCALE DEFAULT 1.5 2 32 32 255
SCALE DEFAULT 2 3 0 192 255
SCALE DEFAULT 3 4 0 240 0
SCALE DEFAULT 4 7 240 240 0
SCALE DEFAULT 7 10 255 192 0
SCALE DEFAULT 10 30 255 127 0
SCALE DEFAULT 30 60 255 0 0
SCALE DEFAULT 60 100 220 20 60

参考までに、デフォルトの設定は以下のようになっています。
SCALE DEFAULT 0 0 192 192 192
SCALE DEFAULT 0 1 255 255 255
SCALE DEFAULT 1 10 140 0 255
SCALE DEFAULT 10 25 32 32 255
SCALE DEFAULT 25 40 0 192 255
SCALE DEFAULT 40 55 0 240 0
SCALE DEFAULT 55 70 240 240 0
SCALE DEFAULT 70 85 255 192 0
SCALE DEFAULT 85 100 255 0 0

その他
- 今回は特に設定をいじりませんでしたが、リンク速度で線の太さを変えてみると分かりやすいかもしれません
- グラフが交差する場合、configファイルの後に書かれている情報が上になるようです
アニメーションGIFによるトラフィック情報
WeathermapによるJANOG32本会議中のトラフィック情報をアニメーションGIFにしました。
snapshotのとり方
Weathermapによるトラフィック情報(画像)を定期的に保存するため、cronでweathermapコマンドで生成した画像を別ディレクトリにコピーするコマンドを実行するようにしました。crontabの内容(抜粋)は以下の通りです。
#
# weathermap
2-59/5 * * * * cd /usr/share/cacti/plugins/weathermap/; /usr/share/cacti/plugins/weathermap/weathermap --config /usr/share/cacti/plugins/weathermap/configs/j32map.conf
2-59/5 * * * * cd /usr/share/cacti/plugins/weathermap/; /usr/share/cacti/plugins/weathermap/weathermap --config /usr/share/cacti/plugins/weathermap/configs/j32network.conf
#
# weathermap snapshot
*/10 * * * * /bin/cp /var/www/j32info/images/j32network.png /var/www/j32info/manage/weathermap/$(/bin/date +\%Y\%m\%d_\%H_\%M)_j32network.png
*/10 * * * * /bin/cp /var/www/j32info/images/j32map.png /var/www/j32info/manage/weathermap/$(/bin/date +\%Y\%m\%d_\%H_\%M)_j32map.png
これらのcronにより以下の動作を行います
- 5分おきに weathermapコマンドでconfigファイルに基づいたファイルを生成
- 10分おきに1つ目のcronで生成したファイルを /var/www/j32info/manage/weathermap/ ディレクトリにYYYYMMDD_HHMM_j32XXX.pngとしてコピー
ソーシャルボタン
(最終更新日: 2013.08.16)