MRTG 监控系统
时间:2005-11-03 来源:wangzhixu
MRTG 是什么 ,是一个可以画图的好东西,他可以划出系统网络,cpu,内存,磁盘使用等等图,只要有数据
2005年11月3日第一次。
cpu ,df 和网络图
2005年11月6日第二次。
对windows 系统监控
在一般情况下我们使用MRTG 来监控系统的网络流量但是他的功能远远不止这些。
了解MRTG
Mrtg(Multi Router Traffic Grapher,MRTG)是一个监控网络链路流量负载的工具软件, 它通过snmp协议从设备得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML 文档方式显示给用户,以非常直观的形式显示流量负载
mrtg具有以下特色:
可移植性:目前可以运行在大多数Unix系统和Windows NT之上。
源码开放:Mrtg是用perl编写的,源代码完全开放。
高可移植性的SNMP支持:Mrtg采用了Simon Leinen编写的具有高可移植性的SNMP实现模 块,从而不依赖于操作系统的SNMP模块支持。
支持SNMPv2c:MRTG可以读取SNMPv2c的64位的记数器,从而大大减少了记数器回转次数。
可靠的接口标识:被监控的设备的接口可以以IP地址、设备描述、SNMP对接口的编号及 Mac地址来标识。
常量大小的日志文件:MRTG的日志不会变大,因为这里使用了独特的数据合并算法。
自动配置功能:MRTG自身有配置工具套件,使得配置过程非常简单。
性能:时间敏感的部分使用C代码编写,因此具有很好的性能。
PNG格式图形:图形采用GD库直接产生PNG格式。
可定制性:MRTG产生的web页面是完全可以定制的。
mrtg的主页是http://www.mrtg.org,可以从这里下载软件
或者到rpmfind.net 去查找他的rpm包
在安装好了以后我们就开始配置了
我的系统在安装了mrtg 后 生产了下面的几个目录和文件
/etc/mrtg/mrtg.cfg
/var/www/html/mrtg/* 很多文件
同时还有 mrtg ,indexmaker ,cfgmaker 等命令
在mrtg.cfg 文件中会出现一些参数其解释如下
Target:是要执行的脚本
Xsize:生成图表的横向宽度(最大600)
Ysize:生成图表的纵向高度(最大200)
Title:标题
Ytics:纵向划分为几个块(格子)
MaxBytes:图表纵向数值的最大上限
PageTop:页面上面的提示
kilo:一般是写1024,如果需要的话,是1000在计算机里的单位
LegendI:从SHELL返回的数据中的第一个
LegendO:从SHELL返回的数据中的第二个
Options:一般后面跟growright,表示图表向右延展
WorkDir 设定mrtg 文件目录
例如
- Target[域]:
- Target[aaa]: 2: [email protected]
同一个域名称必须一致 - Target[bbb]:`/usr/local/apache/htdocs/mrtg/cpu/mrtg.cpu`
后面是一个shell 脚本,执行这个脚本会传递四个参数给mrtg !mrtg 根据这四个参数绘制图形,第一参数对于LegendI,第二参数对于LegendO ,第三参数对于had been up for 参数三.第四参数对于at which time '参数四' .
- Target[aaa]: 2: [email protected]
- MaxBytes[域]:
- MaxBytes[aaa]: 1250000
资料监控时最多数据流, bytes,所以 10Mbps 为 1.25MBytes,大約是 1250000 Bytes。 - MaxBytes[bbb]: 100
如果資料不是 Bytes 時,例如例如 CPU 時,那這個數值就需要改
- MaxBytes[aaa]: 1250000
- Options[域]:
- Options[aaa]: growright, bits (用在網路流量中)
- Options[bbb]: growright, nopercent, gauge (用在 CPU 負載中)
-
growright:將資料隨時間變化的順序以右而左繪圖;
bits:資料單位為 bits;
nopercent:在圖下方的說明文字中,不顯示百分比;
gauge:圖表的上限固定!
一 网络
WorkDir: /var/www/html/mr/ mrtg 目录
Target[r1]: 2:[email protected] 与snmp 配合
Options[r1]: growright 右侧出现
MaxBytes[r1]: 1250000
Title[r1]: Traffic Analysis
PageTop[r1]:
Stats for our Ethernet
二 cpu 负载
Target[localhost]: `/etc/mrtg/cpu` shell 脚本的位置
MaxBytes[localhost]: 100
Options[localhost]: gauge, nopercent, growright
YLegend[localhost]: CPU loading (%) y 轴显示
ShortLegend[localhost]: %
LegendO[localhost]: cpuuser .....; 用户负载
LegendI[localhost]: cpusys .....; 系统负载
Title[localhost]: CPU 页面标题
PageTop[localhost]:
CentOS CPU
图表上面显示内容下面我们来看看cpu的 shell
#/!bin/bash
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}'`
echo $cpuusr 输出显现
echo $cpusys
echo $UPtime
echo 192.168.1.69
关于sar 命令
grep Average 查找带Average 的行
awk '{print $3}'` 取得第三个参数的值
通过执行上面的shell mrtg 就可以绘制出cpu 负载的图了。
三 磁盘使用量
Target[df]: `/etc/mrtg/df` shell 脚本的位置
MaxBytes[df]: 100
Options[df]: gauge, nopercent, growright
YLegend[df]: disk used (%)
ShortLegend[df]: %
LegendO[df]: disk / use .....; / 分区使用
LegendI[df]: disk /boot use .....; /boot 分区使用
Title[df]: disk use
PageTop[df]:
CentOS disk use
我的分区情况为
/dev/sda2 3834496 3415944 223764 94% /
/dev/sda1 101089 11086 84784 12% /boot
none 46472 0 46472 0% /dev/shm
/dev/sdb1 507732 9806 471713 3% /home
//192.168.1.62/linux 20972544 17567232 3405312 84% /mnt/c
/dev/cdrom 500950 500950 0 100% /mnt/cdrom
df shell 如下
#/!bin/bash
dir=`df /dev/sda1 | grep sda1 | awk '{print $5}'`
boot=`df /dev/sda2 | grep sda2 | awk '{print $5}'`
UPtime=`/usr/bin/uptime | awk '{print $3 " " $4 " " $5}'`
echo $dir
echo $use
echo $UPtime
echo $HOSTNAME 输出主机名称
在上面配置好了以后我们需要执行两个命令
mrtg 配置文件
mrtg mrtg.cfg
生产主页图形文件命令indexmaker 参数 目标文件 配置文件
indexmaker --output=/var/www/html/mrtg/index.html /etc/mrtg/mrtg.cfg
还要crontab -e
*/5 * * * * root mrtg /etc/mrtg/mrtg.cfg
这样我们就可以在浏览器里面看到图形了 http://ip/mrtg/
不过前提是你网络通,aplache 配置正确,而且你的mrtg 目录设置正确。
上面都是对linux 的监控,今天又研究了一下对windows 的监控,其实对windwos 的监控更为简单
满足以下几点就可以了
1 启动了snmp 服务
2 我们知道监控windows 的各种代码,如cpu 、内存等等
3 网络连通
在windows 中 启动snmp 协议,同时去http://www.wtcs.org/snmp4tpc/snmp4w2k-std.htm 下载最新的snmp 增强工具
安装完以后,该软件会出现一个类似帮助的窗口,在里面我们可以看到snmp 给我提供监控的各种MIB
这些代码在linux 里面是要使用到的
现在我们可以来监控windows 的各种值,
例如cpu 的mib 代码是.1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48
在mrtg.cfg 文件中加入
Target[CPU]: .1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48&.1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48:public@windows ip
Ysize[CPU]: 200
Xsize[CPU]: 400
Ytics[CPU]: 10
MaxBytes[CPU]: 100
Title[CPU]: Windowsxp CPU...
PageTop[CPU]: <H1>Windowsxp CPU...</H1>
ShortLegend[CPU]: %
YLegend[CPU]: CPU Load
Legend1[CPU]: CPU Utilization # CPU....
Legend2[CPU]: .
Legend3[CPU]: Max Value Per-Interval # .....CPU......
Legend4[CPU]: .
LegendI[CPU]: CPU:
LegendO[CPU]:
Options[CPU]: gauge, growright, nopercent, unknaszero
mrtg mrtg.cfg
indexmaker --output=/var/www/html/mrtg/index.html /etc/mrtg/mrtg.cfg
这样就实现了对windows cpu 的监控,可以更改mib 码,实现对windows 其他性能监控