經常看到說mrtg的,說論壇裡面的資料不對,其實不是不對,是有些說的不詳細而已,我剛開始作的時候也是費了不少時間的,整理一下,發到這裡吧,希望能為後來的兄弟們省下時間
前言:我實驗的機器是FreeBSD4.10,其他版本的應該也一樣,其他unix like系統估計也是可以的,因為我只用過FreeBSD,不敢肯定。另外我這篇文章的前提是你的機器上已經安裝了apache,並能正常使用,如果沒有請參考網上其他文章安裝,本文就不再贅述。
一:先介紹如何用mrtg來監控本機的流量
1:安裝 snmp
cd /usr/ports/net-mgmt/p5-SNMP
make install clean
當中會叫你填寫你的email、操作系統等等,直接回車即可。
可以用以下命令啟動snmp,/usr/local/etc/rc.d/snmpd.sh start
2:安裝 mrtg
cd /usr/ports/net-mgmt/mrtg
make install clean
3:配置 index.cfg文件監控服務器流量
/usr/local/bin/cfgmaker --output=/usr/www/mrtg/index.cfg
[email protected]
然後修改index.cfg文件,主要修改以下內容,以符合你的實際情況,此處的192.168.0.1是你要監控的網卡的ip地址。
WorkDir: /usr/www/mrtg
Options[_]: growright, bits
Language:GB2312
########################讓他5分鐘執行一次##############
RunAsDaemon: Yes
Refresh:300
######或者可以這樣:#################################
crontab -e
*/5 * * * * /usr/local/bin/mrtg /usr/www/mrtg/index.cfg
建議使用後面的方法,因為前者用RunAsDaemon的方式並不能使MRTG開機自動運行
#########################################
下面接著:
/usr/local/bin/mrtg /usr/www/mrtg/index.cfg
這個需要運行3次,前兩次都會報錯,不用去理會他,第3次就應該沒有錯誤了,不過,
若是有問題的話,就需要改index.cfg,再執行直到沒有錯誤發生為止。
制作首頁index.html:
/usr/local/bin/indexmaker --output=/usr/www/mrtg/index.html /usr/www/mrtg/index.cfg
這樣以後就可以通過:http://******/mrtg/index.html看你的代理的流量了,注意此處是以你的apache主目錄設置為/usr/www來說的,你可以根據實際情況修改。
二、監控RAM-SWAP使用情況
在/usr/www/traffic/ram下建立ram.cfg,內容為:
LoadMIBs: /usr/local/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[ramswap]: memAvailReal.0&memAvailSwap.0:
[email protected]
##192.168.0.1是本機的ip地址
Options[ramswap]: nopercent,growright,gauge,noinfo
Title[ramswap]: RAM & SWAP 使用狀況
PageTop[ramswap]: RAM & SWAP 使用狀況
MaxBytes[ramswap]: 1000000000
kMG[ramswap]: k,M,G,T,P,X
Ylegend[ramswap]: Octets
ShortLegend[ramswap]: octets
LegendI[ramswap]: RAM 可使用
LegendO[ramswap]: Swap 可使用
Legend1[ramswap]: RAM 可使用單位
Legend2[ramswap]: Swap 可使用單位
Language:Chinese
WorkDir:/usr/www/traffic/ram
說明:與一般MRTG流量設定檔大同小異,唯一的差別是來源數值。
memTotalSwap 全部的swap空間
memAvailSwap 剩余(可使用)的swap
memTotalReal 全部的內存空間
memAvailReal 剩余(可使用)的內存
然後執行:
/usr/local/bin/mrtg /usr/www/traffic/ram/ram.cfg
將會在/usr/www/traffic/ram下生成ramswap.html等文件。
這樣以後就可以通過:http://******/traffic/ram/ramswap.html看你的機器的內存使用情況了。
下面再讓它5分鐘執行一次:
crontab -e
*/5 * * * * /usr/local/bin/mrtg /usr/www/traffic/ram/ram.cfg
三、再來監控cpu使用率
安裝bsdsar這個程序來顯示cpu的使用狀態
cd /usr/ports/sysutils/bsdsar/
make install
注意存檔(/var/log/bsdsar.dat)會一直的變大,所以采用這個bsdsar必須要適時的將檔案移往他處。並更名以作為日後的查詢之用,我是把它刪除的,看看當前的就好了J
crontab -e
0 0 * * * /bin/rm /var/log/bsdsar.dat
在/usr/www/traffice/cpu下建立cpu.cfg,內容為:
Target[CPU]: `/usr/www/traffic/cpu/mrtg-cpu`
MaxBytes[CPU]: 100
Title[CPU]: CPU-Loading MRTG
PageTop[CPU]: CPU-Loading MRTG
Options[CPU]: gauge,growright
YLegend[CPU]: CPU Loading (%)
ShortLegend[CPU]: %
WorkDir:/usr/plog/traffic/cpu
LegendO[CPU]: CPU系統負載
LegendI[CPU]: CPU使用者負載
Language:Chinese
說明:Target 乃是資料的取得方式 如同MRTG測流量時的public@community.
MaxBytes:限制繪圖的最大 Loading 值,CPU Loading 的最高值就是 100% .
Title: HTML 網頁的title .
PageTop: 網頁頁面的*標題*.
Options: 采用標准格式,並且讓MRTG由右往左繪圖.
YLegend: 圖表的Y軸名稱.
ShotLegend: 定義最小的單位(%).
WorkDir: 工作區域 也就是顯示圖表的位置.
Language: 用簡體中文
LegendO[CPU] & LegendI[CPU]: 下方的說明
設定MRTG-CPU Loading 的數據取得檔案執行檔:
/usr/local/www/data/mrtg/cpu/mrtg-cpu
此檔權限需為可執行若用root執行則為700,內容:
#!/usr/bin/perl
$cpu_orig=`/usr/local/bin/bsdsar -u >; /usr/www/traffic/cpu/bsdsar.tmp`;
$cpu_str=`/usr/bin/tail -1 /usr/www/traffic/cpu/bsdsar.tmp`;
$val=(split(' ',$cpu_str))[1];
$val2=(split(' ',$cpu_str))[2];
$val=int($val);
$val2=int($val2);
print "$val\n";
print "$val2\n";
print "0\n";
print "0\n";
修改權限:chmod 700 mrtg-cpu
/usr/local/bin/mrtg /usr/www/traffic/cpu/cpu.cfg就會生成cpu.html等文件了。
可以通過http://******/traffice/cpu/cpu.html看到cpu的使用情況了。
我設定每10分鐘run一次.
*/10 * * * * /usr/local/bin/mrtg /usr/www/traffic/cpu/cpu.cfg
由於我是每隔10分鐘run一次,所以原先裝上bsdsar以後系統預設每隔20分鐘執行一次的bsdsar_gather也要修正.
修改 /etc/crontab
#20,40 8-18 * * * root /usr/local/bin/bsdsar_gather
#0 * * * * root /usr/local/bin/bsdsar_gather
*/10 * * * * /usr/local/bin/bsdsar_gather
四、下面來介紹一下如何監控整網的流量
我們的核心交換是cisco6509,下面的交換機是cisco3524,我們沒有其他交換機,所以下面我說的命令是針對cisco的,其他的可參考手冊自己作相應的修改。
在6509的二層上設置:
set snmp rmon enable
set snmp community read-only mrtg
在FreeBSD機器上:
/usr/local/bin/cfgmaker --output=/usr/www/mrtg/6509.cfg
[email protected]
然後修改6509.cfg文件,主要修改以下內容,以符合你的實際情況,此處的10.0.0.1是6509的ip地址。
ee /usr/www/mrtg/6509.cfg
WorkDir: /usr/www/mrtg
Options[_]: growright, bits
Language:Chinese
/usr/local/bin/mrtg /usr/www/mrtg/6509.cfg
這個需要運行3次,前兩次都會報錯,不用去理會他,第3次就應該沒有錯誤了,不過,
若是有問題的話,就需要改6509.cfg,再執行直到沒有錯誤發生為止。
制作首頁index.html:
/usr/local/bin/indexmaker --output=/usr/www/mrtg/6509.html /usr/www/mrtg/6509.cfg
讓它每隔5分鐘運行一下:
crontab -e
*/5 * * * * /usr/local/bin/mrtg /usr/www/mrtg/6509.cfg
五、監控下面交換機的流量
方法類似6509,只是命令有點不同:
snmp-server community mrtg ro,其他的照抄改一下文件的名字就行了。
六、後記:
七、FAQ:
Q1:我在英文下
Max In: 935.6 kb/s (0.9%)
Max Out: 5306.4 kb/s (5.3%)
可是在中文下只顯示
最大 流入: 935.6 $1$2/秒 (0.9%)
最大 流出: 5306.4 $1$2/秒 (5.3%)
這是怎麼回事?
A1:編輯/usr/local/lib/perl5/site_perl/5.8.5/locales_mrtg.pm
查找到sub gb2312的下面
原來是這樣的:
代碼:
'([kMG]?)([bB])/s' =>; '$1$2/秒',
'([kMG]?)([bB])/min' =>; '$1$2/分',
'([kMG]?)([bB])/h' =>; '$1$2/時',
改成這樣:
代碼:
'([kMG]?)([bB])/s' =>; '$1$2/秒',
'([kMG]?)([bB])/min' =>; '$1$2/分',
'([kMG]?)([bB])/h' =>; '$1$2/時',
A2:修改你的mrtg.cfg文件。把語言一項改成:Chinese
也就是:
Language:Chinese
Q2:我運行了/usr/local/bin/cfgmaker --output=/usr/mrtg/6509.cfg
[email protected]
以後生成了四十多個Traffic Analysis for 1 -- 6509等等,我們的6509上是加了個48口的板子,
總共應該有五十多個,現在只有四十多個是不是因為我在執行這個命令的時候只有這四十多個機
器是開著的?以後他們再開的時候會不會被監控到?會自動給我生成Traffic Analysis for 1 -- 6509
這樣的表嗎?
A:沒有處於connected的端口是不能被cfgmaker抓取的。要想實現不開機流量為0,開機以後就開始監控流量,
需要自己手動更改cfg文件,把所有未使用端口的注釋去掉,注意空格和空行,一定要和cfgmaker生成的一致,
否則是抓不到的,然後再執行/usr/local/bin/mrtg /usr/www/mrtg/6509.cfg即可。
Q3:在這個機器上我只監控全部交換機上的流量,並不監控本身的流量,因為它也在6509上接著,
是不是就不需要運行snmpd了?
A:是交換機上的SNMP模組在做服務,與你的主機沒關系,你的主機自然也就不用運行SNMPD了,
但在交換機中抓到的你的這台主機的流量是反的,(即流入和流出是相反的,這個是顯然的了)
Q4:我make install的時候提示有錯誤Couldn't fetch it - please try to retrieve this ,裝不上怎麼辦?
A:那是ports安裝的時候需要的文件未能下載到,請確定你的機器已經連到網上並能訪問國際互聯網,我知道很多學校都限制了訪問國際網絡,可以通過代理下載到那些文件放到/usr/ports/distfiles/下面,然後重新執行make install即可