【軟體】定時監控你的 ATU-R 狀態



贊助商連結


頁 : [1] 2 3 4 5

AdaHsu
2006-06-23, 04:00 PM
授權及免責聲明

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


緣由

相信許多伙伴在完成 ADSL 升速申請時都會興致勃勃的查看 ATU-R 的相關設定值,剛開始時數據當然很漂亮,但即使數據變差時通常也不會知道。一般來說都是等到有一天發現下載某個檔案時竟然花費比剛申請時多了一倍以上的時間時才驚覺網路環境真的有問題。

基於工程師的劣根天性使然,總是希望電腦能自已搞定許多事而無須人工時時介入。在這個『科技始終來自於隋性』的理念下終於整理出讓電腦自己監控 ATU-R 的作法。

運作需求

Perl 執行環境:Windows 使用者可以透過安裝 ActiveState (http://www.activestate.com) 提供的 ActivePerl (http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.817-MSWin32-x86-257965.msi) 滿足此需求。
RRDTool (http://oss.oetiker.ch/rrdtool/) 工具:Windows 使用者請下載 Windows with Perl8 (http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.2.10-win32-perl58.zip) 支援之版本;Linux 平台請透過套件管理系統進行安裝或下載 原始碼 (http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool.tar.gz) 自行編譯。
符合 ATU-R 型式的 Perl 命令稿:目前提供 Tecom AR4031B (http://blog.adahsu.net/ada/space/Computer/Tips/2006-06-22/1/AR4031B.rar) 及 Alcatel SpeedTouch 340 (http://blog.adahsu.net/ada/space/Computer/Tips/2006-06-22/1/SpeedTouch340.rar) 兩機種的命令稿。
排程服務:定時擷取 ATU-R 資料所需。


安裝設定

安裝 Perl 支援模組,ActivePerl 可在命令列視窗中透過以下指令安裝:


C:\> ppm install File-Basename-Object
C:\> ppm install File-Spec
C:\> ppm install Mail-Sendmail

Linux 平台下可透過套件管理系統或命令列進行安裝(File-Basename 及 File-Spec 似已內建)


somebody@somehost ~/perl $ perl -MCPAN -e "install LWP"
somebody@somehost ~/perl $ perl -MCPAN -e "install Mail::Sendmail"

Windows 下安裝 RRDTool 的 Perl 模組支援:請將下載的檔案解壓縮到 C:\RRDTool 中,然後操作以下指令。


C:\> cd RRDTool
C:\RRDTool> REM 先將 RRDTool.exe 執行檔複製到 %WINDIR%\System32 下
C:\RRDTool> copy rrdtool\Release\rrdtool.exe "%WINDIR%System32"
C:\RRDTool> REM 安裝 Perl 支援模組
C:\RRDTool> install.cmd

Linux 下安裝 RRDTool 的 Perl 模組支援:

若使用套件管理系統安裝的 RRDTool 時,應已一併安裝 Perl 支援
若自行編譯 RRDTool 時,請自行檢查 Perl 目錄下是否有 RRD?.pm 檔

網路設定:目的是希望上 Internet 時也可以瀏覽 ATU-R 管理頁面

若 IP 已和 ATU-R 同網段,則不用再進行任何設定
若 IP 與 ATU-R 不同網段,則考慮另購網卡或做 IP Alias 設定
Windows 下 IP Alias 設定請依 [網路連線] -> [TCP/IP] -> [內容] -> [進階] -> [IP 設定] -> [新增 IP 位址 ] 等步驟即可進行新增 IP 位址的動作,如圖:
http://img151.imageshack.us/img151/6827/network53or.jpg



環境驗證

Windows 下檢查 Perl 指定模組是否已安裝:


C:\> ppm query File-Basename-Object
C:\> ppm query File-Spec
C:\> ppm query Mail-Sendmail
C:\> ppm query RRDs ; 這是 RRDTool 的 Perl 模組名稱

Linux 下檢查 Perl 指定模組是否已安裝(紅色部份表使用者輸入指令):


somebody@somehost ~/perl $ perl -MCPAN -e "shell"
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.7602)
ReadLine support available (try 'install Bundle::CPAN')

cpan> m Mail::Sendmail
CPAN: Storable loaded ok
Going to read /home/ada/.cpan/Metadata
Database was generated on Wed, 21 Jun 2006 22:28:16 GMT
Module id = Mail::Sendmail
DESCRIPTION Simple platform independent mailer
CPAN_USERID MIVKOVIC (Milivoj Ivkovic <[email protected]>)
CPAN_VERSION 0.79
CPAN_FILE M/MI/MIVKOVIC/Mail-Sendmail-0.79.tar.gz
DSLI_STATUS Rdpf (released,developer,perl,functions)
MANPAGE Mail::Sendmail v. 0.79 - Simple platform independent mailer
INST_FILE /usr/lib64/perl5/vendor_perl/5.8.8/Mail/Sendmail.pm
INST_VERSION 0.79

cpan> m LWP
Module id = LWP
DESCRIPTION Libwww-perl
CPAN_USERID LWWWP (The libwww-perl mailing list <[email protected]>)
CPAN_VERSION 5.805
CPAN_FILE G/GA/GAAS/libwww-perl-5.805.tar.gz
DSLI_STATUS RmpO (released,mailing-list,perl,object-oriented)
MANPAGE LWP - The World-Wide Web library for Perl
INST_FILE /usr/lib64/perl5/vendor_perl/5.8.7/LWP.pm
INST_VERSION 5.803

Windows 上檢查 RRDTool 是否安裝完成


C:\>rrdtool
RRDtool 1.2.10 Copyright 1997-2005 by Tobias Oetiker <[email protected]>
Compiled Fri Jun 17 17:20:20 EST 2005

Usage: rrdtool [options] command command_options

Valid commands: create, update, updatev, graph, dump, restore,
last, first, info, fetch, tune, resize, xport

RRDtool is distributed under the Terms of the GNU General
Public License Version 2. (www.gnu.org/copyleft/gpl.html)

For more information read the RRD manpages


C:\>

Linux 上檢查 RRDTool 方式同 Windows。
檢查網路是否通連:請分別 ping 192.168.1.1 ( ATU-R IP ) 及 www.hinet.net 是否都有回應即可確認,如下範例。


someone@somehost ~/perl $ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=9.06 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=0.693 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=255 time=0.693 ms

--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 0.693/3.482/9.061/3.945 ms
someone@somehost ~/perl $ ping www.hinet.net
PING www.hinet.net (61.219.38.89) 56(84) bytes of data.
64 bytes from www.hinet.net (61.219.38.89): icmp_seq=1 ttl=251 time=44.7 ms
64 bytes from www.hinet.net (61.219.38.89): icmp_seq=2 ttl=251 time=41.2 ms
64 bytes from www.hinet.net (61.219.38.89): icmp_seq=3 ttl=251 time=41.6 ms

--- www.hinet.net ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 41.221/42.525/44.712/1.564 ms
someone@somehost ~/perl $



準備 Perl 命令稿

將下載後的 Perl 命令稿解壓到指定目錄下(以 Windows 平台為例,可解壓縮到 C:\ATUR-Stat 下),目錄中應有 4 隻 .pl 命令稿。
以 SpeedTouch 340 為例,負責擷取資料的命令稿為 ST340.pl,而 ST340-Bandwidth.pl 及 ST340-State.pl 則為繪製圖表之用;AR4031B 也有一模一樣的檔案命名方式。
資料擷取命令稿中負責擷取 ATU-R 管理頁面內的訊息,並將資料寫入資料庫(如:ST340.rrd)中,且可在下載頻寬低於指定門檻時發出通知信件。
為確保通知信件可以正確傳達,所以必須自行修改命令稿,請參考以下說明:


# 寄信用 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 之值
# cp950 是本命令稿使用的中文編碼,Unicode 下需改為 UTF-8 且命令稿要存成 UTF-8 格式
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.rrd 檔 (AR4031B.pl 則產生AR4031B.rrd 檔)


C:\> perl C:\ATUR-Stat\ST340.pl

測試過後請刪除 ST340.rrd 檔,因這尚非正式記錄作業。
警示信件範例,我只申請 8M 頻寬,當然不會達到 9000 Kbps 的門檻囉!
http://img221.imageshack.us/img221/3217/mailalarm9rt.th.jpg (http://img221.imageshack.us/my.php?image=mailalarm9rt.jpg)


排程作業

請設定讓作業系統定時於每小時的 00, 10, 20, 30, 40, 50 分執行一次 ST340.pl,在設定排程作業執行命令時請輸入以下完整的操作指令應如下所示


C:\Perl\bin\perl.exe C:\ATUR-Stat\ST340.pl

請特別注意 Windows 上的排程作業是否如預期般正常動作!
Linux 上可透過 crontab 輕易完成排程作業之設定。


繪製作業

當資料擷取報一定數量後(先等 2 小時?)即可進行圖表繪製作業。
透過以下命令可以隨時繪製相關圖表。


C:\> perl C:\ATUR-Stat\ST340-Bandwidth.pl
C:\> perl C:\ATUR-Stat\ST340-State.pl

預設情況下會分別繪製過去 12 小時、過去一天、過去一週、過去一月、及過去一年等不同週期的圖表,圖檔檔名則依命令稿不同而有不同的輸出,如下所示:


someone@somehost ~/perl $ perl AR4031B-State.pl
Graph File: ./AR4031B-State-1y.PNG
Graph Width: 497
Graph Height: 385
Graph File: ./AR4031B-State-1m.PNG
Graph Width: 497
Graph Height: 385
Graph File: ./AR4031B-State-1w.PNG
Graph Width: 497
Graph Height: 385
Graph File: ./AR4031B-State-1d.PNG
Graph Width: 497
Graph Height: 385
Graph File: ./AR4031B-State-12h.PNG
Graph Width: 497
Graph Height: 385

若想繪製不同週期的圖表時,可自行修改繪圖命令稿中的以下變數:


# 設定輸出週期,可用的單位有 小時(h),日數(d),週數(w),月數(m),年數(y)
# 不過資料保存設定上只保留近兩年內的結果
my @period = qw { 1y 1m 1w 1d 12h };

產生不同格式的圖檔 - 修改繪圖命令稿中的 $imgFormat 變數可以更改輸出的圖檔格式,如下說明。


# 指定輸出格式,可選擇 PNG , SVG , EPS 或 PDF
my $imgFormat = "PNG";

修改文字訊息 - 可自行修改繪圖命令稿內 -t 或 -v 後所接的文字訊息(在 @graphSettings 變數中),但 Windows 平台下不支援中文輸出;Linux 平台上自 1.2.15 版後即可輸出中文訊息。如:
http://blog.adahsu.net/rrdtool/images/T07A-Bandwidth-1d.png
修改線條寬度/種類 - 每一個資料源可以用 3 種不同粗細的線條或以區塊填滿方式顯示,如下說明。


# 紅色字體部份有以下選擇
# 1. LINE3(最粗)
# 2. LINE2
# 3. LINE1(最細)
# 4. AREA(區塊填滿)
'LINE2:RATE_DOWNSTREAM#0000ff:Downstream Rate (Kbps)\: '

修改顏色 - 每一個資料源可以自行指定一種顏色,如下說明。


# 藍色部份即為顏色值設定,使用 RGB 格式
'LINE2:RATE_DOWNSTREAM#0000ff:Downstream Rate (Kbps)\: '



錯誤處理

命令稿中已限制每 10 分鐘只能更新一次,若重覆執行時會出現以下的錯誤訊息,這是正常的。


someone@somehost ~/perl $ perl AR4031B.pl
ERROR while updating ./AR4031B.rrd: illegal attempt to update using time 1151044800 when last update time is 1151044800 (minimum one second step)



http://creativecommons.org/images/public/somerights20.png (http://creativecommons.org/licenses/by-nc-sa/2.5/tw/)

贊助商連結


AdaHsu
2006-06-24, 12:33 AM
其實,上述的命令稿應該可以經過修整後為 Catci (http://www.cacti.net) 所用。Cacti 用的資料庫其實也是 RRDTool,而這就有機會讓 RRDTool 也能在 Windows 上講中文了。

然後,產生出來的圖檔能幹嘛呢?

直接瀏覽、檢視是個方法,不過如果也能自動更新到網站上的話會更方便檢視喔!以下是個人的 AR4031B 最近 12 小時內的狀態異動情形!

最近 12 小時頻寬變動情形
http://blog.adahsu.net/rrdtool/images/T07A-State-12h.png

最近 12 小時線路狀態變動情形
http://blog.adahsu.net/rrdtool/images/T07A-Bandwidth-12h.png

youngboris
2006-06-24, 09:45 AM
請問這個方法可以做成一台PC透過internet去擷取internet上的多處ATUR的資訊,統一集中管理嗎?:)

AdaHsu
2006-06-24, 09:55 AM
不可能!因為...

192.168.1.1 是 private IP, Internet 上的網路節點是看不到的!

不過話說回來,isp 機房是有可能這麼搞的,因為他們有專屬迴路....

youngboris
2006-06-24, 10:08 AM
不可能!因為...

192.168.1.1 是 private IP, Internet 上的網路節點是看不到的!

不過話說回來,isp 機房是有可能這麼搞的,因為他們有專屬迴路....

所以小弟才問可否有方法可以用在internet上?

一般很多ATUR都是跑bridge mode,都沒有固定IP可以連入看ATUR的SNMP資訊,不知道有何方法可以解決此問題?

又一台ATUR就要一台PC的話,似乎不是用在必須集中管理多條ADSL線路狀況的情形下使用...:|||:

AdaHsu
2006-06-24, 10:21 AM
private IP 只能由 private IP 去訪問。
文章中提到的網路設定 IP Alias 目的也就是要讓 網路卡 透過設定兩個 IP 的方式而有機會與 ATU-R 同在一個網段下。

透過這個畫面設定,是可以讓一台 PC 同時與多個 ATU-R 處在同一國之下的。只要路由設定能 OK 的話!
http://img132.imageshack.us/img132/3782/network47kp.th.jpg] (http://img132.imageshack.us/my.php?image=network47kp.jpg)

從這裡忽然想到,如果透過 Port Forwarding 方式可否達到你的需求呢?
當然,這只有在大型、多點企業上才會有這種環境可以測試。

ps. AR4031B 的 SNMP 資訊比 SpeedTouch 340 少很多... =.= 最後我才改用直接捉網頁的方式去擷取資料的...

youngboris
2006-06-24, 10:29 AM
private IP 只能由 private IP 去訪問。
文章中提到的網路設定 IP Alias 目的也就是要讓 網路卡 透過設定兩個 IP 的方式而有機會與 ATU-R 同在一個網段下。

透過這個畫面設定,是可以讓一台 PC 同時與多個 ATU-R 處在同一國之下的。只要路由設定能 OK 的話!
http://img132.imageshack.us/img132/3782/network47kp.th.jpg] (http://img132.imageshack.us/my.php?image=network47kp.jpg)

從這裡忽然想到,如果透過 Port Forwarding 方式可否達到你的需求呢?
當然,這只有在大型、多點企業上才會有這種環境可以測試。

ps. AR4031B 的 SNMP 資訊比 SpeedTouch 340 少很多... =.= 最後我才改用直接捉網頁的方式去擷取資料的...
謝謝樓主說明...
樓主說的方法只能侷限在單一地理位置...
如果多台ATUR是在不同地理位置,應該是沒有辦法透過路由設定搞定的...
Anyway,還是謝謝樓主的經驗分享...:)

AdaHsu
2006-06-24, 09:09 PM
沒有喔... Port Forwarding 本來就是目前 Firewall 下架設各服 Service 常用的方法,並沒有侷限在單一地理位置上喔!

再說要集中管理並不表示只能集中收集資料啊,在各地的某 Server 中加入資料擷取程序並上傳到中控中心加以保存或繪圖都可以啊...

反正收不到檔案就表示網路爛掉了... ( 快去跟 isp 投訴有瞬斷情形... )

youngboris
2006-06-24, 11:24 PM
沒有喔... Port Forwarding 本來就是目前 Firewall 下架設各服 Service 常用的方法,並沒有侷限在單一地理位置上喔!

再說要集中管理並不表示只能集中收集資料啊,在各地的某 Server 中加入資料擷取程序並上傳到中控中心加以保存或繪圖都可以啊...

反正收不到檔案就表示網路爛掉了... ( 快去跟 isp 投訴有瞬斷情形... )

小弟的意思是,希望只透過一台有真實IP的PC就可以透過internet去把分散在各地的ATUR資訊收回來...:)
不然每個地方都得放台PC....太傷本了...:|||:

AdaHsu
2006-06-25, 10:49 AM
隨便找各註點單位中一台現役的 Server 去兼任即可啊...
像是和 dhcp server / ftp server 併在一起的話並不會有多餘的費用啊。