目的
本文指在提供對 ADSL Router 的內部系統狀態的定時監控與記錄的工具及其說明,在懷疑網路狀態異常時可以提供作為異常處理的參考資料。
授權與免責條款
本文採用創意公用授權條款 (Creative Commons License) 之「 姓名標示─非商業性─相同方式分享 2.5 台灣版 」授權方式。
本文不對文內所提及之各項操作所造成的人員或軟、硬體傷害負任何民、刑事責任。
系統需求
要使用本文所介紹的工具前,必須先確保所處系統擁有以下的資源:
安裝 Perl 5.8.x:為達到跨平台的目的,選擇使用 Perl 5.8.x 作為資料擷取工具。
安裝 RRDTool 1.2.x:擷取到的 ATU-R 相關資訊將被置入 RRDTool 資料庫中,並透過 RRDTool 進行繪製工作。
熟悉定時排程工具的使用:為了自動、定時向 ATU-R 擷取資料,系統管理人必須熟悉所用系統的定時排程工具。
安裝 Perl 5.8.x
Windows 平台 - 透過 ActiveState 的 ActivePerl 提供 Perl 支援
透過瀏覽器連線到 ActiveState 站台,下載 ActivePerl MSI 安裝檔
下載後請雙擊該檔進行安裝,安裝時請選擇完整安裝。
安裝完畢後請於命令列視窗下執行以下指令以檢驗 ActivePerl 是否已正確安裝完成。
Linux 或其他作業平台
通常 *nix 系統皆已預設安裝 Perl 主環境,若尚未安裝請自行透過所在平台之套件管理系統進行安裝 Perl 主系統。
請於 console 視窗中執行以下指令以檢驗 Perl 是否已正確安裝完成。
安裝 Perl 模組
如果使用的是 Winodws 及 ActiveState Perl 環境,請參考以下圖示安裝相關模組。
安裝 File::Basename
C:\> ppm install File-Basename-Object
安裝 File::Spec
C:\> ppm install File-Spec
安裝 Mail::Sendmail
C:\> ppm install Mail-Sendmail
檢查模組是否已安裝
C:\> ppm query Mail-Sendmail
如果是非 Windows 系統時,可透過平台之套件管理系統(建議方式,可由套件管理機制得知模組是否需要更新)或直接透過以下指令於 console 中安裝以下 Perl 模組:
LWP ( 檔案名稱 libwww-perl ) - 需 5.64 以上版本
perl -MCPAN -e "install LWP"
File::Basename - 似乎已內建
File::Spec - 似乎已內建
Mail::Sendmail ( 檔案名稱 Mail-Sendmail )
perl -MCPAN -e "install Mail::Sendmail"
檢查模組是否安裝 - 使用 cpan shell
透過以下方式可以啟動 cpan shell
在 cpan shell 中透過以下指令檢查模組的 INST_VERSION 屬性,若無此屬性時即表示未安裝該模組。
也可以透過套件管理機制進行檢核。
安裝 RRDTool
Windows 平台
到 RRDTool 官方網站 下載 RRDTool 1.2.10 for Windows
將下載檔案解壓縮到 C:RRDTool 目錄中備用
為了方便執行 rrdtool ,可將設 path 環境變數或將 rrdtool.exe 複製到 %WINDIR%\System32 目錄下
C:\> copy C:\RRDTool\rrdtool\Release\rrdtool.exe "%WINDIR%System32"
到 C:RRDTool 目錄下執行 install.cmd 以便安裝 RRDs 模組,依畫面指示按兩次任意鍵後即完成安裝
Linux 或其他作業平台
多數平台的套件管理系統已提供 RRDTool 套件包。
尚未提供套件包之平台可於 RRDTool 官方網站 自行下載、編譯、及安裝。
Gentoo Linux 使用者可到 RRDTool 中文 Ebuild 下載中文修改版 EBuild。
其他平台使用者可參考 酷學園討論區 [分享]RRDTool 中文版安裝經驗 自行修改原始碼。
設定網路環境
Windows 平台
透過瀏覽器瀏覽 http://192.168.1.1 網頁,這是目前多數 ATU-R 管理頁面的所在住址。若可以瀏覽則網路環境已 OK ,否則即必須進行 IP Alias 設定。
透過 [網路連線] -> [TCP/IP] -> [內容] -> [進階] -> [IP 設定] -> [新增 IP 位址 ] 等步驟即可進行新增 IP 位址的動作。
若設定正確,則可以 ping 通 ATU-R 和 www.hinet.net 等 Internet 網站。
也可同時瀏覽 Internet 及 ATU-R 狀態頁。
Linux 或其他作業平台
請依各平台規定自行完成網路設定
或:安裝第二張網路卡
取得命令稿
Tecom AR4031B:請下載 AR4031B.rar 。(不負責任報告:據說 Alcatel T07A(W) 也可以使用本命令稿)
Alcatel SpeedTouch 340:請下載 SpeedTouch340.rar
下載後請自行解壓縮到指定目錄(例如 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 <[email protected] >';
# 收件人 - 收件人資料, <> 內是 EMAIL, <> 前是人名
my $to = 'admin <[email protected] >';
# 信件主旨 - 可以修改成自己需要的主旨,不過沒測試過中文主旨是否正確。
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';
資料擷取測試
完成前述修改動作後,即可透過 ST340.pl 或 AR4031B.pl 測試可否正確擷取 ATU-R 之狀態。
Windows 平台
C:\ATUR-Stat> perl AR4031B.pl
Linux 平台
~/ATUR-Stat $ perl AR4031B.pl
如果安裝過程一切正確的話,應該會在同一個目錄中產生一個 AR4031B.rrd(或 ST340.rrd )檔。因為擷取的時間點錯誤的關係,所以請先暫時移除這個 rrd 檔,等正式執行時還會重新產生這個檔案。
資料擷取
系統管理者必須設法讓 ST340.pl 或 AR4031B.pl 定時向 ATU-R 擷取資料並保存後,才得用於繪製變化圖。
Windows 平台
透過建立工作排程達到定時擷取資料的目的
此處透過建立多項排程來達到定時擷取資料的需求
定時執行的重要關鍵
其他設定
Linux 平台
透過 crontab 服務即可定時進行資料擷取的動作
請將資料擷取時間定為每個小時的 00,10,20,30,40,50 分進行資料擷取
00,10,20,30,40,50 * * * * /usr/bin/perl /home/sysmon/AR4031B.pl
初期請注意 AR4031B.rrd / ST340.rrd 檔更新時間是否依前述設定完成更新。若未更新的話表示資料擷取作業沒有正確啟動。
繪圖
於收集資料一段時間後,即可進行繪圖工作。
Windows 平台
透過以下指令即可輸出 AR4031B(ST340 有對應的繪圖命令稿)的頻寬狀態異動折線圖
C:\> perl C:\ATUR-Stat\AR4031B-Bandwidth.pl
透過以下指令即可輸出 ST340(AR4031B 也有對應的繪圖命令稿)的線路狀態異動折線圖
C:\> perl C:\ATUR-Stat\ST340-State.pl
不論何時進行繪圖操作,命令稿會將擷取時間鎖訂在 00,10,20,30,40,50 等實際擷取資料的時刻。
Linux 平台
透過以下指令即可輸出 ST340(AR4031B 也有對應的繪圖命令稿)的頻寬狀態異動折線圖
~/ATUR-Stat $ perl ST340-Bandwidth.pl
透過以下指令即可輸出 AR4031B(ST340 也有對應的繪圖命令稿)的線路狀態異動折線圖
~/ATUR-Stat $ perl AR4031B-State.pl
不論何時進行繪圖操作,命令稿會將擷取時間鎖訂在 00,10,20,30,40,50 等實際擷取資料的時刻。
繪圖資料區間
預設的繪圖區間有過去 12 小時 (12h)、過去一日 (1d)、過去一週 (1w)、過去一個月 (1m)、以及過去一年 (1y),可從前述繪圖命令執行結果中看出每一張圖的資料區間為何。
想要產生更多/少的資料區間時,可修改該繪圖檔中的下行敘述
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 三原色的組合。
其他注意事項
Windows 平台中未提供中文輸出功能;Linux 平台下可自行參考 [分享]RRDTool 中文版安裝經驗 說明增加中文輸出功能。
特別注意每一組的 .pl 檔必須放在一起且勿任意更名。原因是在建立 .rrd 檔時是以 .pl 檔檔名為命名依據,例如 ST340.pl 會建立 ST340.rrd 檔。而繪圖命令稿則是直接讀取命令稿所在目錄下對應的 .rrd 檔,例如 ST340-State.pl 會讀取 ST340.rrd 檔。
如果曾經自行修改過 ATU-R 的 IP 時,請自行修改命令稿中對應的 IP 位址。
在修改線條寬度/種類時,請牢記後面繪製的圖形會蓋到前面已繪製完成的圖形上,因此如果先繪製線條後又設定區塊填滿的話,那線條部分有可能顯示不出來。
其他型式的 ATU-R 怎麼辦?
只要瞭解 Perl、RRDTool、及正規表示式的話,那就可以自行修改相關的 Perl 檔以便建立 .rrd 檔、擷取適當資訊以及繪製區間圖。
追加更新 - 提供 SNMP 資料擷取功能
這是新增了透過 SNMP 擷取 ATU-R 系統名稱及上線時間的修改版本。
模組需求:
Windows 平台上需增加安裝 Net-SNMP 模組:
C:\> ppm install Net-SNMP
Linux 平台上請透過套件管理系統安裝 Net-SNMP 模組。
取得令命稿:
Tecom AR4031B / Alcatel T07A(W):AR4031B-snmp.rar
Alcatel Speed Touch 340:SpeedTouch-snmp.rar
使用方式:同原始版本即可。