天天看点

使用MRTG打造IDC网络流量监控平台

        一个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

#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

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

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 ./

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

三、安装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 */

再次编译通过

来源: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网络流量监控平台

  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网络流量监控平台

四、为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  在配置文件最后加入以下内容(倘若我们想在某个虚拟主机中实现身份验证,那么我们就把如下信息加入某个虚拟主机中即可)

<Directory "/usr/local/apache/htdocs">

AuthType Basic

AuthName "Rui Sheng IDC"

AuthUserFile /etc/webpasswd/luwenjupwd

Require user luwenju

</Directory>

注:Directory定义我们针对那么目录进行授权,我们配置MRTG时让html文件生成到了/usr/local/apache/htdocs

AuthType 的意思是采用哪种模式进行验证,我们使用basic

AuthName 的意思是登陆窗口的名称

AuthUserFile 的的意思是指定用户的密码配置文件

Require user 的意思是允许哪个用户来访问

OK,完成上面设置后我们重启一下Apache,然后再浏览器中访问时会弹出以下页面

使用MRTG打造IDC网络流量监控平台

然后我们输入正确的用户名和密码后就可以看到MRTG的流量监控页面了,如下图

使用MRTG打造IDC网络流量监控平台

在这篇文章中我有一个很大的疑惑:我没有在Linux系统中安装SNMP,在网上,我看到不少网友针对交换机每个端口流量的监控还在系统上再安装SNMP,个人感觉没必要,因为我们是监控的交换机每个端口出入的流量。倘若我们要监控的是某台服务器的流量,才需要在某台服务器上安装SNMP。

本文出自 “陆文举” 博客,请务必保留此出处http://luwenju.blog.51cto.com/620835/246892

继续阅读