本文目录导读:

- 准备工作与环境要求
- 安装MRTG
- 配置被监控设备(交换机/路由器/服务器)
- 生成MRTG配置文件
- 手动测试配置文件(关键步骤)
- 定期采集数据(配置Crontab)
- 生成Web页面(IndexMaker)
- 配置Web服务器访问
- 高级技巧与常见问题
- 替代方案参考
MRTG(Multi Router Traffic Grapher)是一个经典的开源网络流量监控工具,通过SNMP协议定期获取设备(如路由器、交换机、服务器网卡)的流量数据,并生成历史图表。
以下是使用MRTG进行流量监控的完整流程:
准备工作与环境要求
- 操作系统:Linux/Unix 或 Windows(下文以Linux为例)。
- 所需组件:
- MRTG 主程序。
- Perl 解释器(MRTG由Perl编写)。
- SNMP 协议支持(需要被监控设备开启SNMP,且监控端有SNMP客户端工具如
snmpget)。 - Web服务器(如Apache、Nginx,用于展示生成的图表)。
安装MRTG
在 CentOS/RHEL/Fedora 上:
sudo yum install mrtg httpd net-snmp-utils
在 Ubuntu/Debian 上:
sudo apt-get install mrtg apache2 snmpd
配置被监控设备(交换机/路由器/服务器)
你需要确保设备开启了SNMP协议(通常是v1或v2c),以常见设备举例:
-
Cisco/Huawei交换机:
snmp-server community public RO
-
Linux服务器: 修改
/etc/snmp/snmpd.conf,添加或修改:rocommunity public 127.0.0.1 # 允许本机访问,实际应限制IP
重启snmpd服务:
sudo systemctl restart snmpd
生成MRTG配置文件
MRTG提供了一个检测工具 cfgmaker,它可以自动扫描设备并生成配置文件。
命令格式:
cfgmaker --global "WorkDir: /var/www/html/mrtg" \
--global "Options[_]: growright, bits" \
--output /etc/mrtg/mrtg.cfg \
public@192.168.1.1
- public:SNMP社区字符串(相当于密码)。
- 168.1.1:被监控设备的IP地址。
- WorkDir:存放生成图片(.png)和html文件的目录。
- growright, bits:让图表向右增长,并以位/秒显示。
如果需要监控多个接口,可以多加几个IP,如果需要监控特定CPU/内存,则需手动编辑mrtg.cfg,使用自定义OID。
手动测试配置文件(关键步骤)
运行以下命令,看是否能正确获取到第一个接口的数据:
/usr/bin/mrtg /etc/mrtg/mrtg.cfg
注意:前两次运行通常会有错误(日志文件未创建),连续运行2-3次直到没有“Rateup”错误为止,这些错误是正常的,因为MRTG需要两次数据才能计算速率。
定期采集数据(配置Crontab)
MRTG本身不自动运行,需要借助Crontab每5分钟执行一次。
编辑crontab:
sudo crontab -e
添加一行:
*/5 * * * * /usr/bin/mrtg /etc/mrtg/mrtg.cfg --logging /var/log/mrtg.log
这会让MRTG每5分钟运行一次,采集数据并更新图表。
生成Web页面(IndexMaker)
你可以让MRTG自动生成一个显示所有接口的首页。
indexmaker /etc/mrtg/mrtg.cfg > /var/www/html/mrtg/index.html
配置Web服务器访问
将Web服务器的根目录指向 /var/www/html/mrtg(或创建软链接)。
-
Apache:默认已配置
/var/www/html,将mrtg目录放在其下即可。 -
访问
http://你的服务器IP/mrtg/,你应该就能看到如下页面:- Traffic Analysis(流量分析):显示下行/上行速率。
- 日/周/月/年视图:不同的时间粒度。
高级技巧与常见问题
a. 监控服务器本地网卡(Loopback)
如果你要监控自己Linux服务器的eth0,可以直接在mrtg.cfg中手动配置:
Target[local_eth0]: 1:public@127.0.0.1 MaxBytes[local_eth0]: 12500000 # 100Mbps约等于12500000字节/秒local_eth0]: Server Eth0 traffic PageTop[local_eth0]: <H1>Server Eth0 Traffic</H1>
然后手动运行 mrtg /etc/mrtg/mrtg.cfg。
b. 监控CPU使用率
MRTG不限于网口,可以监控任何SNMP OID,例如监控CPU负载:
Target[cpu]: 1.3.6.1.4.1.2021.11.11.0&1.3.6.1.4.1.2021.11.11.0:public@127.0.0.1 MaxBytes[cpu]: 100 Options[cpu]: gauge, nopercentcpu]: CPU Utilization
c. 如何解读MRTG图表
| 元素 | 含义 |
|---|---|
| 绿色线条 | 流入流量(Incoming) |
| 蓝色线条 | 流出流量(Outgoing) |
| “当前” | 现在此刻的流量值 |
| “平均” | 统计周期内的平均流量 |
| “最大” | 统计周期内的峰值流量 |
d. 流量值为0或显示“No data”
- 检查SNMP是否能连通:
snmpwalk -v2c -c public 192.168.1.1 - 检查防火墙是否开放UDP 161端口。
- 检查mrtg.cfg中的
WorkDir是否有写权限。
替代方案参考
虽然MRTG非常经典,但它生成的是静态PNG图片,现代监控更推荐轮询数据库+Web动态图表(如 Cacti,基于RRDTool,功能更强大),或者使用 Prometheus + Grafana(支持更多数据源、告警更灵活)。
如果只是想快速查看流量趋势,MRTG仍然是一个轻量可靠的选择。
标签: 流量监控