MRTG(Multi Router Traffic Grapher)是一套可用來繪出網絡流量圖的軟件,由瑞士奧爾滕的Tobias Oetiker與Dave Rand所開發,此軟件以GPL授權。
下面是網卡流量監控圖
MRTG最早的版本是在1995年春天所推出,以Perl所寫成,因此可以跨平臺使用,它利用了SNMP送出帶有物件識別碼(OIDs)的請求給要查詢的網絡設備,因此設備本身需支援SNMP。MRTG再以所收集到的資料產生HTML檔案并以GIF或PNG格式繪制出圖形,并可以日、周、月等單位分別繪出。它也可產生出最大值最小值的資料供統計用。
原本MRTG只能繪出網絡設備的流量圖,后來發展出了各種plug-in,因此網絡以外的設備也可由MRTG監控,例如服務器的硬盤使用量、CPU的負載等。
Mrtg可用來監視linux的各種詳細參數,如果不明白可以去搜索一下就知道了.今天我主要講解的是他的設置方法.
一、前期準備
(1)MRTG需要以SNMP服務為基礎,所以請確保你的系統已經啟用了此服務,修改SNMP的配置:#vi /etc/snmp/snmpd.conf將62行:access notConfigGroup "" any noauth exact systemview none none改為access notConfigGroup "" any noauth exact mib2 none none把第89行前面的注釋符號#去掉,變成view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
(2)linux Mrtg監控主機流量啟動http服務和snmp服務:首先查看兩個服務在系統啟動時是否已經開啟#chkconfig --list | grep nginx沒有啟動的話需要修改下在什么啟動模式下要自己啟動:# chkconfig --level 35 nginx on對 snmpd 服務采用同樣的設置,現在手動啟動下#service nginx start#service snmpd start啟動之後最好是用setup配置服務,讓其隨機自動啟動
查看端口的開啟狀況也可確認其是否已經被啟動# netstat -tunlp |grep snmptcp 0 0 0.0.0.0:199 0.0.0.0:* LISTEN 4973/snmpdudp 0 0 0.0.0.0:161 0.0.0.0:* 4973/snmpd
(3)MRTG生成供瀏覽圖像需要http服務的支持,同時也需要gd、libpng和zlib三個軟件包的支持,而gd的正常運行也需要其它的幾個軟件,(系統默認自帶,如果沒有自帶則需要我們手工安裝)1.安裝zlib-1.2.3#tar zxvf zlib-1.2.3.tar.gz#cd zlib-1.2.3#./configure --prefix=/usr/local/zlib#make#make install
2.安裝httpd-2.2.4#tar zxvf httpd-2.2.4.tar.gz#cd httpd-2.2.4#./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-track-vars --enable-rewrite --with-z-dir=/usr/local/zlib#make#make install啟動httpd/usr/local/apache/bin/apachectl -k start
3.安裝libpng-1.2.14#tar zxvf libpng-1.2.14.tar.gz# cd libpng-1.2.14# cp scripts/makefile.linux makefile# make (若是提示找不到zlib庫文件或者頭文件,多半是makefile文件里zlib的默認路徑有誤??删庉媘akefile文件,找到zlib項并重新指定路徑到/usr/local/zlib/lib和/usr/local/zlib/include)。# make install
4.安裝freetype-2.1.10# tar -zvxf freetype-2.1.10.tar.gz# cd freetype-2.1.10# mkdir -p /usr/local/freetype# ./configure --prefix=/usr/local/freetype# make;make install
5.安裝jpegsrc.v6bjpeg默認不會自建目錄,因此需手動建立目錄:# mkdir -pv /usr/local/jpeg6/{,bin,lib,include,man/{,man1},man1}安裝#tar zxvf jpegsrc.v6b.tar.gz# ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static# make# make install# make install-lib
6.安裝libxml2-2.6.19# tar -zxf libxml2-2.6.19.tar.gz# cd libxml2-2.6.19# mkdir -p /usr/local/libxml2# ./configure --prefix=/usr/local/libxml2# make; make install#cp xml2-config /usr/bin
7.安裝GD-2.0.33庫# tar -zvxf gd-2.0.33.tar.gz# mkdir -p /usr/local/gd2# cd gd-2.0.33# ./configure --prefix=/usr/local/gd2 --with-jpeg=/usr/local/jpeg6/ --with-png=/usr/local/lib/ --with-zlib=/usr/local/zlib/ --with-freetype=/usr/local/freetype/# make# make install
(4)修改系統語言配置#vi /etc/profile增加如下兩行LC_ALL=CLANGUAGE=on
二、開始安裝
(1)開始安裝mrtg#cd /usr/local/src#wget http://oss.oetiker.ch/mrtg/pub/mrtg-2.14.5.tar.gz#tar zvxf mrtg-2.14.5.tar.gz#cd mrtg-2.14.5#./configure --prefix=/usr/local/mrtg 注意:“--prefix=/usr/local/mrtg”是指定的安裝路徑#make#make install
(2)配置MRTG首先為mrtg的主頁在web目錄下建立一個目錄,假如web目錄是:/home/wwwroot/在此目錄下新建目錄mrtg和sh即:#cd /home/wwwroot/#mkdir mrtg#cd mrtg#mkdir sh
如果路徑嫌長感到不方便的話可以建立軟連接:#cd /#ln –s /home/wwwroot/mrtg _mrtg#ln –s /usr/local/mrtg/bin _mrtgbin
把一些圖片複製過去#cd /usr/local/src/mrtg-2.14.5 //進入mrtg安裝目錄#cp ./images/*.* /_mrtg/
然后需要創建一個配置文件:#/_mrtgbin/cfgmaker public@改成本機IP --output=/_mrtg/lxy.cfg
修改配置文件:#vi /_mrtg/lxy.cfg將 #WorkDir:/home/http/mrtg 去掉注釋并改為 WorkDir: /home/wwwroot/mrtg (此處是MRTG的WEB目錄)將 #Options[_]: growright, bits 前面的#去掉,靠左對齊在最后加上Language: big5,然后保存
(3)測試配置檔(如果出錯就多測幾次)LANG=C /_mrtgbin/mrtg /_mrtg/lxy.cfg
===================================================(4)根據下方的說明建立sh和pl檔案,然後修改.sh檔案讓其可執行(.sh檔案內容在下方)#cd /_mrtg/sh#chmod 0755 *
(5)生成MRTG網站首頁文件:已在root目錄下#/_mrtgbin/indexmaker --output=/_mrtg/index.html --title="Lidalins MRTG" /_mrtg/lxy.cfg
(6)接下來運行程序#/_mrtgbin/mrtg /_mrtg/lxy.cfg 有的人用這種方法啟動#env LANG=C /_mrtgbin/mrtg /mrtg/lxy.cfg如果有警告或錯誤,則多運行幾次,當警告或錯誤不再出現時就OK了
(7)MRTG生成的web頁面是靜態的,為了能讓其不斷的刷新,需要將以上命令添加進crontab#crontab -e添加如下一行*/1 * * * * /_mrtgbin/mrtg /_mrtg/lxy.cfg保存,然后reboot打開瀏覽器,輸入 http://改成本機IP/mrtg 應該就可以看到網絡使用情況的曲線了,一分鐘后再看比較準確!
注意:如果你設置了中級防火墻而又沒有開啟80端口訪問,需要編輯/etc/sysconfig/iptables允許別人訪問80端口
三、mrtg.cfg 里面參數的意思Target:是要執行的腳本Xsize:生成圖表的橫向寬度(最大600)Ysize:生成圖表的縱向高度(最大200)Title:標題kmg: Change the default multiplier prefixesYtics:縱向劃分為幾個塊(格子)MaxBytes:圖表縱向數值的最大上限PageTop:頁面上面的提示kilo:一般是寫1024,如果需要的話,是1000在計算機里的單位LegendI:從SHELL返回的數據中的第一個LegendO:從SHELL返回的數據中的第二個Options: growright,表示圖表向右延展
四、配置其他範例注意:修改了配置一定要重設第二大步驟中的第(3)(4)(5)(6)步驟
其他配置的部份均放入此資料夾下#cd /_mrtg/sh
(1)監視內存使用狀況建立腳本文件#vi mem.sh
添加(步驟五的)腳本:保存后要讓其具有執行權限#chmod 0755 /_mrtg/sh/*
(2)編輯/mrtg/lxy.cfg并添加(步驟五的)內容:
五、各個SHELL(修改了配置之後要重新生成首頁,然後重啟)(1)MEMORY:mem.sh#!/bin/bash# This script to monitor the mem usage.totalmem=`/usr/bin/free |grep Mem |awk {print $2}`usedmem=`/usr/bin/free |grep Mem |awk {print $3}`echo "$totalmem"echo "$usedmem"
編輯MRTG的配置文件:MaxBytes的值根據實際狀況修改# MemTarget[memory]: `/_mrtg/sh/mem.sh`Unscaled[memory]: dwymMaxBytes[memory]: 2048000Title[memory]:MemoryShortLegend[memory]: &kmg[memory]:kB,MBkilo[memory]:1024YLegend[memory]: Memory Usage :Legend1[memory]: Total Memory :Legend2[memory]: Used Memory :LegendI[memory]: Total Memory :LegendO[memory]: Used Memory :Options[memory]: growright,gauge,nopercentPageTop[memory]:<H1>Memory</H1>(2)SWAP:swap.sh#!/bin/bash# This script to monitor the swap usage.totalswap=`/usr/bin/free |grep Swap |awk {print $2}`usedswap=`/usr/bin/free |grep Swap |awk {print $3}`echo "$totalswap"echo "$usedswap"
編輯MRTG的配置文件:MaxBytes根據實際狀況修改# SwapTarget[swap]:`/_mrtg/sh/swap.sh`Unscaled[swap]: dwymMaxBytes[swap]: 3048000Title[swap]:SWAPShortLegend[swap]: &kmg[swap]:kB,MBkilo[swap]:1024YLegend[swap]: Swap UsageLegend1[swap]: Total SwapLegend2[swap]: Used SwapLegendI[swap]: Total SwapLegendO[swap]: Used SwapOptions[swap]: growright,gauge,nopercentPageTop[swap]:<H1>Swap</H1>(3)CPU:cpu.sh#!/bin/bash# run this script to check the mem usage.totalmem=`/usr/bin/free |grep Mem |awk {print $2}`usedmem=`/usr/bin/free |grep Mem |awk {print $3}`UPtime=`/usr/bin/uptime | awk {print $3""$4""$5}`echo $totalmemecho $usedmemecho $UPtimehostname
編輯MRTG的配置文件:MaxBytes根據實際狀況修改# CpuTarget[cpu]: `/_mrtg/sh/cpu.sh`MaxBytes[cpu]: 100Title[cpu]: CPUOptions[cpu]: gauge,nopercent,growrightYLegend[cpu]: CPU loading (%)ShortLegend[cpu]:%LegendO[cpu]: & CPU USERLegendI[cpu]: & CPU SYSTEMPageTop[cpu]: <H1>CPU</H1>(4)磁盤佔用:df.pl#!/usr/bin/perl# output(df -kl) looks like this:# Filesystem 1k-blocks Used Available Use% Mounted on# /dev/md0 95645100 30401312 64272080 33% /# /dev/hde1 14119 1159 12231 9% /boot## In which case, this script returns :# 95659219# 30402503# when run.foreach $filesystem (`df -kl | grep -v "Filesystem"`){@df = split(/s+/,$filesystem);$total += $df[1];$usage += $df[2];}print "$totaln";print "$usagen";hostname
編輯MRTG的配置文件:MaxBytes根據實際狀況修改# Disk usedTarget[disk]: `/_mrtg/sh/df.pl`Title[disk]: Disk SpaceUnscaled[disk]: dwymMaxBytes[disk]: 115247550kmg[disk]: KB,MB,GBLegendI[disk]: Total Disk SpaceLegendO[disk]: Used Disk SpaceLegend1[disk]: Total Disk SpaceLegend2[disk]: Used Disk SpaceYLegend[disk]: MegabytesShortLegend[disk]: &Options[disk]: growright,gauge,nopercentPageTop[disk]: <H1>Disk Space</H1>(5)磁盤I/O:io.sh#!/bin/bash# This script will monitor the KBread/sec &KBwriten/sec of Disk.# Creater: CCC IT loren ext:2288 2005/8/3# As sda ,sdb,sdc,sdd,hda.# disk=sdahd=sdadisk=/dev/$hdKBread_sec=`iostat -x $disk|grep $hd |awk {print $8}`KBwrite_sec=`iostat -x $disk|grep $hd |awk {print $9}`echo "$KBread_sec"echo "$KBwrite_sec"hostname
編輯MRTG的配置文件:如果需要檢測更多的分區則修改io.sh# Disk I/OTarget[diskIO]: `/_mrtg/sh/io.sh`Title[diskIO]: Disk HDA I/OUnscaled[diskIO]: dwymMaxBytes[diskIO]: 100kmg[diskIO]: KB,MB,GBLegendI[diskIO]: Disk I/O KBread/secLegendO[diskIO]: Disk I/O KBwrite/secLegend1[diskIO]: Disk I/O KBread/secLegend2[diskIO]: Disk I/O KBwrite/secYLegend[diskIO]: MegabytesShortLegend[diskIO]: &Options[diskIO]: growright,gauge,nopercentPageTop[diskIO]: <H1>Disk I/O</H1>
新聞熱點
疑難解答