出处:http://www.LinuxByte.net/
作者:jogs(LinuxByte)
发布日期:2004-7-27
最近研究了下mrtg的使用
关于mrtg是干吗的就不说了,直接进入正题
安装:
mrtg需要有以下包
gcc,Perl,gd,libpng,zlib
安装过程:
./configure --prefix=/usr/local/mrtg
make
make install
配置:
mrtg重要的只有2个地方
一是就是它的conf文件
二是获取参数的源
它可以从snmp或者自写脚本来取得数据,不过linux下感觉snmp获得数据有一定的误差,感觉数据出来的但是实际mrtg根本拿不到,所以我以下都使用脚本方式来获得数据
生成配置文件:
由于生成mrtg配置文件默认带有网卡流量监控,需要snmp,所以首先需要修改下snmp的配置文件
vi /etc/snmp/snmpd.conf
将
#view systemview included mib2
修改为:
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
access notConfigGroup "" any noauth exact systemview none none
修改为:
access notConfigGroup "" any noauth exact mib2 none none
保存,重起snmpd
首先先建立一个mrtg工作的主目录,由于mrtg使用web方式,所以需要建立在apache的主目录下
mkdir /var/www/mrtg
然后使用mrtg的cfgmaker命令生成mrtg的配置文件
/usr/local/mrtg/bin/cfgmaker --output /etc/mrtg.cfg public@192.168.0.1
此处192.168.0.1为本机ip
mrtg.cfg配置文件生成后,会默认包含本机所有网卡的监控信息,如不需要可以删除
vi /etc/mrtg.cfg
将
# for UNIX
# WorkDir: /home/http/mrtg
修改为
# for UNIX
WorkDir: /var/www/mrtg
此处为我们的mrtg主目录
加入
Language: gb2312
指定页面显示语言为中文
制作首页
/usr/local/mrtg/bin/indexmaker --output=/var/www/mrtg/index.html /etc/mrtg.cfg
indexmaker会依据你的mrtg.cfg自动创建一个访问页面
正确保存配置文件后执行
/usr/local/mrtg/bin/mrtg /etc/mrtg.cfg
此时会报告错误,不用理会,连续执行3次后错误应该会消失,如还继续保错,则应为配置文件出错
注意:只有使用mrtg命令时,mrtg才会依据mrtg.cfg里的设置取值.
到这里,基本的mrtg已配置完成,确认snmp和httpd都已启动,打开浏览器,输入http://192.168.0.1/mrtg就
可以看到你的网卡流量图了.
此时的mrtg只可以监控网卡流量,如果需要监控其他则需要自己编写脚本和mrtg.cfg来实现
以下是一个apache连接的例子
首先再mrtg.cfg里加入apache连接的配置段
Target[apache_conn]: `/bin/mrtg.apa.pl`
Options[apache_conn]: gauge,nopercent,growright
Directory[apache_conn]:apache_conn
MaxBytes[apache_conn]: 4000
YLegend[apache_conn]: apache连接数
ShortLegend[apache_conn]: 个
LegendI[apache_conn]: apache总连接数:
LegendO[apache_conn]: apache当前连接数
Title[apache_conn]: apache连接数
PageTop[apache_conn]: <h1>apache连接数</h1>
Target指的是mrtg从那里取画曲线的值,此处可以从snmp和脚本取值,如从脚本取值需注意,需要前后用`来指定脚本路径而不是' .
[]指这个配置段的名称,这里为apache_conn,届时会在mrtg的workdir里建立同名的目录
Maxbytes指mrtg取值后能表现的最大值
YLegend指再图标中纵向的名称
ShortLegend指在图标中数值后面所跟的单位
LegendI 传递过去的第一个值
LegendO 传递过去的第二个值
Title 网页title
Pagetop 网页显示名称
mrtg.apa.pl
#!/usr/bin/perl
$hostname=`hostname`;
$hostname=~s/\s+$//;
$apache_all_conn=`netstat -an|grep 192.168.0.1:80|wc -l`;
$apache_conn=`netstat -an|grep 192.168.0.1:80|grep ESTABLISHED|wc -l`;
$apache_all_conn=~s/\n$//;
$apache_conn=~s/\n$//;
$apache_all_conn=~s/^\s+|\s+$//;
$apache_conn=~s/^\s+|\s+$//;
$gettime=`uptime|awk '{print \$1" "\$3" "\$4}'`;
$gettime=~s/\,|\n$//g;
print("$apache_all_conn\n");
print("$apache_conn\n");
print("$gettime\n");
print("$hostname\n");
以上脚本为perl编写,由于apache的连接可以使用netstat查看,所以我用里一个简单的shell命令组合来获取apache的总连接数和当前建立连接的连接数.
需要注意以下几点
1) 使用命令传递值给mrtg时,mrtg只能接受4个参数,真正用于画图的只有2个
2) 4个参数必须依次为 值1,值2,运行时间,主机名
3) 4个参数后不得有\n等换行符
由于mrtg.cfg的改变,所以必须依次使用以下命令
/usr/local/mrtg/bin/indexmaker --output=/var/www/mrtg/index.html /etc/mrtg.cfg
使用mrtg的indexmaker重生成index.html文件,否则你无法看到新加入的apache连接的监控.
/usr/local/mrtg/bin/mrtg /etc/mrtg.cfg
使用mrtg命令传入数值,同样会报3次错,忽略即可
再打开浏览器,输入地址,应该可以看到首页除了网卡的流量外再下方会加入apache连接的图
确认无误后,可再/etc/mrtg.cfg里加入
RunAsDaemon: Yes
在使用一次
/usr/local/mrtg/bin/mrtg /etc/mrtg.cfg
mrtg就会使用daemon方式运行
你以后要做的只是每次使用浏览器看看图就可以了,是不是很轻松
最后附上我目前能做到监控的一些信息,由于屏幕有限所以没法截完整,目前已做到可以监控如下信息
网卡,tcp连接数,系统进程数,内存使用,swap使用,cpu负载,pop连接数,smtp连接数,diskio等
如果大家需要我可以贴出所有脚本