天天看點

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分鐘跑一次就可以持續生成圖了

效果如下:

本文出自 “” 部落格,請務必保留此出處