一个IDC机房,倘若没有流量监控平台,那就等于两眼一抹黑。利用流量监控不仅能监控一些服务器的访问量情况,而且还能监控一些大规模的网络***。下面我们来看一个比较老的流量监控软件—MRTG MRTG有windows版本和Linux版本。今天我们看一下Linux的MRTG是如何搭建的。
      MRTG(Multi Router Traffic Grapher) ,通常讲是一个监控网络链路流量负载的开源软件,它可以从所有运行 SNMP 协议的设备上(包括服务器、路由器、交换机等)抓取信息。事实上它不仅可以监控网络设备,任何其它的支持 SNMP 协议的设备都可以做为 MRTG 的监控对象,并自动生成包含 PNG 图形格式的 HTML 文档,通过 HTTP 方式显示给用户。
 
一、安装GD库(用于图片的生成)
1、安装libpng
#tar xvf libpng- 1.2.10 .tar.tar
#cd libpng- 1.2.10
#./configure  --prefix=/usr/local/png
#make;make install
#ln -s /usr/local/png/lib/* /usr/lib/
 
2、安装jpeg
#mkdir /usr/local/jpeg
#mkdir /usr/local/jpeg/bin
#mkdir /usr/local/jpeg/lib
#mkdir /usr/local/jpeg/include
#mkdir /usr/local/jpeg/man
#mkdir /usr/local/jpeg/man/man1
#tar xvf jpegsrc.v7.tar.tar
#cd jpeg-7
#./configure --prefix=/usr/local/jpeg --enable-shared --enable-static
#make;make install
#ln -s /usr/local/jpeg/lib/* /usr/lib/
 
3、安装 freetype
#tar xvf freetype- 2.3.9 .tar.tar
#cd freetype- 2.3.9
#./configure --prefix=/usr/local/freetype
#make;make install
 
4、安装fontconfig
#tar zxvf fontconfig- 2.4.2 .tar.gz
#cd fontconfig- 2.4.2
#./configure --prefix=/usr/local/fontconfig --with-freetype-config=/usr/local/freetype/bin/freetype-config
#make;make install
 
5、安装GD
#tar zxvf gd- 2.0.32 .tar.gz
#cd gd- 2.0.32
#./configure --prefix=/usr/local/gd --with-png=/usr/local/png --with-jpeg=/usr/local/jpeg --with- freetype=/usr/local/freetype --with-
fontconfig=/usr/local/fontconfig
 
出现如下信息则说明GD配置正确
** Configuration summary for gd 2.0.32 :**
   Support for PNG library:          yes
   Support for JPEG library:         yes
   Support for Freetype 2.x library:    yes
   Support for Fontconfig library:     yes
   Support for Xpm library:          no
   Support for pthreads:             yes
 
#cp /usr/local/png/include/png.h ./
#cp /usr/local/png/include/pngconf.h ./
#make;make install
 
6、安装zlib- 1.2.3 .tar.gz
#tar zxvf zlib- 1.2.3 .tar.gz
#cd zlib- 1.2.3
#./configure --prefix=/usr/local/zlib
#make && make install
 
 
二。安装Apache
#tar zxvf httpd-2.2.11.tar,gz
#cd httpd-2.2.11
#./configure --prefix=/usr/local/apache --enable-modules=most
#make && make install
 
 
三、安装MRTG
#tar -zxvf mrtg- 2.13.2 .tar.gz
#cd mrtg- 2.13.2
#./configure --prefix=/usr/local/mrtg --with-gd=/usr/local/gd --with-gd-lib=/usr/local/gd/lib --with-gd-inc=/usr/local/gd/include --with-
png=/usr/local/png --with-png-lib=/usr/local/png/lib --with-zlib=/usr/local/zlib --with-zlib-lib=/usr/local/zlib/lib
#make&& make install
 
 
需要gd库,同样采用源码编译,在编译过程中碰到 `png_check_sig’ 错误。
google了一下,发现由于使用的新的 libpng 1.4版本,去掉了png_check_sig函数,替换为了png_sig_check函数
,于是编辑gd库的 gd_png.c文件,将

if (!png_check_sig (sig, 8)) { /* bad signature */
    return NULL;
}
修改为

if (png_sig_cmp (sig, 0, 8)) { /* bad signature */
    return NULL;
}
再次编译通过
来源: http://www.sunnyu.com/?p=211
 
 
四、配置MRTG
 1 生成MRTG配置文件mrtg.cfg,用于存放mrtg的配置信息
首先我们新建一个目录,用于存放MRTG配置文件
#mkdir /usr/local/mrtg/etc
#/usr/local/mrtg/bin/cfgmaker --output /usr/local/mrtg/etc/mrtg.cfg luwenju @202.106.0.20
 注:luwenju @202.106.0.20是我们所要监控的交换机,luwenju为交换机SNMP的团体名,202.106.0.20是交换机的管理IP地址。交换机上如何开启SNMP请自行参阅资料,有一点切忌:为了服务器的安全起见,交换机上的SNMP配置时应该配置成只读,不允许有写入或者执行权限!
 
 2、修改MRTG配置文件mrtg.cfg
#vi /usr/local/mrtg/etc/mrtg.cfg
     Workdir后的路径改成/usr/local/apache/htdocs  意思是指定mrtg流量页面存放目录. #Options[_]: growright, bits  前面的#去掉,意思是定义流量单位大小,然后在另起一行,加入 Language:Chinese   意思是使mrtg支持中文
使用MRTG打造IDC网络流量监控平台_第1张图片
 
  3收集交换机每个端口的状态信息并把搜集的信息存储到MRTG配置文件当中
#env LANG=C /usr/local/mrtg/bin/mrtg /usr/local/mrtg/etc/mrtg.cfg  
注:执行时多执行几遍,只到不出现任何提示信息
 
4、为交换机生成html文件,以供用户访问
# /usr/local/mrtg/bin/indexmaker --output /usr/local/apache/htdocs/index.html --title=ruishengIDC --sort=title --sort=name --sort=descr --sort=original  /usr/local/mrtg/etc/mrtg.cfg
 
 
5、让MRTG监控信息自动更新
我们可以利用cron进程,让MRTG自动刷新,方法如下
  #crontab -e
然后写入*/5 * * * * env LANG=C /usr/local/mrtg/bin/mrtg /usr/local/mrtg/etc/mrtg.cfg
意思是让MRTG每5分子更新一次
 
6.测试
下面我们在浏览器中输入服务器的IP地址或者域名就可以看到我们要监控的流量了,如下图
使用MRTG打造IDC网络流量监控平台_第2张图片
 
 
四、为MRTG做授权访问
倘若一个机房的网络带宽使用情况谁查看都可以,那未免也有点太那啥了吧。。。  因此,我们做授权访问是有必要的
1.       建立虚拟用户
建立这个虚拟用户的目的就在于只让这个用户访问MRTG的监控页面 ,首先我们建立一个目录,用于存放虚拟用户的用户密码
# mkdir /etc/webpasswd
  建立虚拟用户, 我们创建一个虚拟用户luwenju,将其配置文件放到/etc/webpasswd/luwenjupwd
#/usr/local/apache/bin/htpasswd -c /etc/webpasswd/luwenjupwd luwenju
注:执行完上述命令后会要求设置此用户的密码,我们输入想要设置的密码即可。Apache自带的htpasswd命令提供了建立和更新存储用户名、密码的文本文件的功能。-c选项表示无论口令文件是否已经存在,都会重新写入文件并删去原有内容。
 
2、配置用户认证
修改apache配置文件vi /usr/local/apache/conf/httpd.conf  在配置文件最后加入以下内容(倘若我们想在某个虚拟主机中实现身份验证,那么我们就把如下信息加入某个虚拟主机中即可)
AuthType Basic
AuthName "Rui Sheng IDC"
AuthUserFile /etc/webpasswd/luwenjupwd
Require user luwenju
注:Directory定义我们针对那么目录进行授权,我们配置MRTG时让html文件生成到了/usr/local/apache/htdocs
AuthType 的意思是采用哪种模式进行验证,我们使用basic
AuthName 的意思是登陆窗口的名称
AuthUserFile 的的意思是指定用户的密码配置文件
Require user 的意思是允许哪个用户来访问
 
OK,完成上面设置后我们重启一下Apache,然后再浏览器中访问时会弹出以下页面
使用MRTG打造IDC网络流量监控平台_第3张图片
 
 
然后我们输入正确的用户名和密码后就可以看到MRTG的流量监控页面了,如下图
使用MRTG打造IDC网络流量监控平台_第4张图片
 
 
在这篇文章中我有一个很大的疑惑:我没有在Linux系统中安装SNMP,在网上,我看到不少网友针对交换机每个端口流量的监控还在系统上再安装SNMP,个人感觉没必要,因为我们是监控的交换机每个端口出入的流量。倘若我们要监控的是某台服务器的流量,才需要在某台服务器上安装SNMP。
 
 
本文出自 “ 陆文举” 博客,请务必保留此出处 http://luwenju.blog.51cto.com/620835/246892