史上最详细的mrtg(Multi Router Traffic Grapher)设置说明

时间:2021-09-10 17:39:15

Multi Router Traffic Grapher------MRTG是一个监控网络链路流量负载的工具软件,通过snmp协议得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML 文档方式显示给用户,以非常直观的形式显示流量负载。 

一、前期准备 

(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 snmp 
tcp 0 0 0.0.0.0:199 0.0.0.0:* LISTEN 4973/snmpd 
udp 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的默认路径有误。可编辑makefile文件,找到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.v6b 
jpeg默认不会自建目录,因此需手动建立目录: 
# 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=C 
LANGUAGE=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="Lidalin's 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 prefixes 
Ytics:纵向划分为几个块(格子) 
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的值根据实际状况修改 
# Mem 
Target[memory]: `/_mrtg/sh/mem.sh` 
Unscaled[memory]: dwym 
MaxBytes[memory]: 2048000 
Title[memory]:Memory 
ShortLegend[memory]: & 
kmg[memory]:kB,MB 
kilo[memory]:1024 
YLegend[memory]:   Memory Usage : 
Legend1[memory]:   Total Memory : 
Legend2[memory]:   Used Memory : 
LegendI[memory]:   Total Memory : 
LegendO[memory]:   Used Memory : 
Options[memory]: growright,gauge,nopercent 
PageTop[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根据实际状况修改 
# Swap 
Target[swap]:`/_mrtg/sh/swap.sh` 
Unscaled[swap]: dwym 
MaxBytes[swap]: 3048000 
Title[swap]:SWAP 
ShortLegend[swap]: & 
kmg[swap]:kB,MB 
kilo[swap]:1024 
YLegend[swap]: Swap Usage 
Legend1[swap]: Total Swap 
Legend2[swap]: Used Swap 
LegendI[swap]: Total Swap 
LegendO[swap]: Used Swap 
Options[swap]: growright,gauge,nopercent 
PageTop[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 $totalmem 
echo $usedmem 
echo $UPtime 
hostname 

编辑MRTG的配置文件:MaxBytes根据实际状况修改 
# Cpu 
Target[cpu]: `/_mrtg/sh/cpu.sh` 
MaxBytes[cpu]: 100 
Title[cpu]: CPU 
Options[cpu]: gauge,nopercent,growright 
YLegend[cpu]: CPU loading (%) 
ShortLegend[cpu]:% 
LegendO[cpu]: & CPU USER 
LegendI[cpu]: & CPU SYSTEM 
PageTop[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 "$total\n"; 
print "$usage\n"; 
hostname 

编辑MRTG的配置文件:MaxBytes根据实际状况修改 
# Disk used 
Target[disk]: `/_mrtg/sh/df.pl` 
Title[disk]: Disk Space 
Unscaled[disk]: dwym 
MaxBytes[disk]: 115247550 
kmg[disk]: KB,MB,GB 
LegendI[disk]: Total Disk Space 
LegendO[disk]: Used Disk Space 
Legend1[disk]: Total Disk Space 
Legend2[disk]: Used Disk Space 
YLegend[disk]: Megabytes 
ShortLegend[disk]: & 
Options[disk]: growright,gauge,nopercent 
PageTop[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=sda 
hd=sda 
disk=/dev/$hd 
KBread_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/O 
Target[diskIO]: `/_mrtg/sh/io.sh` 
Title[diskIO]: Disk HDA I/O 
Unscaled[diskIO]: dwym 
MaxBytes[diskIO]: 100 
kmg[diskIO]: KB,MB,GB 
LegendI[diskIO]: Disk I/O KBread/sec 
LegendO[diskIO]: Disk I/O KBwrite/sec 
Legend1[diskIO]: Disk I/O KBread/sec 
Legend2[diskIO]: Disk I/O KBwrite/sec 
YLegend[diskIO]: Megabytes 
ShortLegend[diskIO]: & 
Options[diskIO]: growright,gauge,nopercent 
PageTop[diskIO]: <H1>Disk I/O</H1>