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 除了監測流量外,監測其他系統數據也很實用的。


Leave a Reply