MRTGによるADSL監視(Windows編)


以前、Windowsで挑戦したMRTGによるADSL回線監視ですが、そのときはどうやってもうまく動作せずにあきらめたのですが、Linuxでうまく動作できたので再挑戦したところ、うまく動作しました。基本的にはLinuxと同じですが、WindowsのpingはLinuxとはパラメータ指定が異なっていたり、Cronがないので、代替の定時起動に少し手間取りましたが、下記のとおりやれば問題なくできるでしょう。なお、Windows2000がDパーティションにインストールされている環境での動作確認ですので、他のWindowsについては動作する保証はありませんのであしからず。パーティションが異なる場合等、適当に読み替えてください。Linux編も参考にしてください。
2002.12.28に来年のBフレッツ・マンションタイプへの乗り換えに備え、ルータが必要になるのでNTT-ME BA8000 Proを購入しました。開通時に接続替えだけで移行できるように、TE4121CはブリッジモードにしBA8000 ProでPPPoEを終端させました。このため、TE4121Cにアクセスできなくなったので、下記のグラフは停止したままになっています。(2002.12.28)

プロバイダのホームページに結果を表示する方法を追加しました。(2002.05.12)

  ・当サイトのADSL回線のリンク速度     ・当サイトのADSL回線のトラヒック

 (上記はLinuxで表示しているものです)

■必要なファイル・スクリプト・ソフトの準備

おやじがスクリプトを書ける訳はありません。おやじは、tetsuosさんの作成された設定ファイルとスクリプトを使用させてもらいました。その他、必要なソフトを準備します。

  1. 下記から、設定ファイルとスクリプト、ソフトを入手します。

    ● 設定ファイル

         http://www.zephyr.dti.ne.jp/~tetsuos/adsl/adslmon.cfg

    ● スクリプト

       ・リンク速度監視用
         http://www.zephyr.dti.ne.jp/~tetsuos/adsl/TE4121C_linkup.pl
       ・traffic監視用
         http://www.zephyr.dti.ne.jp/~tetsuos/adsl/TE4121C_traffic.pl

    ● wget

       http://members.tripod.co.jp/futora/wget153/

    ● MRTG (Zipファイルをダウンロード。おやじが試験したのは、mrtg-2.9.17.zip)

       http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/

    ● httpd (おやじはApache)

       http://www.apache.org/dist/httpd/binaries/win32/

    ● ActivePerl (Windows用のMSIをダウンロード)

       http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl

    ● Cron (Windows版Cron。NTサービス用をダウンロード)

       http://www.kalab.com/freeware/cron/cron.htm

  2. httpd、Active.perlのインストールと設定

    Windows版のWWWサーバの構築を参照してください。

  3. wgetのインストール

    解凍後、wget.exeをsystem32にコピーする。

  4. MRTGのインストール

    わかりやすい場所に解凍してください。おやじは、D:\以下に解凍しました。(以後はこれを前提に説明します。)

     
  5. 設定ファイル(adslmon.cfg)の変更

    設定ファイルの内容をおやじの環境に合わせて、以下のように変更しました。は変更、は削除、は追加したものです。


    # mrtg2: TE4121C 用 設定ファイル       v0.2
    #

    # --------------------------------------------------------------------
    #WorkDir: /var/adsl/TE4121C
    # html ファイルをおくディレクトリを指定して下さい 

    #  これらのディレクトリはあらかじめ作成しておいて下さい
    #  例: mkdir -p /web/oyaji/public_html/adsl/{images,icons}
    #      cp mrtgのiconのディレクトリ/*.png /web/oyaji/public_html/adsl/icons

    Htmldir:  /web/oyaji/public_html/adsl
    Imagedir: /web/oyaji/public_html/adsl/images
    IconDir:  icons

    # ログファイルをおくディレクトリを指定して下さい
    #  例: mkdir -p /usr/local/bin/adsl/logs
    Logdir:   /usr/local/bin/adsl/logs

    Refresh: 300
    Language: eucjp

    # --------------------------------------------------------------------
    #    TE4121C Traffic Information
    # --------------------------------------------------------------------

    #  --- Target に TE4121C_traffic.pl のあるパスを指定して下さい
    #                                       バックティック (`) は必要
    Target[TE4121C_traffic]: `perl /usr/local/bin/adsl/TE4121C_traffic.pl`
    #      --- MaxBytes を各自の場合にあわせて下さい
    MaxBytes[TE4121C_traffic]: 250000
    Options[TE4121C_traffic]:  growright, integer, nopercent, noinfo
    # Unscaled[TE4121C_traffic]: dwym
    YLegend[TE4121C_traffic]: Byte/sec
    ShortLegend[TE4121C_traffic]: byte/sec&nbsp
    kilo[TE4121C_traffic]: 1024
    # kMG[TE4121C_traffic]: ,k,M,G,T,P
    LegendI[TE4121C_traffic]: 受信
    LegendO[TE4121C_traffic]: 送信
    Title[TE4121C_traffic]: TE4121C Traffic
    PageTop[TE4121C_traffic]: <H1>TE4121C Traffic</H1>

    # --------------------------------------------------------------------
    # TE4121C Link-up Speed Information
    # --------------------------------------------------------------------

    #   --- Target に TE4121C_linkup.pl のあるパスを指定して下さい
    #                                       バックティック (`) は必要
    Target[TE4121C_linkup]: `perl /usr/local/bin/adsl/TE4121C_linkup.pl`
    #   --- MaxBytes を各自の場合にあわせて下さい
    MaxBytes[TE4121C_linkup]: 2000
    #   --- noinfo を取り除くと ADSL IP が表示されます
    Options[TE4121C_linkup]: growright, gauge, integer, nopercent, noinfo
    Unscaled[TE4121C_linkup]: dwmy
    ShortLegend[TE4121C_linkup]: kbps&nbsp
    # kilo[TE4121C_linkup]: 1024
    kMG[TE4121C_linkup]: ,M,G,T,P
    YLegend[TE4121C_linkup]: Mbps
    LegendI[TE4121C_linkup]: 上り
    LegendO[TE4121C_linkup]: 下り
    Title[TE4121C_linkup]: TE4121C Link-up Speed
    PageTop[TE4121C_linkup]: <H1>TE4121C Link-up Speed</H1>

    ■ディレクトリの変更
       各ディレクトリは、適宜変更してください。但し、MRTGの条件から、ImagedirはHtmldir配下に置かなければなりません。

    ■Targetの変更
       各ディレクトリ指定の先頭に、”perl "を追加します。本来は、不要と思われますが、おやじの環境では、perlを明示しないとうまく実行されませんでした。具体的には、モデムからのデータ取得ができず、logに ”1”しか記録されませんでした。

    ■MaxBytesの変更
       おやじは、残念ながら1.6Mbps前後でしかリンクしないため、2Mbpsを上限として、設定しました。リンク速度はkbps単位で、トラヒックはリンク速度を8で割ったbyte単位で指定します。

    ■データの保存
       設定ファイルを /usr/local/bin/adsl(どこでもよい)に保存します。ここで、少し注意しなければならないことがあります。設定ファイルのLanguageにあるように、MRTGが扱える日本語環境はEUC_JPであり、Shift-JISは扱えません。Windows環境で編集する場合、エディタの漢字コードをEUCにすることを忘れないようにしてください。また、FTP転送時の設定も同様です。Shift-JISだと、グラフ下の日本語表示がおかしくなってしまいます。おやじは、少しはまりました。

  6. スクリプトの変更

    両スクリプトでユーザ環境を変更します。修正個所は、下記の2〜3個所のみです。但し、冒頭のperlへのパスは一応確認してください。

        $mgurl    = "192.168.1.1";   ←モデムのアドレス
        $mgcgi    = "cgi-bin/main.cgi?cc_webname=STATUS";
        $mguserid = "user";   ←−−−モデムのログインユーザ名
        $mgpasswd = "user";  ←−−−モデムのログインパスワード

    続いて、両スクリプトともpingとwgetの環境をWindows用に変更します。

       $ping = "/bin/ping -nq -c 1";
       $wget = "/usr/bin/wget -qO - ";

            ↓削除

       $ping = "ping -n 1";
        $wget = "wget -qO - ";

  7. Cronのインストールと設定

     ダウンロードしたcrons.zipを適当なところで解凍します。解凍すると、ntsetup.exeができるので実行します。インストールパスを聞いてくるので、そのまま実行すればntsetup.exeのあったところにcrons.exeがインストールされます。おやじは、system32フォルダにインストールしました。管理ツールのサービスを確認すると、CRONサービスがインストールされていると思います。

■MRTGの起動

  では、動かしてみましょう。以下の手順で必要な設定と確認をしていきます。

  1. ADSLモデムからのデータ取得

     コマンドプロンプトで、TE4121C_linkup.plのインストールパスを指定して以下を実行します。

      ・perl D:\usr\local\bin\adsl\TE4121C_linkup.pl

     下記のように、正常に値が取得できていることを確認してください。

       768
       1728
       768 1728
       xxx.xxx.xxx.xxx ←現在のグローバルIPアドレス

     トラヒックも表示される内容が異なりますが同様です。

  2. MRTGの動作確認

     コマンドプロンプトで、adslmon.cfgに基づきMRTGを起動してみます。

      ・perl D:\mrtg-2.9.17\bin\mrtg D:\usr\local\bin\adsl\adslmon.cfg
              mrtgのパス           adslmon.cfgのパス

     数分ごとに3回実行してください。これにより、adslmon.cfgのHtmldirで指定した場所にhtmlファイルが作成されるはずです。内容を見てみましょう。文字が乱れる場合は、adslmon.cfgファイルがEUC_JPになっているか確認しましょう。
     続けて、Cron用のバッチファイルを作成します。適当なエディタで下記内容でte4121c.batというファイルを作成し、system32に置きます。

      ・D:
       perl D:\mrtg-2.9.17\bin\mrtg D:\usr\local\bin\adsl\adslmon.cfg

     バッチファイルを起動して、上記のコマンドプロンプトで実行したときと同様に、htmlファイルが更新されることを確認しましょう。

  3. MRTGの自動起動

     問題なく動作することが確認できたら、MRTGを周期的(5分毎)に起動できるようにします。Cron用の設定ファイルを作成します。適当なエディタで下記内容でcrontabというファイルを作成し、system32に置きます。

      ・0,5,10,15,20,25,30,35,40,45,50,55 * * * * te4121c.bat

     設置できたら、コントロールパネルの管理ツール内のサービスを起動し、「Cron service」を開始に設定すれば、5分毎に更新されるはずです。
                      

■プロバイダのホームページへの転送方法

こんなこと、意味があるのかわかりませんが、自宅サーバを持っておらずプロバイダのホームページで測定結果をリアルタイムに表示することを想定して、FTPの自動スクリプトでやってみました。実際には、おやじのサーバをプロバイダのサーバに見立てての試験ですので、必ずしもうまくいくとは限りませんが。

  1. 以下のようなスクリプトを適当なエディタで書いて、ftp.scrという名称(名前は適当でいいが、xxx.scrとすること)で適当なフォルダに置く。

    open ftp.aconus.com
    user oyaji xxxxxx
    bin
    prompt
    cd public_html/adsl
    put e:\web\test\public_html\adsl\te4121c_linkup.html
    put e:\web\test\public_html\adsl\te4121c_traffic.html
    cd images
    put e:\web\test\public_html\adsl\images\te4121c_linkup-day.png
    put e:\web\test\public_html\adsl\images\te4121c_linkup-month.png
    put e:\web\test\public_html\adsl\images\te4121c_linkup-week.png
    put e:\web\test\public_html\adsl\images\te4121c_linkup-year.png
    quit

    1行目は、ftpサイトをopenするコマンド。openの後にftpサイト名(プロバイダのホームページ)を記述。
    2行目は、userの後に、ユーザ名とパスワードを記述。
    3行目は、バイナリモードの指定、4行目はプロンプトモードのオフを指定。
    5行目は、cdの後にhtmlファイルを置くプロバイダのディレクトリを記述。ここは、ログイン時のhomeディレクトリの下に相対指定で記述。(プロバイダのディレクトリ構造が通常わからないはず)
    6,7行目は、putの後に転送するhtmlファイルを絶対指定で記述。(相対指定では、スクリプトファイルの置き場所で変わってしまう)
    8行目で、グラフデータを置くディレクトリに移動。ここは、cdの後にグラフデータを置いてあるディレクトリ名を記述。htmlファイルが相対位置で参照しているので、ディレクトリの名称、位置関係を変えないこと。
    9〜12行目は、putの後に転送するpngファイルを絶対指定で記述。
    最後にquitを記述。

  2. mrtgのiconファイルをディレクトリの名称、位置関係を変えずにプロバイダに転送する。

  3. コマンドプロンプトで以下のように入力し、転送がうまくいくことを確認するとともに、ホームページで正常に表示されるか確認する。

      ・ftp -n -s:d:\ftp.scr

    -s: の後は、1項で作成したスクリプトのディレクトリを指定。

  4. ここまで動作したら、前記の2項で作成したte4121c.batに上記のコマンドを追記(perl行の次)すれば、作成されたデータが自分のホームページに転送できる。



Top Pageへ   Linux編