天天看点

rrdtool通过流量数据绘图

线上机器的流量图都采用MRTG来画的,有些机器部署了同一业务,需要知道这些业务跑了多少带宽,由于MRTG的图有每个时间点的流量数据log,所以就在这个log的基础上取数据用rrdtool合并起来,就可以知道这些机器总共跑了多少带宽了。

   原理:定期(这里是5分钟)从mrtg服务器上同步log过来,然后截取最近的流量数据,如果通过过来的log时间不是最新的,说明这台机器可能出故障或者mrtg流量有问题,就忽略它;将取出来的数据用rrdtool更新,画图即可;

先说下MRTG的log格式吧:

--------------------------------------------------------------------

MRTG日志例样

mrtg上次运行 输入总流量 输出总流量

1233651303 86083097205191 1077254914026673

时间戳 当前输入 当前输出 平均最大输入 平均最大输出

1233651303 1502168 36756425 1502168 36756425

1233651242 1637256 37749359 1840688 39682490

1233651000 1593342 35050409 1808632 37572979

1233650700 1711678 38139787 1966100 42713270

MRTG日志详解

MRTG日志分为两部分:

+ 第一部分

日志的第一行是第一部分。有三列,分别代表MRTG上次的运行时间戳,输入

总流量和输出总流量。

+ 第二部分

除去第一行剩下的部分为第二部分,总共5列,分别代表:

1. A(第一列) 这一列相关数据的时间戳,需要注意的是开始时每行之间的时间间

隔为5分钟,最后为一天.

perl -e ‘print scalar localtime(x),"\n"‘

2. B(第二列) 每秒的平均输入(average incoming)流量,以字节为单位。

3. C(第三列) 每秒的平均输出(average outgoing)流量,以字节为单位。

4. D(第四列) 当前间隔内每秒的最大输入流量(maximum incoming),以字节为单

位。这是从当前间隔内所有的更新中计算出来的。假设当前时隔为1小时,每5分

钟更新一次,那么这个值就是所有12次数据中最大的那个。

5. E(第五列) 当前间隔内每秒的最大输出流量(maximum outgoing),以字节为单

位。计算方法同上。

代码如下:

把rsync_log.sh这脚本放到crontab里面5分钟跑一次就可以持续生成图了

效果如下:

本文出自 “” 博客,请务必保留此出处