JApan Network Operators' Group

Weathermap

はじめに

JANOG32のトラフィック情報を http://j32info.janog.gr.jp/ で公開するにあたり、 php weathermapCacti のプラグインとして利用しました。このページではJANOG32におけるWeathermapの活用方法をまとめました。

インストールの方法(CentOSの場合)

http://www.network-weathermap.com/manual/0.97b/pages/install-cacti-editor.html を参考にしました。

  1. yum install 等のコマンドで以下のソフトウェアを導入し、使用可能な状態にします。
  • rrdtool
  • rrdtool-php
  • cacti
  • apache
  • php
  • mysql
  • net-snmp
  • その他もろもろ
  1. php weathermapのサイトからソフトウェアを入手し、/usr/share/cacti/plugins 以下のディレクトリ(/usr/share/cacti/plugins/weathermap とします)に展開します。
  2. 展開したディレクトリの中にある以下のディレクトリについてはパーミッションを777にします。
  • output
  • configs
  1. editorを使う予定がある場合、editor.phpの以下部分を書き換えます。
  • (前) $ENABLED=false;
  • (後) $ENABLED=true;
  1. これで使えるようになります。

実際に使用したconfigは以下にあります。

Editor画面

Editor画面でマップの編集を行います。

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

ノードの編集

ノードをクリックするとノード編集画面が表示されます。

img/network/node-properties.png

それぞれの意味は以下の通りです。

  • Position : ノードの画面上の表示位置です。X.Yでポジションを設定します。下の方にあるMoveボタンで設定することもできます(画面をクリックすることになります)。
  • Internal Name : config上のノード名です。他のノードと被らないようにします。
  • Label : 画面上に表示される名前です。
  • Info URL : ノードをクリックしたときに表示されるURLです(必須ではありません)。
  • Hover Graph URL : マウスオーバーした際に表示される画像を指定できます。グラフである必要はないです(必須ではありません)。
  • Icon Filename : ノードをアイコンにしたい場合設定します。ファイルはWeathermapをインストールしたディレクトリ内にある”images”ディレクトリから指定します。

各ボタンの機能は以下の通りです。

  • Move : 画面をクリックすることでノードの位置を設定できます。
  • Delete : ノードを削除します。
  • Clone : ノードの複製を作ります。
  • Edit : configファイルの該当Node部分を直接編集します。
    node-properties-edit

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
img/network/j32-cust-legend.png

参考までに、デフォルトの設定は以下のようになっています。

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
img/network/j32-default-legend.png

その他

  • 今回は特に設定をいじりませんでしたが、リンク速度で線の太さを変えてみると分かりやすいかもしれません
  • グラフが交差する場合、configファイルの後に書かれている情報が上になるようです

アニメーションGIFによるトラフィック情報

WeathermapによるJANOG32本会議中のトラフィック情報をアニメーションGIFにしました。

img/network/j32_map.gif

本会議場内(day1~day2)


img/network/j32_network.gif

インターネット回線(day1~day2)

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)

JANOG32 Meeting
JANOG32はさくらインターネット株式会社のホストにより開催しました。