mrtg的作者同rrdtool的作者是同一人,两者对于监控和绘图,不过前者渐渐被后者取代 。不过在对被监控设备比较少时,mrtg在配置上还是比较方便和快捷的,毕竟像nagios、zabbix 这种重量级的监控软件用来监控一两个设备有点杀鸡焉用牛刀的感觉。这里还以昨天提到的juniper RTX650防火墙为例,简单介绍下mrtg的安装和配置。

一、juniper开启SNMP

这里开启SNMP的步骤和昨天提到配置方法一样,这里略过。

二、安装配置mrtg

1、安装

mrtg的官方页面为http://oss.oetiker.ch/mrtg/ ,最新版本是2.17.4 。可以选择使用源码包编译安装,也可以选择系统源安装 。

1#yum -y install mrtg mrtg-libs

需要注意的是mrtg也有windows版的,由于个人习惯了使用linux这里仍以centos/redhat为例。

2、cfgmaker生成配置文件

1#cfgmaker --global "WorkDir:/var/www/mrtg" --output /etc/mrtg/mrtg.cfg public@192.168.1.2

cfgmaker后面可以跟更多的参数的,回的参数内容为写入到生成的mrtg.cfg文件中,也可以生成后再修改。编辑mrtg.cfg尤其注意下面几行配置:

 1#时间从左至右显示,最小单位bits,growright不打开,默认是从右至左的时间显示顺序
 2Options\[\_\]: growright, bits
 3#页面刷新频率,300s
 4Refresh: 300
 5#也是刷新频率,5分钟
 6Interval: 5
 7#mrtg默认数据是以文本的格式存在的,增加下面的内容后支持以rrdtool数据库的格式生成
 8#LogFormat: rrdtool
 9#rrdtool程序所在的目录
10#PathAdd: /usr/bin/
11EnableIPv6: no
12WorkDir:/var/www/mrtg

除上面之外,其他一些参数可能也会用到,这里也一并列下:

  • WorkDir //设置工作目录,存放mrtg采集的数据和生成的统计文件
  • Language //设置WEB页面显示的语言=中文gb2312
  • growright //指示流量图随时间的变化向右增长
  • Target //指示监控的设备;
  • 设备的表示方式=port:community@router;
  • commnunity //表示snmp通讯密码
  • Directory 指示该监控设备的相关文件保存的位置=/var/www/mrtg/eth0/;
  • 默认保存在WorkDir工作目录下
  • MaxBytes //指示被采集的数据的最大值.如果采集的数据大于该值,MRTG将忽略,并保持上次采集的数据值
  • Kmg //指示乘数单位(默认每千位跳一个单位)
  • YLegend //指示Y轴的单位标记(不能用中文)
  • ShortLegend //指示数据的单位标记
  • Legend1,2,3,4分别指示四条不同颜色的统计线的文字说明
  • Legend1: //每5分钟数据平均流入量的文字说明
  • Legend2: //每5分钟数据平均流出量的文字说明
  • Legend3: //每5分钟数据最大流入量的文字说明
  • Legend4: //每5分钟数据最大流出量的文字说明
  • LegendI,O //分别说明数据的流出和流出的文字说明
  • WithPeak //指示如何显示流量图
    共有四条不同颜色的统计线,绿色表示平均流入,蓝色表示平均流出,墨绿色表示最大流入,紫色表示最大流出
    n代表不设置w代表每周图表,代表每月图表,y代表每年图表
    不设置WithPeak,只有绿色流入和蓝色流出
  • PageTop //指示增加到Web页头部的HTML代码,用于定制网页

以空格开始的部分都是PageTop的内容,都直接作为HTML代码

注:使用rrdtool格式存数据时,查看页面的话需要cgi调用数据,可用的cgi插件有mrtg-rrd、routers2.cgi、14all.cgi,具体可以参考以下页面

http://oss.oetiker.ch/mrtg/doc/mrtg-rrd.en.html

http://www.fi.muni.cz/~kas/mrtg-rrd/

3、创建初始web页面

1#mrtg /etc/mrtg/mrtg.cfg
2#mrtg /etc/mrtg/mrtg.cfg
3#mrtg /etc/mrtg/mrtg.cfg 

注意,这里一般要运行三次,前两次出现warnning是正常的。

4、生成索引首页

1#indexmaker /etc/mrtg/mrtg.cfg --output /var/www/mrtg/index.html

此时去刚刚指定的/var/www/mrtg目录查看,可以看到生成了下面一些文件:

 1#[root@localhost mrtg]# ls /var/www/mrtg/
 2192.168.1.2_504-day.png    192.168.1.2_509-year.png   192.168.1.2_522-week.png   192.168.1.2_529.old
 3192.168.1.2_504.html       192.168.1.2_510-day.png    192.168.1.2_522-year.png   192.168.1.2_529-week.png
 4192.168.1.2_504.log        192.168.1.2_510.html       192.168.1.2_523-day.png    192.168.1.2_529-year.png
 5192.168.1.2_504-month.png  192.168.1.2_510.log        192.168.1.2_523.html       192.168.1.2_530-day.png
 6192.168.1.2_504.old        192.168.1.2_510-month.png  192.168.1.2_523.log        192.168.1.2_530.html
 7192.168.1.2_504-week.png   192.168.1.2_510.old        192.168.1.2_523-month.png  192.168.1.2_530.log
 8192.168.1.2_504-year.png   192.168.1.2_510-week.png   192.168.1.2_523.old        192.168.1.2_530-month.png
 9192.168.1.2_505-day.png    192.168.1.2_510-year.png   192.168.1.2_523-week.png   192.168.1.2_530.old
10192.168.1.2_505.html       192.168.1.2_511-day.png    192.168.1.2_523-year.png   192.168.1.2_530-week.png
11192.168.1.2_505.log        192.168.1.2_511.html       192.168.1.2_524-day.png    192.168.1.2_530-year.png
12192.168.1.2_505-month.png  192.168.1.2_511.log        192.168.1.2_524.html       192.168.1.2_531-day.png
13192.168.1.2_505.old        192.168.1.2_511-month.png  192.168.1.2_524.log        192.168.1.2_531.html
14192.168.1.2_505-week.png   192.168.1.2_511.old        192.168.1.2_524-month.png  192.168.1.2_531.log
15192.168.1.2_505-year.png   192.168.1.2_511-week.png   192.168.1.2_524.old        192.168.1.2_531-month.png
16192.168.1.2_506-day.png    192.168.1.2_511-year.png   192.168.1.2_524-week.png   192.168.1.2_531.old
17192.168.1.2_506.html       192.168.1.2_515-day.png    192.168.1.2_524-year.png   192.168.1.2_531-week.png
18192.168.1.2_506.log        192.168.1.2_515.html       192.168.1.2_526-day.png    192.168.1.2_531-year.png
19192.168.1.2_506-month.png  192.168.1.2_515.log        192.168.1.2_526.html       192.168.1.2_533-day.png
20192.168.1.2_506.old        192.168.1.2_515-month.png  192.168.1.2_526.log        192.168.1.2_533.html
21192.168.1.2_506-week.png   192.168.1.2_515.old        192.168.1.2_526-month.png  192.168.1.2_533.log
22192.168.1.2_506-year.png   192.168.1.2_515-week.png   192.168.1.2_526.old        192.168.1.2_533-month.png
23192.168.1.2_508-day.png    192.168.1.2_515-year.png   192.168.1.2_526-week.png   192.168.1.2_533.old
24192.168.1.2_508.html       192.168.1.2_520-day.png    192.168.1.2_526-year.png   192.168.1.2_533-week.png
25192.168.1.2_508.log        192.168.1.2_520.html       192.168.1.2_527-day.png    192.168.1.2_533-year.png
26192.168.1.2_508-month.png  192.168.1.2_520.log        192.168.1.2_527.html       favicon.ico
27192.168.1.2_508.old        192.168.1.2_520-month.png  192.168.1.2_527.log        index.html
28192.168.1.2_508-week.png   192.168.1.2_520.old        192.168.1.2_527-month.png  mrtg-l.gif
29192.168.1.2_508-year.png   192.168.1.2_520-week.png   192.168.1.2_527.old        mrtg-l.png
30192.168.1.2_509-day.png    192.168.1.2_520-year.png   192.168.1.2_527-week.png   mrtg-m.gif
31192.168.1.2_509.html       192.168.1.2_522-day.png    192.168.1.2_527-year.png   mrtg-m.png
32192.168.1.2_509.log        192.168.1.2_522.html       192.168.1.2_529-day.png    mrtg-r.gif
33192.168.1.2_509-month.png  192.168.1.2_522.log        192.168.1.2_529.html       mrtg-r.png
34192.168.1.2_509.old        192.168.1.2_522-month.png  192.168.1.2_529.log        mrtg-ti.gif
35192.168.1.2_509-week.png   192.168.1.2_522.old        192.168.1.2_529-month.png  mrtg-ti.png

5、配置crontab定时数据采集

1#vi /etc/cron.d/mrtg
2*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok

6、配置apache别名显示

1Alias /mrtg /var/www/mrtg
2<Location /mrtg>
3#Order deny,allow
4#Deny from all
5#Allow from 192.168.1.11
6</Location>

上面只是一个配置示例,如果有需要可以设备访问控制 。

7、优化

由于是网络设备,主要用于查看下网络流量,而从第4部可以看到,其采集了所有可以采集端口的流量,事实上很多时候很多端口未用或者并不是我们想查看的,这里就需要编辑mrtg.cfg文件只保留需要监控的端口ID ,同时还需要修改indexmaker生成的首页文件里的内容 。最终的效果如下图:

mrtg

如果还需监控CPU、内存等信息,则需要通过snmpwalk编写脚本取得数据写入文件并保存,并在mrtg.cfg文件中做相应配置,最终在图形界面上进行展示。

三、mrtg与主机性能监控

由于该部分不是本篇重点,这里只是顺带提下,mrtg也可以通过snmp对主机的磁盘、CPU、内存等信息进行监控。需要在主机上开启snmp服务。linux下的安装如下(windows下也可以,在添加删除程序里进行增加):

1# yum install net-snmp

安装完成后,需要编辑snmp的配置文件,因为很多信息默认是不允许获取的:

1# vim /etc/snmp/snmp.conf
2view systemview included .1.3.6.1.2.1.1
3#下面这一行为新增,用于收集流量信息
4view systemview included .1.3.6.1.2.1.2
5view systemview included .1.3.6.1.2.1.25.1.1

修改完成后,记得重启snmp服务 。同时像disk和mem的监控部分,在snmpd.conf里有相关的配置样例,同时也有脚本执行的相关样例,参数样例修改即可。

以上步骤配置完成后,再参照上面mrtg监控设备的过程,重复执行一下即可。