MRTG是一个开源的图形化的监控网络流量负载的工具,通过snmp协议得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML 文档方式显示给用户,以非常直观的形式显示流量负载。

安装
安装 MRTG
选择性地安装 snmpwalk 及 snmpget
1 | yum -y install net-snmp-utils |
MIB 及 OID
在继续前进之先,你须要从你的设备取得一些信息。你可能要为你的设备找寻 MIB,或者花点时间研究所需用的 OID。snmpget 及 snmpwalk 这两个指令亦能提供协助。
配置文件
MRTG 组件会创建一个简单的配置文件、crontab 档、及 Apache 配置文件。
3 | /etc/httpd/conf.d/mrtg.conf |
/etc/mrtg/mrtg.cfg —— 入口级样例
一旦你取得 OID 信息,你可以开始编辑你的 mrtg.cfg 文件。你只需删除注释,然后修改它们指向你要监视的设备。缺省的文件内含有一个样例的主机作为参考。
4 | ThreshDir: /var/lib/mrtg |
5 | #Target[r1]: 2:public@myrouter.somplace.edu |
7 | #Title[r1]: Traffic Analysis |
8 | #PageTop[r1]: <H1>Stats forour Ethernet</H1> |
/etc/mrtg/mrtg.cfg —— 高级样例
这个高级的 mrtg.cfg 样例由一个运行著 DD-WRT 的 Linksys 路由器收集端口的吞吐量。在这个样例中,maxbytes 栏已通过下划线变成为一个全局设置。此外,这里亦定义了额外的全局选项,令图表靠右形成,并显示位元而不是字节。每个端口已被设置为一个独立的目标。输入及输出的 OID 的格式是:符号名称、社区符串、及管理的 IP 地址。
02 | ImageDir: /var/www/mrtg |
04 | ThreshDir: /var/lib/mrtg |
06 | Options[_]: growright, bits |
08 | Target[Linksys_Port_1]: ifInOctets.1&ifOutOctets.1:public@192.168.0.9 |
09 | Title[Linksys_Port_1]: Linksys Port 1 Throughput |
10 | PageTop[Linksys_Port_1]: <H1>Linksys Port 1 Throughput</H1> |
12 | Target[Linksys_Port_2]: ifInOctets.2&ifOutOctets.2:public@192.168.0.9 |
13 | Title[Linksys_Port_2]: Linksys Port 2 Throughput |
14 | PageTop[Linksys_Port_2]: <H1>Linksys Port 2 Throughput</H1> |
16 | Target[Linksys_Port_3]: ifInOctets.3&ifOutOctets.3:public@192.168.0.9 |
17 | Title[Linksys_Port_3]: Linksys Port 3 Throughput |
18 | PageTop[Linksys_Port_3]: <H1>Linksys Port 3 Throughput</H1> |
20 | Target[Linksys_Port_4]: ifInOctets.4&ifOutOctets.4:public@192.168.0.9 |
21 | Title[Linksys_Port_4]: Linksys Port 4 Throughput |
22 | PageTop[Linksys_Port_4]: <H1>Linksys Port 4 Throughput</H1> |
24 | Target[Linksys_Port_5]: ifInOctets.5&ifOutOctets.5:public@192.168.0.9 |
25 | Title[Linksys_Port_5]: Linksys Port 5 Throughput |
26 | PageTop[Linksys_Port_5]: <H1>Linksys Port 5 Throughput</H1> |
28 | Target[Linksys_Port_6]: ifInOctets.6&ifOutOctets.6:public@192.168.0.9 |
29 | Title[Linksys_Port_6]: Linksys Port 6 Throughput |
30 | PageTop[Linksys_Port_6]: <H1>Linksys Port 6 Throughput</H1> |
32 | Target[Linksys_Port_7]: ifInOctets.7&ifOutOctets.7:public@192.168.0.9 |
33 | Title[Linksys_Port_7]: Linksys Port 7 Throughput |
34 | PageTop[Linksys_Port_7]: <H1>Linksys Port 7 Throughput</H1> |
/etc/mrtf/mrtg.cfg – 使用 cfgmaker
你亦可以让 MRTG 自动为你创建一个配置文件。
1 | cfgmaker public@192.168.0.9 > /etc/mrtg/mrtg.conf |
/etc/cron.d/mrtg
当你存储配置文件后,MRTG 会开始创建 rrdtool 日志档及基本的网页。如果你已急不及待,或者想调试,你可以执行 poller 指令。
3 | /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok |
/etc/httpd/conf.d/mrtg.conf – Apache 设置
过了数分钟后,你可以用你喜欢的浏览器来打开你的网站: http://www.example.com/mrtg/linksys_port_1.html
MRTG 在 Apache 的设置里只缺省了 localhost 可以查看这个 URL。如果你需要在另一台机器上访问这个 URL,你只需修改 MRTG 的 Apache 配置文件及重新引导 Apache。这个样例只包含 Alias 的定义。
1 | /etc/httpd/conf.d/mrtg.conf |
1 | Alias /mrtg /var/www/mrtg |
8 | # # Allow from .example.com |
请在修改后重新引导 Apache。
创建索引页
index.html 并不存在。你可以用 indexmaker 来创建它。你可以将这个指令加到 crontab 内,或者在每次修改 mrtg.cfg 后执行它。
1 | indexmaker --output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg |
现在你应该可以用你喜欢的浏览器打开 http://www.example.com/mrtg 来查看图表。
参考文章:
.