在信息技术领域,对服务器和网络设备的性能进行持续监控是保障系统稳定运行的关键环节,MRTG(Multi Router Traffic Grapher)是一款经典且高效的网络流量监控工具,它通过SNMP协议采集设备数据,并生成包含PNG图像的HTML页面,直观地展示网络接口的流量负载,尽管现在有更多现代化的监控解决方案,但MRTG因其轻量、稳定和配置简单的特点,在许多老旧系统(如CentOS 6.6)或特定场景下仍具价值,本文将详细介绍如何在CentOS 6.6系统上部署和配置MRTG,实现对网络流量的有效监控。

部署前的准备工作
在开始安装之前,请确保您的CentOS 6.6系统已满足以下基本条件:
- 系统环境:一个已安装并可正常访问的CentOS 6.6系统。
- 权限:具备root用户权限或sudo权限,以便执行安装和配置命令。
- 网络连接:系统可以连接到互联网,以便使用yum命令安装所需的软件包。
- Web服务器:MRTG生成的报告需要通过Web服务进行访问,因此系统上需要安装一个Web服务器,如Apache(httpd)。
第一步:安装必要的软件包
CentOS的yum仓库中包含了MRTG及其依赖项,我们可以通过一条命令完成所有核心组件的安装,这些组件包括MRTG本身、SNMP工具包(用于数据采集)以及Apache Web服务器。
打开终端,执行以下命令:
yum install httpd mrtg net-snmp net-snmp-utils -y
此命令会自动安装:
httpd: Apache Web服务器。mrtg: MRTG主程序。net-snmp: SNMP守护进程(snmpd),负责响应MRTG的查询请求。net-snmp-utils: 包含snmpwalk等客户端工具,用于测试SNMP配置。
第二步:配置SNMP服务
SNMP(Simple Network Management Protocol)是MRTG获取数据的基础,我们需要配置SNMP服务,允许MRTG使用特定的“社区字符串”来读取本机的网络流量信息。
备份原始的SNMP配置文件,以防误操作:
cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
编辑配置文件,这里我们进行一个基础配置,允许使用名为“public”的社区字符串从本机(localhost)进行读取访问。
vi /etc/snmp/snmpd.conf
找到并修改或添加以下行(通常需要注释掉或删除原有的一些示例配置):
# 定义一个安全名称、源地址和社区字符串
# com2sec 名称 默认源 社区字符串
com2sec notConfigUser default public
# 将安全名称映射到一个组
# group 组名 版本 安全名称
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
# 定义一个视图,指定可以访问的OID范围(.1表示所有)
# view 视图名 是否包含 OID
view all included .1 80
# 为组授予对视图的访问权限
# access 组名 上下文 版本 权限 读取权限 写入权限
access notConfigGroup "" any noauth exact all none none 配置完成后,保存并退出文件,然后启动SNMP服务,并设置其开机自启:
service snmpd start chkconfig snmpd on
第三步:测试SNMP配置
在生成MRTG配置之前,验证SNMP是否正常工作至关重要,我们可以使用snmpwalk命令来测试。
执行以下命令,尝试获取本机的系统信息:

snmpwalk -v 2c -c public localhost system
如果配置正确,您将看到一长串关于系统描述、运行时间、联系人等信息,如果出现“Timeout”错误,请检查SNMP服务状态、防火墙设置(确保UDP端口161开放)以及snmpd.conf文件中的配置。
第四步:生成MRTG配置文件
MRTG的配置文件定义了要监控的目标设备、接口以及输出选项,我们可以使用cfgmaker工具来自动生成基础配置。
为MRTG创建一个用于存放生成文件的目录,该目录需要位于Web服务器的根目录下,以便通过浏览器访问:
mkdir -p /var/www/html/mrtg
使用cfgmaker生成配置文件,该命令会通过SNMP扫描指定主机的所有网络接口,并创建相应的监控配置。
cfgmaker --global "WorkDir: /var/www/html/mrtg" --output /etc/mrtg/mrtg.cfg public@localhost
命令解析:
--global "WorkDir: /var/www/html/mrtg":设置全局变量WorkDir,指定MRTG生成的HTML和图片文件的存放路径。--output /etc/mrtg/mrtg.cfg:指定输出配置文件的路径。public@localhost:指定SNMP社区字符串和要监控的主机地址。
执行后,/etc/mrtg/mrtg.cfg文件将被创建,其中包含了本机所有网络接口的监控配置。
第五步:创建MRTG主索引页面
为了方便浏览所有监控图表,我们需要创建一个索引页面,使用indexmaker工具可以轻松完成此任务:
indexmaker --output=/var/www/html/mrtg/index.html /etc/mrtg/mrtg.cfg
此命令会根据mrtg.cfg中的配置,生成一个index.html文件,其中包含了所有监控目标的链接。
第六步:运行MRTG并设置定时任务
MRTG需要定期运行(通常每5分钟)来采集数据并更新图表,我们可以手动运行一次,以检查是否有错误。
env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg
注意:前两次运行时,可能会出现关于日志文件不存在的警告,这是正常现象,MRTG会自动创建它们,使用env LANG=C可以避免在某些语言环境下出现编码相关的警告。
为了实现自动化,我们需要将MRTG添加到cron定时任务中,编辑系统的cron任务表:

vi /etc/crontab
在文件末尾添加以下一行,表示每5分钟以root用户身份运行一次MRTG:
*/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --logging /var/log/mrtg.log 保存后,cron服务会自动加载新的任务。
第七步:启动Web服务并访问监控页面
确保Apache Web服务器正在运行,并已设置为开机自启。
service httpd start chkconfig httpd on
如果您的系统启用了防火墙(iptables),请允许HTTP流量(TCP端口80)通过:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT service iptables save
打开浏览器,访问 http://<您的服务器IP地址>/mrtg/,您就能看到MRTG生成的流量监控图表了,图表会每5分钟自动更新一次,实时反映服务器的网络进出流量。
相关问答FAQs
问题1:MRTG生成的图表显示空白,或者长时间不更新,应该如何排查?
解答: 这是一个常见问题,可以从以下几个方面进行排查:
- 检查Cron任务:确认cron任务是否正在执行,可以查看cron日志
tail -f /var/log/cron,看是否有关于mrtg的执行记录。 - 手动执行MRTG:在终端手动运行
env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg,仔细观察屏幕输出的错误或警告信息,这通常是定位问题的关键。 - 验证SNMP连接:再次运行
snmpwalk -v 2c -c public localhost ifHCInOctets,检查是否能正常获取到网络接口的流量计数器,如果失败,说明SNMP配置有问题。 - 检查文件权限:确保
/var/www/html/mrtg目录及其内部文件的权限允许Apache用户(如apache)读取,可以使用chown -R apache:apache /var/www/html/mrtg来修正。 :确认配置文件中的 Target行所指定的主机地址和社区字符串是否正确无误。
问题2:如何使用一台MRTG服务器同时监控多台远程服务器的流量?
解答: MRTG天然支持监控多台设备,步骤如下:
- 配置远程服务器:在每一台需要被监控的远程服务器上,按照本文第二步的方法安装并配置
net-snmp,确保其SNMP服务正常启动,并且防火墙允许来自MRTG服务器的UDP 161端口请求。 - 在MRTG服务器上添加配置:回到您的MRTG中央服务器,使用
cfgmaker命令为每一台远程服务器生成配置。关键在于使用>>追加符号,而不是>覆盖符号。cfgmaker --global "WorkDir: /var/www/html/mrtg" public@192.168.1.101 >> /etc/mrtg/mrtg.cfg cfgmaker --global "WorkDir: /var/www/html/mrtg" public@192.168.1.102 >> /etc/mrtg/mrtg.cfg
- 更新索引页:每次添加新的监控目标后,都需要重新运行
indexmaker命令来更新主页,以便包含新设备的链接:indexmaker --output=/var/www/html/mrtg/index.html /etc/mrtg/mrtg.cfg
- 等待数据更新:由于cron任务每5分钟运行一次,稍等片刻后,刷新浏览器页面,即可看到新添加的远程服务器的流量图表。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复