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/)
贊助商連結
本文採用創意公用授權條款 (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/)
贊助商連結