2006年7月3日

定時監控你的 ATU-R

目的

本文指在提供對 ADSL Router 的內部系統狀態的定時監控與記錄的工具及其說明,在懷疑網路狀態異常時可以提供作為異常處理的參考資料。

授權與免責條款

  1. 本文採用創意公用授權條款 (Creative Commons License) 之「 姓名標示─非商業性─相同方式分享 2.5 台灣版 」授權方式。
  2. 本文不對文內所提及之各項操作所造成的人員或軟、硬體傷害負任何民、刑事責任。

系統需求

要使用本文所介紹的工具前,必須先確保所處系統擁有以下的資源:
  1. 安裝 Perl 5.8.x:為達到跨平台的目的,選擇使用 Perl 5.8.x 作為資料擷取工具。
  2. 安裝 RRDTool 1.2.x:擷取到的 ATU-R 相關資訊將被置入 RRDTool 資料庫中,並透過 RRDTool 進行繪製工作。
  3. 熟悉定時排程工具的使用:為了自動、定時向 ATU-R 擷取資料,系統管理人必須熟悉所用系統的定時排程工具。

安裝 Perl 5.8.x

Windows 平台 - 透過 ActiveState 的 ActivePerl 提供 Perl 支援

  1. 透過瀏覽器連線到 ActiveState 站台,下載 ActivePerl MSI 安裝檔
  2. 下載後請雙擊該檔進行安裝,安裝時請選擇完整安裝。
  3. 安裝完畢後請於命令列視窗下執行以下指令以檢驗 ActivePerl 是否已正確安裝完成。
    C:\> perl -v

Linux 或其他作業平台

  1. 通常 *nix 系統皆已預設安裝 Perl 主環境,若尚未安裝請自行透過所在平台之套件管理系統進行安裝 Perl 主系統。
  2. 請於 console 視窗中執行以下指令以檢驗 Perl 是否已正確安裝完成。
    ~ $ perl -v

安裝 Perl 模組

  1. 如果使用的是 Winodws 及 ActiveState Perl 環境,請參考以下圖示安裝相關模組。

    1. 安裝 File::Basename
      C:\> ppm install File-Basename-Object
    2. 安裝 File::Spec
      C:\> ppm install File-Spec
    3. 安裝 Mail::Sendmail
      C:\> ppm install Mail-Sendmail
    4. 檢查模組是否已安裝
      C:\> ppm query Mail-Sendmail

  2. 如果是非 Windows 系統時,可透過平台之套件管理系統(建議方式,可由套件管理機制得知模組是否需要更新)或直接透過以下指令於 console 中安裝以下 Perl 模組:

    1. LWP ( 檔案名稱 libwww-perl ) - 需 5.64 以上版本

      perl -MCPAN -e "install LWP"
    2. File::Basename - 似乎已內建
    3. File::Spec - 似乎已內建
    4. Mail::Sendmail ( 檔案名稱 Mail-Sendmail )

      perl -MCPAN -e "install Mail::Sendmail"
    5. 檢查模組是否安裝 - 使用 cpan shell

      1. 透過以下方式可以啟動 cpan shell
        $ cpan
      2. 在 cpan shell 中透過以下指令檢查模組的 INST_VERSION 屬性,若無此屬性時即表示未安裝該模組。
        cpan> m Mail::Sendmail
      3. 也可以透過套件管理機制進行檢核。

安裝 RRDTool

Windows 平台

  1. RRDTool 官方網站 下載 RRDTool 1.2.10 for Windows
  2. 將下載檔案解壓縮到 C:RRDTool 目錄中備用
  3. 為了方便執行 rrdtool ,可將設 path 環境變數或將 rrdtool.exe 複製到 %WINDIR%\System32 目錄下
    C:\> copy C:\RRDTool\rrdtool\Release\rrdtool.exe "%WINDIR%System32"
  4. 到 C:RRDTool 目錄下執行 install.cmd 以便安裝 RRDs 模組,依畫面指示按兩次任意鍵後即完成安裝
    C:\RRDTool> install.cmd

Linux 或其他作業平台

  1. 多數平台的套件管理系統已提供 RRDTool 套件包。
  2. 尚未提供套件包之平台可於 RRDTool 官方網站 自行下載、編譯、及安裝。
  3. Gentoo Linux 使用者可到 RRDTool 中文 Ebuild 下載中文修改版 EBuild。
  4. 其他平台使用者可參考 酷學園討論區 [分享]RRDTool 中文版安裝經驗 自行修改原始碼。

設定網路環境


Windows 平台

  1. 透過瀏覽器瀏覽 http://192.168.1.1 網頁,這是目前多數 ATU-R 管理頁面的所在住址。若可以瀏覽則網路環境已 OK ,否則即必須進行 IP Alias 設定。
  2. 透過 [網路連線] -> [TCP/IP] -> [內容] -> [進階] -> [IP 設定] -> [新增 IP 位址 ] 等步驟即可進行新增 IP 位址的動作。
    新增 IP 位址
  3. 若設定正確,則可以 ping 通 ATU-R 和 www.hinet.net 等 Internet 網站。
    同時 ping 通 ATU-R 與 Internet
  4. 也可同時瀏覽 Internet 及 ATU-R 狀態頁。
    同時瀏覽 Internet 及 ATU-R

Linux 或其他作業平台

  1. 請依各平台規定自行完成網路設定
  2. 或:安裝第二張網路卡

取得命令稿

  1. Tecom AR4031B:請下載 AR4031B.rar。(不負責任報告:據說 Alcatel T07A(W) 也可以使用本命令稿)
  2. Alcatel SpeedTouch 340:請下載 SpeedTouch340.rar
  3. 下載後請自行解壓縮到指定目錄(例如 Windows 下解到 C:\ATUR-Stat;Linux 下解到 ~/ATUR-Stat ),不管那一個壓縮檔內都應該有 4 個 .pl 檔。

修改命令稿

不管是 AR4031B.pl 或是 ST340.pl 中,都因為提供了警示郵件(僅檢查下載頻寬設定值)的功能而必須做些小設定。以下以 ST340.pl 做說明,AR4031B.pl 修改方式相同。
  • 修改前建議先備份以免改錯無法復原!

AR4031B.pl
# 寄信用 EMail Server - 請換成各自的 ISP 郵件主機
my $smtpServer = "msa.hinet.net";
# 寄件人 - 寄件人資料, <> 內是 EMAIL, <> 前是人名
my $from = 'admin <admin@your.domain.name>';
# 收件人 - 收件人資料, <> 內是 EMAIL, <> 前是人名
my $to = 'admin <admin@your.domain.name>';
# 信件主旨 - 可以修改成自己需要的主旨,不過沒測試過中文主旨是否正確。
my $subject = "Mail Alarm";
# 信件編碼 - 可依系統環境修改 charset 之值!
my $contentType = 'text/plain; charset="cp950"';
# 門檻值 - 設定下載頻寬低於多少時發送通知信件,單位是 Kbps # 此例是設定當下載頻寬低於 2000 Kbps ( 2M bps ) 時發出警示 my $rateThreshold = 2000;
# 初始變數設定 - ATU-R 狀態頁之相關資訊,曾修改 ATU-R IP 者必須一併修改此處設定 my $statUrl = 'http://192.168.1.1/P_status.html'; my $authUrl = '192.168.1.1:80'; # ATU-R 網頁認證識別字串,可透過 getRealm.pl http://192.168.1.1/P_status.html 方式取得 my $realm = 'SPEEDTOUCH 340 Configuration Web Server'; # ATU-R 網頁認證使用者,ST340 似乎多數為空白。 my $user = ''; # ATU-R 網頁認證密碼,12345 是 CHT 最早的預設值 my $passwd = '12345';

資料擷取測試

  1. 完成前述修改動作後,即可透過 ST340.pl 或 AR4031B.pl 測試可否正確擷取 ATU-R 之狀態。

    Windows 平台
     C:\ATUR-Stat> perl AR4031B.pl 

    Linux 平台
     ~/ATUR-Stat $ perl AR4031B.pl 
  2. 如果安裝過程一切正確的話,應該會在同一個目錄中產生一個 AR4031B.rrd(或 ST340.rrd )檔。因為擷取的時間點錯誤的關係,所以請先暫時移除這個 rrd 檔,等正式執行時還會重新產生這個檔案。

資料擷取

系統管理者必須設法讓 ST340.pl 或 AR4031B.pl 定時向 ATU-R 擷取資料並保存後,才得用於繪製變化圖。

Windows 平台

  1. 透過建立工作排程達到定時擷取資料的目的
    建立工作排程
  2. 此處透過建立多項排程來達到定時擷取資料的需求
    建立多項排程
  3. 定時執行的重要關鍵
    設定定時執行
  4. 其他設定
    其他設定

Linux 平台

  1. 透過 crontab 服務即可定時進行資料擷取的動作
  2. 請將資料擷取時間定為每個小時的 00,10,20,30,40,50 分進行資料擷取

    00,10,20,30,40,50 * * * * /usr/bin/perl /home/sysmon/AR4031B.pl
  3. 初期請注意 AR4031B.rrd / ST340.rrd 檔更新時間是否依前述設定完成更新。若未更新的話表示資料擷取作業沒有正確啟動。

繪圖

於收集資料一段時間後,即可進行繪圖工作。

Windows 平台

  1. 透過以下指令即可輸出 AR4031B(ST340 有對應的繪圖命令稿)的頻寬狀態異動折線圖
    C:\> perl C:\ATUR-Stat\AR4031B-Bandwidth.pl
  2. 透過以下指令即可輸出 ST340(AR4031B 也有對應的繪圖命令稿)的線路狀態異動折線圖
    C:\> perl C:\ATUR-Stat\ST340-State.pl
  3. 不論何時進行繪圖操作,命令稿會將擷取時間鎖訂在 00,10,20,30,40,50 等實際擷取資料的時刻。

Linux 平台

  1. 透過以下指令即可輸出 ST340(AR4031B 也有對應的繪圖命令稿)的頻寬狀態異動折線圖
    ~/ATUR-Stat $ perl ST340-Bandwidth.pl
  2. 透過以下指令即可輸出 AR4031B(ST340 也有對應的繪圖命令稿)的線路狀態異動折線圖
    ~/ATUR-Stat $ perl AR4031B-State.pl
  3. 不論何時進行繪圖操作,命令稿會將擷取時間鎖訂在 00,10,20,30,40,50 等實際擷取資料的時刻。

繪圖資料區間

  1. 預設的繪圖區間有過去 12 小時 (12h)、過去一日 (1d)、過去一週 (1w)、過去一個月 (1m)、以及過去一年 (1y),可從前述繪圖命令執行結果中看出每一張圖的資料區間為何。
  2. 想要產生更多/少的資料區間時,可修改該繪圖檔中的下行敘述
    my @period = qw { 1y 1m 1w 1d 12h };
    例如欲改成繪製過去一天 (1d)、一週(1w)、二週(2w)、三週(3w)、四週(4w) 的圖時則修改成:
    my @period = qw { 1d 1w 2w 3w 4w };

繪圖參數的修改

若需要修改圖檔抬頭、線條、背景等等的設定時,可修改繪圖命令稿中之相關設定(更多細節請參考 RRDTool rrdgraph 內之說明)。
my @graphSettings = ( '-t AR4031B Bandwidth',
 '-v Kbps',
 '-l 0',
    "DEF:RATE_DOWNSTREAM=$rrdFile:RATE_DOWNSTREAM:MAX",
    "DEF:RATE_UPSTREAM=$rrdFile:RATE_UPSTREAM:MAX",
    'COMMENT: ----- ITEM NAME ---------------------- -MAX-  -AVG-  -MIN-  -LAST- \n',
    'LINE2:RATE_DOWNSTREAM#0000ff:Downstream Rate (Kbps)\:            ',
    'GPRINT:RATE_DOWNSTREAM:MAX:%5.0lf',
    'GPRINT:RATE_DOWNSTREAM:AVERAGE:%5.0lf',
    'GPRINT:RATE_DOWNSTREAM:MIN:%5.0lf',
    'GPRINT:RATE_DOWNSTREAM:LAST:%5.0lf\n',
    'LINE2:RATE_UPSTREAM#00ff00:Upstream Rate (Kbps)\:              ',
    'GPRINT:RATE_UPSTREAM:MAX:%5.0lf',
    'GPRINT:RATE_UPSTREAM:AVERAGE:%5.0lf',
    'GPRINT:RATE_UPSTREAM:MIN:%5.0lf',
    'GPRINT:RATE_UPSTREAM:LAST:%5.0lf\n' );
  • 修改檔案格式
    請修改 my $imgFormat = "PNG"; 之 PNG 字樣,有效的輸出種類為 PNG, SVG, EPS, PDF 等 4 種( RRDTool 1.2.x 限定 )
  • 修改抬頭
    請修改 '-t AR4031B Bandwidth' 內之 AR4031B Bandwidth 字樣,Windows 平台中請勿輸入任何中文訊息。
  • 修改 Y 軸上的抬頭
    請修改 '-v Kbps' 內之 Kbps 字樣,Windows 平台同樣不可輸入任何中文訊息。
  • 修改線條寬度/種類
    每一個資料源可以用 3 種不同粗細的線條或以區塊填滿方式顯示。請修改 'LINE2:RATE_DOWNSTREAM#0000ff:Downstream Rate (Kbps)\: ', 中的 LINE2 字樣,可用的選擇有 LINE3(最粗),LINE2,LINE1(最細)以及 AREA(區塊填滿)。
  • 修改顏色
    欲修改資料源的顏色時,請修改 'LINE2:RATE_DOWNSTREAM#0000ff:Downstream Rate (Kbps)\: ' 中的 #0000ff 字樣,這是 RGB 三原色的組合。

其他注意事項

  1. Windows 平台中未提供中文輸出功能;Linux 平台下可自行參考 [分享]RRDTool 中文版安裝經驗 說明增加中文輸出功能。
  2. 特別注意每一組的 .pl 檔必須放在一起且勿任意更名。原因是在建立 .rrd 檔時是以 .pl 檔檔名為命名依據,例如 ST340.pl 會建立 ST340.rrd 檔。而繪圖命令稿則是直接讀取命令稿所在目錄下對應的 .rrd 檔,例如 ST340-State.pl 會讀取 ST340.rrd 檔。
  3. 如果曾經自行修改過 ATU-R 的 IP 時,請自行修改命令稿中對應的 IP 位址。
  4. 在修改線條寬度/種類時,請牢記後面繪製的圖形會蓋到前面已繪製完成的圖形上,因此如果先繪製線條後又設定區塊填滿的話,那線條部分有可能顯示不出來。

其他型式的 ATU-R 怎麼辦?

  1. 只要瞭解 Perl、RRDTool、及正規表示式的話,那就可以自行修改相關的 Perl 檔以便建立 .rrd 檔、擷取適當資訊以及繪製區間圖。

追加更新 - 提供 SNMP 資料擷取功能

  1. 這是新增了透過 SNMP 擷取 ATU-R 系統名稱及上線時間的修改版本。
  2. 模組需求:

    1. Windows 平台上需增加安裝 Net-SNMP 模組:
      C:\> ppm install Net-SNMP
    2. Linux 平台上請透過套件管理系統安裝 Net-SNMP 模組。

  3. 取得令命稿:

    1. Tecom AR4031B / Alcatel T07A(W):AR4031B-snmp.rar
    2. Alcatel Speed Touch 340:SpeedTouch-snmp.rar

  4. 使用方式:同原始版本即可。