多路由器流量图示器
定义
多路由器流量图示器是一类把网络设备接口流量数据转化为图形页面的监控工具,其英文名称为 Multi Router Traffic Grapher,缩写 MRTG[1]。它的输入是路由器、交换机等设备上报的计数器数值,输出是嵌入了 PNG 图像的 HTML 页面,页面可被任意现代浏览器打开查看[3]。
该工具的核心用途是呈现网络链路的负载状况,而非提供设备配置或告警联动功能[4]。除链路流量外,任何可由 SNMP 读取的变量,甚至外部程序输出的数值,都可以交给它绘图[2]。
原理
MRTG 由两部分协作完成工作:一个用 Perl 编写的脚本通过 SNMP 读取路由器的流量计数器,另一个用 C 编写的程序负责记录数据并绘制曲线,图形随后被嵌入网页[1]。采集通常按固定间隔进行,例如每 5 分钟轮询一次目标设备,把两次计数器的差值换算成该时段的平均速率[5]。
流量速率的换算可写成:$R = \frac{(C_2 - C_1)}{t_2 - t_1}$,其中 $C_1$、$C_2$ 为前后两次读取的计数器值,$t_2 - t_1$ 为轮询间隔。若计数器回绕,需要依据计数器位宽进行修正,软件对 SNMPv2c 的 64 位计数器可直接读取,从而减少回绕问题[3]。
数据写入日志文件后会做一次合并,使文件体积不随时间无限增长,同时仍保留近两年流量的相关数据,这也是它能长期无人值守运行的原因之一[1]。其处理流程可概括为:
flowchart LR
A[路由器接口计数器] -->|SNMP 轮询| B[Perl 采集脚本]
B --> C[日志文件与数据合并]
C --> D[C 绘图程序]
D --> E[PNG 图像]
E --> F[HTML 页面]
发展历程
1994 年,作者在只有一条 64 kbit 对外线路的站点工作,为观察该线路的占用情况编写了一个能在网页上持续更新的小程序,其后逐步演化为可配置的 Perl 脚本 MRTG-1.0,并于 1995 年春季发布[1]。这段经过由作者本人记录在软件手册的历史部分中[2]。
1996 年 1 月,戴夫·兰德(Dave Rand)就 MRTG 运行缓慢的问题与作者联系,随后把其中最耗时的部分改用 C 语言重写,使速度提升约 40 倍,这一改动也促成了 MRTG-2 的开发[2]。MRTG-2 在 5 分钟间隔内大约只能监视 600 个路由器端口,随着大型站点的使用规模扩大,性能成为瓶颈[6]。
1997 年 11 月,项目启动了彻底的重构,目标是把 MRTG 从单一的网络流量监视程序转变为可构建各类时序数据监视应用的工具集,并引入新的数据存储机制[6]。新机制后来被独立为 RRDtool 软件包,MRTG 本身也保留了调用它的接口[7]。后续版本在协议支持上覆盖 SNMPv1、SNMPv2 与 SNMPv3,并持续加入对 RRDcached 等组件的兼容[5]。
应用
最常见的用法是监视出口线路与骨干链路的流量,通过日、周、月、年四种视图判断链路是否接近饱和,为带宽扩容提供依据[2]。由于数据来源不限于流量计数器,系统负载、登录会话数、调制解调器可用性等指标同样可以被采集并绘制成图[3]。
在部署形态上,软件可运行于多数 UNIX 平台与 Windows NT,配套的配置工具能针对特定路由器生成初始配置文件,降低逐端口手工配置的工作量[1]。被监视的接口除编号外,还可以用 IP 地址、接口描述和以太网地址来标识,便于在设备接口变动时保持配置稳定[3]。运行环境方面,需要 Perl 解释器、Web 服务器以及绘图所需的 GD 图形库,数据采集与绘图由定时任务周期性触发[4]。
局限
MRTG 的采集是周期性轮询,呈现的是每个间隔内的平均值,短于轮询间隔的突发流量不会被单独记录,峰值的细节可能被平滑掉[5]。它的输出以静态图形页面为主,本身不包含告警、事件关联或集中式设备管理能力。
性能方面,MRTG-2 在 5 分钟间隔下的监视规模大约为 600 个端口,链路数量较多的环境需要依靠 RRDtool 或其它架构分担压力[6]。此外,其配置虽然通过文本文件完成,但在 Windows 平台上的安装与配置过程相对繁琐[5]。
从数据模型看,日志文件采用固定大小的合并结构,历史精度会随时间降低,只能保留粗粒度的长期趋势,无法回溯任意时刻的原始采样值[1]。
参见
参考资料
- mrtg(1) — mrtg — Debian trixie - MRTG(1) | mrtg | MRTG(1) [引用日期2026-10-19]
- mrtg.en [引用日期2026-10-19]
- Ubuntu Manpage: mrtg [引用日期2026-10-19]
- net/mrtg - The NetBSD Packages Collection [引用日期2026-10-19]
- MRTG - 监控网络链路流量负载的工具软件 [引用日期2026-10-19]
- The following paper was originally published in the [引用日期2026-10-19]
- {MRTG}, Multi Router Traffic Grapher [引用日期2026-10-19]