1、前言
在開始玩本次實作以前請先確定您的 SNMP 及 MRTG 已安裝並正確定設定,本次實作為利用 MRTG 機制,了解目前 Web Server 的 Http Ping Response Time 情況。文章目錄
1、前言2、實作環境
3、安裝及設定
步驟1.安裝 http_ping 套件
步驟2.將 http_ping 統計結果寫入指定檔案
步驟3.產生檔案
步驟4.寫入排程
2、實作環境
- FreeBSD 6.1-RELEASE
- net-snmp-5.2.3_3
- mrtg-2.14.5,1
- http_ping-20050629
- perl, v5.8.8
3、安裝及設定
步驟1.安裝 http_ping 套件
http_ping 與一般 ping 的差異性在哪? http_ping 固名思義在於送出的是 HTTP Request (也就是計算擷取 HTTP 網頁所耗費的 Total、Connect、Response、Data 時間),而不像傳統的 Ping 是送出 ICMP Echo Requests,依如下步驟安裝 http_ping 套件吧。# cd /usr/ports/net/http_ping //切換至安裝路徑
# make install clean //安裝套件並清除暫存檔案
http_ping 指令語法如下:
# /usr/local/bin/http_ping --help
usage: /usr/local/bin/http_ping [-count n] [-interval n] [-quiet] [-proxy host:port] url
[-count n]: 指定抓取 n 次後停止 (預設為持續的抓取直到使用者中斷為止)
[-interval n]: 指定每次抓取的間隔時間 n 秒 (預設為5秒)
[-quiet]: 指定在程式執行後只顯示統計結果
[-proxy host:port]: 指定使用的 Proxy 及 Port
步驟2.將 http_ping 統計結果寫入指定檔案
此次實作為利用 http_ping 統計至 www.tfn.net.tw 的時間 (在 TFN ADSL 線路上)。- http_ping.tfn:將 http_ping 統計結果寫入 tfn.a 內。
- tfn-get:取得 tfn.a 內的 Response 欄位值。
- tfn.a 及 tfn.b:http_ping 統計暫存檔。
- tfn-avg:取得 tfn.b 內 Response 欄位值的平均值與最大值。
- tfn.cfg:MRTG 設定檔。
- tfn-start:將 http_ping 統計值給 MRTG 設定檔處理成圖形化。
http_ping.tfn (http_ping 統計結果)
將 http_ping 統計結果寫入 tfn.a 內 (有 Total、Connect、Response、Data 等欄位,每個欄位又有最小值、平均值、最大值),抓取五次每次間隔二秒並只顯示統計結果,內容如下: #!/bin/sh
/usr/local/bin/http_ping -c 5 -i 2 -q http://www.tfn.net.tw > tfn.a
/usr/home/weithenn/tfn-get > tfn.b
tfn-get (Response Time)
取得 tfn.a 內的 Response 欄位值後寫入 tfn.b 內,內容如下: #!/usr/bin/perl
$ping_str=`cat tfn.a`; //印出 tfn.a 內容
$val=(split(' ',$ping_str))[30]; //分割 tfn.a 內容以空格來分割,取第 30 欄位值
print "$val\n"; //印出 $var 值並空行
tfn.a 及 tfn.b (http_ping 統計暫存檔)
http_ping 統計暫存檔 (tfn.a 及 tfn.b),其中 tfn.a 內容有 Total、Connect、Response、Data 等欄位,每個欄位又有最小值、平均值、最大值。 --- http://www.tfn.net.tw http_ping statistics ---
5 fetches started, 5 completed (100%), 0 failures (0%), 0 timeouts (0%)
total min/avg/max = 206.008/235.175/259.843 ms
connect min/avg/max = 97.603/117.629/153.51 ms
response min/avg/max = 106.046/117.286/132.036 ms
data min/avg/max = 0.223/0.2598/0.32 ms
tfn.b 內容為取得 tfn.a 內 Response 欄位值。
106.046/117.286/132.036
tfn-avg (Response Time 的平均值與最大值)
取得 tfn.b 內 Response 欄位值的平均值與最大值,內容如下: #!/usr/bin/perl
$ping_str=`cat tfn.b`;
$val=(split('/',$ping_str))[1];
$val2=(split('/',$ping_str))[2];
$val=int($val);
$val2=int($val2);
print "$val\n";
print "$val2\n";
print "0\n";
print "0\n";
tfn.cfg (MRTG 設定檔)
MRTG 設定檔,內容如下: Target[Http_Ping_TFN]: `/usr/home/weithenn/tfn-avg` //抓取 Response 欄位值
MaxBytes[Http_Ping_TFN]: 3000 //流量圖表的最大值
Title[Http_Ping_TFN]: Http_Ping_TFN Time 連線品質 MRTG 圖 //網頁的 title
PageTop[Http_Ping_TFN]: Http_Ping_TFN Time 連線品質 MRTG 圖 < TaiTung ADSL 對 TFN> //流量網頁內的標題
Options[Http_Ping_TFN]: gauge,growright
YLegend[Http_Ping_TFN]: Http_Ping_TFN Time //流量圖的 Y 軸顯示名稱
ShortLegend[Http_Ping_TFN]: ms
LegendI[Http_Ping_TFN]: 平均回應時間
LegendO[Http_Ping_TFN]: 最大回應時間
WorkDir: /usr/home/web //存放產生圖檔的路徑
Language:big5 //使用語系
tfn-start (統計值給 MRTG 設定檔處理成圖形化)
將 http_ping 統計值給 MRTG 設定檔處理成圖形化,內容如下: /usr/home/weithenn/http_ping.tfn //http_ping 開始統計
/usr/local/bin/mrtg /usr/local/etc/mrtg/tfn.cfg //MRTG 分析 http_ping 統計結果
rm -rf /usr/home/weithenn/tfn.* //刪除 http_ping 暫存檔
步驟3.產生檔案
產生檔案,下列指令執行 2 ~ 3 次到沒錯誤訊息後就代表完成了。# /usr/home/weithenn/tfn-start
步驟4.寫入排程
將如下指令寫入排程內以便達成自動產生流量圖表 (每五分鐘執行一次)。# crontab -e
*/5 * * * * /usr/home/weithenn/tfn-start //每五分鐘執行一次