出處:http://www.LinuxByte.net/
作者:jogs(LinuxByte)
發布日期:2004-7-27
最近研究了下mrtg的使用
關於mrtg是干嗎的就不說了,直接進入正題
安裝:
mrtg需要有以下包
gcc,Perl,gd,libpng,zlib
安裝過程:
./configure --prefix=/usr/local/mrtg
make
make install
配置:
mrtg重要的只有2個地方
一是就是它的conf文件
二是獲取參數的源
它可以從snmp或者自寫腳本來取得數據,不過linux下感覺snmp獲得數據有一定的誤差,感覺數據出來的但是實際mrtg根本拿不到,所以我以下都使用腳本方式來獲得數據
生成配置文件:
由於生成mrtg配置文件默認帶有網卡流量監控,需要snmp,所以首先需要修改下snmp的配置文件
vi /etc/snmp/snmpd.conf
將
#view systemview included mib2
修改為:
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
Access notConfigGroup "" any noauth exact systemview none none
修改為:
access notConfigGroup "" any noauth exact mib2 none none
保存,重起snmpd
首先先建立一個mrtg工作的主目錄,由於mrtg使用web方式,所以需要建立在apache的主目錄下
mkdir /var/www/mrtg
然後使用mrtg的cfgmaker命令生成mrtg的配置文件
/usr/local/mrtg/bin/cfgmaker --output /etc/mrtg.cfg
[email protected]
此處192.168.0.1為本機ip
mrtg.cfg配置文件生成後,會默認包含本機所有網卡的監控信息,如不需要可以刪除
vi /etc/mrtg.cfg
將
# for UNIX
# WorkDir: /home/http/mrtg
修改為
# for UNIX
WorkDir: /var/www/mrtg
此處為我們的mrtg主目錄
加入
Language: gb2312
指定頁面顯示語言為中文
制作首頁
/usr/local/mrtg/bin/indexmaker --output=/var/www/mrtg/index.Html /etc/mrtg.cfg
indexmaker會依據你的mrtg.cfg自動創建一個訪問頁面
正確保存配置文件後執行
/usr/local/mrtg/bin/mrtg /etc/mrtg.cfg
此時會報告錯誤,不用理會,連續執行3次後錯誤應該會消失,如還繼續保錯,則應為配置文件出錯
注意:只有使用mrtg命令時,mrtg才會依據mrtg.cfg裡的設置取值.
到這裡,基本的mrtg已配置完成,確認snmp和httpd都已啟動,打開浏覽器,輸入http://192.168.0.1/mrtg就
可以看到你的網卡流量圖了.
此時的mrtg只可以監控網卡流量,如果需要監控其他則需要自己編寫腳本和mrtg.cfg來實現
以下是一個apache連接的例子
首先再mrtg.cfg裡加入apache連接的配置段
Target[apache_conn]: `/bin/mrtg.apa.pl`
Options[apache_conn]: gauge,nopercent,growright
Directory[apache_conn]:apache_conn
MaxBytes[apache_conn]: 4000
YLegend[apache_conn]: apache連接數
ShortLegend[apache_conn]: 個
LegendI[apache_conn]: apache總連接數:
LegendO[apache_conn]: apache當前連接數
Title[apache_conn]: apache連接數
PageTop[apache_conn]: <h1>apache連接數</h1>
Target指的是mrtg從那裡取畫曲線的值,此處可以從snmp和腳本取值,如從腳本取值需注意,需要前後用`來指定腳本路徑而不是' .
[]指這個配置段的名稱,這裡為apache_conn,屆時會在mrtg的workdir裡建立同名的目錄
Maxbytes指mrtg取值後能表現的最大值
YLegend指再圖標中縱向的名稱
ShortLegend指在圖標中數值後面所跟的單位
LegendI 傳遞過去的第一個值
LegendO 傳遞過去的第二個值
Title 網頁title
Pagetop 網頁顯示名稱
mrtg.apa.pl
#!/usr/bin/perl
$hostname=`hostname`;
$hostname=~s/\s+$//;
$apache_all_conn=`netstat -angrep 192.168.0.1:80wc -l`;
$apache_conn=`netstat -angrep 192.168.0.1:80grep ESTABLISHEDwc -l`;
$apache_all_conn=~s/\n$//;
$apache_conn=~s/\n$//;
$apache_all_conn=~s/^\s+\s+$//;
$apache_conn=~s/^\s+\s+$//;
$gettime=`uptimeawk '{print \$1" "\$3" "\$4}'`;
$gettime=~s/\,\n$//g;
print("$apache_all_conn\n");
print("$apache_conn\n");
print("$gettime\n");
print("$hostname\n");
以上腳本為perl編寫,由於apache的連接可以使用netstat查看,所以我用裡一個簡單的shell命令組合來獲取apache的總連接數和當前建立連接的連接數.
需要注意以下幾點
1) 使用命令傳遞值給mrtg時,mrtg只能接受4個參數,真正用於畫圖的只有2個
2) 4個參數必須依次為 值1,值2,運行時間,主機名
3) 4個參數後不得有\n等換行符
由於mrtg.cfg的改變,所以必須依次使用以下命令
/usr/local/mrtg/bin/indexmaker --output=/var/www/mrtg/index.html /etc/mrtg.cfg
使用mrtg的indexmaker重生成index.html文件,否則你無法看到新加入的apache連接的監控.
/usr/local/mrtg/bin/mrtg /etc/mrtg.cfg
使用mrtg命令傳入數值,同樣會報3次錯,忽略即可
再打開浏覽器,輸入地址,應該可以看到首頁除了網卡的流量外再下方會加入apache連接的圖
確認無誤後,可再/etc/mrtg.cfg裡加入
RunAsDaemon: Yes
在使用一次
/usr/local/mrtg/bin/mrtg /etc/mrtg.cfg
mrtg就會使用daemon方式運行
你以後要做的只是每次使用浏覽器看看圖就可以了,是不是很輕松
最後附上我目前能做到監控的一些信息,由於屏幕有限所以沒法截完整,目前已做到可以監控如下信息
網卡,tcp連接數,系統進程數,內存使用,swap使用,cpu負載,pop連接數,smtp連接數,diskio等
如果大家需要我可以貼出所有腳本
由於mrtg.cfg的改變,所以必須依次使用以下命令
/usr/local/mrtg/bin/indexmaker --output=/var/www/mrtg/index.html /etc/mrtg.cfg
使用mrtg的indexmaker重生成index.html文件,否則你無法看到新加入的apache連接的監控.
/usr/local/mrtg/bin/mrtg /etc/mrtg.cfg
使用mrtg命令傳入數值,同樣會報3次錯,忽略即可
再打開浏覽器,輸入地址,應該可以看到首頁除了網卡的流量外再下方會加入apache連接的圖
確認無誤後,可再/etc/mrtg.cfg裡加入
RunAsDaemon: Yes
在使用一次
/usr/local/mrtg/bin/mrtg /etc/mrtg.cfg
mrtg就會使用daemon方式運行
你以後要做的只是每次使用浏覽器看看圖就可以了,是不是很輕松
最後附上我目前能做到監控的一些信息,由於屏幕有限所以沒法截完整,目前已做到可以監控如下信息
網卡,tcp連接數,系統進程數,內存使用,swap使用,cpu負載,pop連接數,smtp連接數,diskio等
如果大家需要我可以貼出所有腳本