Linux 技术手札

RHEL / CentOS 7 安装 RRDTool 监测流量

RRDTool 是十分好的的统计工具,跟 MRTG 是同一位开发反者。相比起 MRTG, MRTG 主要用作统计及监测系统的流量,而 RRDTool 的功能更加强大,可以自订多项数据在同一张图,而且画图也可以自订各种参数,可以画出十分漂亮的统计图表。另一款十分流行的系统监测工具 — Cacti,就是基于 RRDTool 开发的 PHP 程式。

我个人是较喜欢用 RRDTool,虽然 Cacti 安装好,会自行完成大部份设定工具,画的图也很漂亮,但我不太喜欢 Cacti 的操作较繁复,始终我管理的服务器不是很多。

以前要安装 RRDTool 需要自行编译原始码安装,现在 CentOS 默认也可以用 yum 安装,省却了不少工作,只是安装的版本较旧,目前安装安装的版本是 1.4.8, 以下纪录一下安装 RRDTool 及设定监测网络流量的方法。

执行以下指令安装 RRDTool:

# yum -y install rrdtool*

现在先建立 rrd 数据库,执行以下指令:

现在建立了一个名为 network.rrd 的 rrd 数据库在 /etc/rrd 目录下,现在到取得资料。RRDTool 除了可以用 SNMP 取得监测的数据,也可以透过指令的输出取得数据,以下会示范监测系统的流量。

例如我的网卡是 em1, 执行 ifconfig em1 指令,执行结果其中两行包括了量资讯,再用 grep 过滤需要的两行:

# ifconfig em1 | grep bytes
RX packets 34179796 bytes 5467568214 (5.0 GiB)
TX packets 37912457 bytes 36763565386 (34.2 GiB)

上面的执行结果,我只需要 5467568214 及 36763565386 两个数值,可以配合 cut 截取所需字串:

# ifconfig em1 | grep bytes|cut -d”:” -f2|cut -d” ” -f14
5468013207
36766952436

第一行是 IN 的流量,第二行是 OUT 的流量,现在再配合 sed 读取第一行或第二行,就可以取得 IN 及 OUT 的流量数据:

这两个指令要现在放到 rrdtool 执行,以下是 rrdtool 对 /etc/rrd/network.rrd 更新的指令,先纪下来,一会连同画图的指令一同放到 Shell Script 自动执行:

先建立储存 rrd 统计图表的目录:

# mkdir /var/www/rrd

建立以下 rrd-update.sh Shell Script:

例如以上 Shell Script 放在 /root/rrd-update.sh, 执行以下指令:

# chmod +x /root/rrd-update.sh

将 rrd-update.sh 放在 crontab 自动执行,执行 “crontab -e”, 加入以下一行:

过几分镜 rrd-update.sh 执行后,便会在 /var/www/rrd 目录产生图片,等大约半小时后便可以看到有数据的图片了。

上面的画图的指令看似复杂,但只是关于图表的参数,仔细查看 rrdtool 的手册,了解里面的意思,便可以画出很漂亮的图表,而且 rrdtool 除了监测流量外,监测其他系统数据也很实用的。

Exit mobile version