欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

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

程序员文章站 2023-11-10 08:49:46
Mrtg可用来监视linux的各种详细参数,Multi Router Traffic Grapher------MRTG是一个监控网络链路流量负载的工具软件.今天我主要讲解的是他的设置方法... 13-01-19...
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>