SNMAP+MRTG安装配置
(配置环境) Linux fc4-test 2.6.11-1.1369_FC4
MRTG简介:
Mrtg(Multi Router Traffic Grapher,MRTG)是一个监控网络链路流量负载的工具软件,它通过snmp协议从设备得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML文档方式显示给用户,以非常直观的形式显示流量负载
SNMP简介:
在运行TCP/IP协议的互联网环境中,管理协议标准是简单网络管理协议(Simple Network Management Protocol,SNMP),其定义了传送管理信息的协议消息格式及管理站和设备代 理相互之间进行消息传送的规程。
出于业界对网络管理协议标准化的迫切要求的驱动,IETF于1990发布了SNMPv1的正式RFC 文档;其设计思想重点放在保证协议的简单性、灵活性和可扩展性上,并希望把SNMP作为 一个过渡性的网管协议来作为实现对互连的网络设备进行管理时遵循的标准,待OSI的网 络管理协议—CMIP的开发、实现和标准化成熟和完善到可以在业界推广之后,再用CMIP来 替换SNMP。但是由于各种的原因,CMIP并没有替代SNMP,而SNMP发展为业界的标准。
SNMP一共发展有3个主版本,分别为SNMPv1 ,SNMPv2和SNMPv3。其中SNMPv2又分为若干个 子版本,其中SNMPv2c应用最为广泛:
SNMPv1: 是第一个正式协议版本,在RFC1155-RFC1158中定义,该版本采用了基于共同体 名的安全机制;
SNMPv2c: 这个版本被称为基于共同体名的SNMPv2,使用基于共同体名的安全机制和 SNMPv2p做出的协议操作方面的扩充,由RFC1901-RFC1906定义;
SNMPv3: 该协议版本采用基于用户的安全机制,其安全机制是在SNMPv2u和SNMPv2*基础上 进行大量的评议以后进行了更新,并且对协议机的逻辑功能模块的进行了划分而保证了良 好的可扩充性,由RFC2271-RFC2275所定义。
(一).安装前确认是否安装了以下的软件包
rpm -qa | grep perl
rpm -qa | grep zlib
rpm -qa | grep gd
rpm -qa | grep libpng
(二).本系统安装mrtg+snmp所需要用到的软件包
httpd-2.0.55.tar.gz
gd-2.0.9.tar.gz
libpng-1.2.16rc1.tar.gz
beecrypt-devel-4.1.2-8.i386.rpm
zlib-1.1.4.tar.gz
mrtg-2.15.1.tar.gz
net-snmp-5.4.tar.gz
(三).snmp+mrtg开始安装
mkdir -p /usr/local/src
cd /usr/local/src
安装:zlib/zlib-1.1.4.tar.gz
gunzip -c zlib-*.tar.gz | tar xf -
rm zlib-*.tar.gz
mv zlib-* zlib
cd zlib
./configure
make
cd ..
安装:libpng-1.0.15.tar.gz
gunzip -c libpng-*.tar.gz |tar xf -
rm libpng-*.tar.gz
mv libpng-* libpng
cd libpng
make -f scripts/makefile.std CC=gcc ZLIBLIB=../zlib ZLIBINC=../zlib
rm *.so.* *.so
cd ..
安装:gd-2.0.11.tar.gz
gunzip -c gd-2.0.11.tar.gz |tar xf -
mv gd-2.0.11 gd
cd gd
env CPPFLAGS="-I../zlib -I../libpng" LDFLAGS="-L../zlib -L../libpng" ./configure --disable-shared \
--without-freetype --without-jpeg
make
cp .libs/* .
安装:net-snmp-5.4.tar.gz
./configure --PATH
make
make install
snmpconf -g basic_setup........................生成配置文件
./snmpd -c 配置文件(snmpd.conf)..............用配置文件启动snmp
snmpwalk -v 2c localhost -c wang...............查看对象参数
[root@fc4-test bin]# netstat -aut
udp 0 0 *:snmp *:* ...............监听端口启动代表snmp配置成功
安装:mrtg-2.15.0.tar.gz
cd /usr/local/src
gunzip -c mrtg-2.15.0.tar.gz | tar xvf -
cd mrtg-2.15.0
./configure --prefix=/usr/local/mrtg-2 \
--with-gd=/usr/local/src/gd \
--with-z=/usr/local/src/zlib \
--with-png=/usr/local/src/libpng
make
make install........................mrtg成功安装
以上snmp mrtg安装成功
配置
(四).网络流量I/ O 配置
./cfgmaker --global 'WorkDir: /var/www/htdocs/mrtg' --output=/var/www/htdocs/mrtg/net/mrtg.cfg wang@10.4.5.211 生成配置文件
./indexmaker --output=/var/www/htdocs/mrtg/mrtg.html /var/www/htdocs/mrtg/net/mrtg.cfg 根据配置文件生成首页
./mrtg /var/www/htdocs/mrtg/net/mrtg.cfg 数据的采集(前面两次会出错,多运行几次就没有问题.)
放到cron里,让其每5分钟采集一下网络流量数据
crontab -e
*/5 * * * * mrtg /var/www/htdocs/mrtg/net/mrtg.cfg
URL: 打开监控页面
(五).CPU负载使用情况配置
CPU负载监控配置文件
[root@fc4-test cpu]# cat mrtg.cfg.cpu
### Global Config Options
### To get bits instead of bytes and graphs growing to the right
WorkDir: /var/www/htdocs/mrtgcpu
Language: Chinese
Target[localhost]: `/var/www/htdocs/mrtgcpu/cpu/mrtg.cpu`
MaxBytes[localhost]: 100
Options[localhost]: gauge, nopercent, growright
YLegend[localhost]: CPU loading (%)
ShortLegend[localhost]: %
LegendO[localhost]: CPU TRAFFIC IN ;
LegendI[localhost]: CPU TRAFFIC OUT;
Title[localhost]: CPU MONITOR
PageTop[localhost]: CPU
System: | Linux fc4-test 2.6.11-1.1369_FC4 |
配置文件所用到的脚本
[root@fc4-test cpu]# cat mrtg.cpu
#!/bin/bash
# ......... CPU .......
# 1. .... sar ... CPU . user . System ...
cpuusr=`/usr/bin/sar -u 1 3 | grep Average | awk '{print $3}'`
cpusys=`/usr/bin/sar -u 1 3 | grep Average | awk '{print $5}'`
UPtime=`/usr/bin/uptime | awk '{print $3 " " $4 " " $5}'`
# 2. ..............
echo $cpuusr
echo $cpusys
echo $UPtime
echo "fc4-test"
执行mrtg /var/www/htdocs/mrtgcpu/cpu/mrtg.cfg.cpu 根据配置文件生成html页面
放到cron里,让其每5分钟执行一次
*/5 * * * * mrtg /var/www/htdocs/mrtgcpu/cpu/mrtg.cfg.cpu
URL: 打开监控页面
也可以不用脚本,用snmp的管理对象库MIB的相关对象参数,也可以完成以上的功能,例如:如下的配置文件
[root@fc4-test cpu]# cat mrtg.cfg.cpu
### Global Config Options
### To get bits instead of bytes and graphs growing to the right
WorkDir: /var/www/htdocs/mrtgcpu
Language: Chinese
#Target[localhost]: `/var/www/htdocs/mrtgcpu/cpu/mrtg.cpu`
LoadMIBs:/usr/local/net-snmp-5.4/mibs/UCD-SNMP-MIB.txt
Target[localhost]: ssCpuUser.0&ssCpuSystem.0:wang@10.4.5.211...........................参数
MaxBytes[localhost]: 100
Options[localhost]:nopercent,growright,gauge,noinfo
YLegend[localhost]: CPU loading (%)
ShortLegend[localhost]: %
LegendO[localhost]: CPU SYS INFO;
LegendI[localhost]: CPU USE INFO;
Title[localhost]: CPU MONITOR
PageTop[localhost]: CPU
System: | Linux fc4-test 2.6.11-1.1369_FC4 |
(六).DISK空间使用情况配置
DISK使用配置文件
[root@fc4-test disk]# cat mrtg.cfg.disk
WorkDir: /var/www/htdocs/mrtgdisk/disk
Target[disk]: `/var/www/htdocs/mrtgdisk/disk/mrtg.disk`
Xsize[disk]: 600
Ysize[disk]: 200
Ytics[disk]: 10
Title[disk]: DISK USE INFO
Unscaled[disk]: dwym
MaxBytes[disk]: 524755
PageTop[disk]: DISK USE INFO
;
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
Language:Chines
配置文件所用到的监控脚本
[root@fc4-test disk]# cat /var/www/htdocs/mrtgdisk/disk/mrtg.disk
#/bin/sh
blocks=`df |grep 'sda1'|awk '{print $2}'`
use=`df |grep 'sda1'|awk '{print $3}'`
echo "$blocks"
echo "$use"
mrtg /var/www/htdocs/mrtgdisk/disk/mrtg.cfg.disk 根据配置文件生成html页面 disk.html
放到cron里,每5分钟执行一次
*/5 * * * * mrtg /var/www/htdocs/mrtgdisk/disk/mrtg.cfg.disk
URL: 打开监控页面
(七).MeM使用情况配置:
MeM 配置文件
[root@fc4-test mem]# cat mrtg.cfg.mem
WorkDir: /var/www/htdocs/mrtgmem/mem
Target[managemem]:`/var/www/htdocs/mrtgmem/mem/mrtg.mem`.....................是要执行的脚本
#Target[managemem]: memTotalReal.0&memAvailReal.0:holdata@holdata.3322.org
Xsize[managemem]: 600..............................................生成图表的横向宽度(最大600)
Ysize[managemem]: 200.............................................生成图表的纵向高度(最大200
Ytics[managemem]: 9................................................................纵向划分为几个块(格子)
Unscaled[managemem]: dwym
MaxBytes[managemem]: 262144
Title[managemem]:Memory State of HOLDATA Server............................................标题
PageTop[managemem]:;Memory USE INFo
;............................页面上面的提示
ShortLegend[managemem]: &
kmg[managemem]:kB,MB
kilo[managemem]:1024................一般是写1024,如果需要的话,是1000在计算机里的单位
YLegend[managemem]: Memory Usage
Legend1[managemem]: &Total Memory&
Legend2[managemem]: &Available Memory&
LegendI[managemem]: &Total Memory&.............................从SHELL返回的数据中的第一个
LegendO[managemem]: &Available Memory&.....................从SHELL返回的数据中的第二个
Options[managemem]: growright,gauge,nopercent........................growright,表示图表向右延展
Language:Chinese
配置文件所用到的脚本
[root@fc4-test mem]# cat mrtg.mem
#/bin/sh
top|grep -m1 "Mem"|awk '{print $3}'
top|grep -m1 "Mem"|awk '{print $5}'
执行 mrtg /var/www/htdocs/mrtgmem/mem/mrtg.cfg.mem 根据配置文件生成html页面
放到cron里让其每5分钟执行一次
*/5 * * * * mrtg /var/www/htdocs/mrtgmem/mem/mrtg.cfg.mem
URL: 监控页面
关于snmp采集数据对象的一些相关参数说明:
UCD-SNMP-MIB::dskIndex.1 = INTEGER: 1 //1所监视磁盘索引
UCD-SNMP-MIB::dskIndex.2 = INTEGER: 2
UCD-SNMP-MIB::dskPath.1 = STRING: / //2挂载点
UCD-SNMP-MIB::dskPath.2 = STRING: /export/home
UCD-SNMP-MIB::dskDevice.1 = STRING: /dev/dsk/c0d0s0 //3文件系统
UCD-SNMP-MIB::dskDevice.2 = STRING: /dev/dsk/c0d0s7
UCD-SNMP-MIB::dskMinimum.1 = INTEGER: -1 //4剩余空间阀值,单位为kb,默认为100mb
UCD-SNMP-MIB::dskMinimum.2 = INTEGER: 100000
UCD-SNMP-MIB::dskMinPercent.1 = INTEGER: 50 //5剩余空间阀值,百分比形式表示
UCD-SNMP-MIB::dskMinPercent.2 = INTEGER: -1
UCD-SNMP-MIB::dskTotal.1 = INTEGER: 4769923 //6总磁盘空间
UCD-SNMP-MIB::dskTotal.2 = INTEGER: 2879420
UCD-SNMP-MIB::dskAvail.1 = INTEGER: 1334458 //7可用磁盘空间
UCD-SNMP-MIB::dskAvail.2 = INTEGER: 2757004
UCD-SNMP-MIB::dskUsed.1 = INTEGER: 3387766 //8已使用的磁盘空间
UCD-SNMP-MIB::dskUsed.2 = INTEGER: 64828
UCD-SNMP-MIB::dskPercent.1 = INTEGER: 72 //9磁盘使用空间百分比
UCD-SNMP-MIB::dskPercent.2 = INTEGER: 2
UCD-SNMP-MIB::dskPercentNode.1 = INTEGER: 27 //10
UCD-SNMP-MIB::dskPercentNode.2 = INTEGER: 0
UCD-SNMP-MIB::dskErrorFlag.1 = INTEGER: 1 //100如果可用空间小于Minimum,则置1
UCD-SNMP-MIB::dskErrorFlag.2 = INTEGER: 0
UCD-SNMP-MIB::dskErrorMsg.1 = STRING: /: less than 50% free (= 72%)//101dskErrorFlag为1时的描述性信息
UCD-SNMP-MIB::dskErrorMsg.2 = STRING:
UCD-SNMP-MIB::prIndex.1 = INTEGER: 1 //1所监视的进程索引
UCD-SNMP-MIB::prIndex.2 = INTEGER: 2
UCD-SNMP-MIB::prNames.1 = STRING: httpd //2所监视的进程名称
UCD-SNMP-MIB::prNames.2 = STRING: smcboot
UCD-SNMP-MIB::prMin.1 = INTEGER: 4 //3所监视的进程的最小数量
UCD-SNMP-MIB::prMin.2 = INTEGER: 0
UCD-SNMP-MIB::prMax.1 = INTEGER: 4 //4所监视进程的最大数量
UCD-SNMP-MIB::prMax.2 = INTEGER: 0
UCD-SNMP-MIB::prCount.1 = INTEGER: 6 //5该进程目前的数量
UCD-SNMP-MIB::prCount.2 = INTEGER: 3
UCD-SNMP-MIB::prErrorFlag.1 = INTEGER: 1//100进程不存在或者进程数不是所要求,则置1
UCD-SNMP-MIB::prErrorFlag.2 = INTEGER: 0
UCD-SNMP-MIB::prErrMessage.1 = STRING: Too many httpd running (# = 6) //101prErrorFlag置1时的具体信息
UCD-SNMP-MIB::prErrMessage.2 = STRING:
UCD-SNMP-MIB::prErrFix.1 = INTEGER: 0 //102
UCD-SNMP-MIB::prErrFix.2 = INTEGER: 0
UCD-SNMP-MIB::prErrFixCmd.1 = STRING: //103
UCD-SNMP-MIB::prErrFixCmd.2 = STRING:
UCD-SNMP-MIB::laIndex.1 = INTEGER: 1 //1
UCD-SNMP-MIB::laIndex.2 = INTEGER: 2
UCD-SNMP-MIB::laIndex.3 = INTEGER: 3
UCD-SNMP-MIB::laNames.1 = STRING: Load-1 //2
UCD-SNMP-MIB::laNames.2 = STRING: Load-5
UCD-SNMP-MIB::laNames.3 = STRING: Load-15
UCD-SNMP-MIB::laLoad.1 = STRING: 0.02 //3负载值
UCD-SNMP-MIB::laLoad.2 = STRING: 0.02
UCD-SNMP-MIB::laLoad.3 = STRING: 0.03
UCD-SNMP-MIB::laConfig.1 = STRING: 0.01 //4配置文件中的阀值
UCD-SNMP-MIB::laConfig.2 = STRING: 0.01
UCD-SNMP-MIB::laConfig.3 = STRING: 0.01
UCD-SNMP-MIB::laLoadInt.1 = INTEGER: 1 //5
UCD-SNMP-MIB::laLoadInt.2 = INTEGER: 1
UCD-SNMP-MIB::laLoadInt.3 = INTEGER: 2
UCD-SNMP-MIB::laLoadFloat.1 = Opaque: Float: 0.015625 //6负载的浮点数值
UCD-SNMP-MIB::laLoadFloat.2 = Opaque: Float: 0.015625
UCD-SNMP-MIB::laLoadFloat.3 = Opaque: Float: 0.027344
UCD-SNMP-MIB::laErrorFlag.1 = INTEGER: 1 //100 超过阀值标志1
UCD-SNMP-MIB::laErrorFlag.2 = INTEGER: 1
UCD-SNMP-MIB::laErrorFlag.3 = INTEGER: 1
UCD-SNMP-MIB::laErrMessage.1 = STRING: 1 min Load Average too high (= 0.02) //101 标时为1时的具体信息
UCD-SNMP-MIB::laErrMessage.2 = STRING: 5 min Load Average too high (= 0.02)
UCD-SNMP-MIB::laErrMessage.3 = STRING: 15 min Load Average too high (= 0.03)