RRDTool

一、簡介

  • RRDtool是由Tobias Oetiker 編寫並由全球各地的許多人貢獻的工具。本篇文檔的作者是Alex van den Bogaerdt 主要是幫助你理解RRDtool是什麼,它能夠幫助你作些什麼。 RRDtool的文檔對於有些人來說過於技術化。本教程幫助你理解RRDtool的基本概念。它爲你自學RRDtool的文檔做好準備。本文檔還重點介紹了網絡統計方面的知識。


1、RRDtool是什麼東西?

  • RRDtool是指Round Robin Database 工具(環狀數據庫)。Round robin是一種處理定量數據、以及當前元素指針的技術。想象一個周邊標有點的圓環--這些點就是時間存儲的位置。從圓心畫一條到圓周的某個點的箭頭--這就是指針。就像我們在一個圓環上一樣,沒有起點和終點,你可以一直往下走下去。過來一段時間,所有可用的位置都會被用過,該循環過程會自動重用原來的位置。這樣,數據集不會增大,並且不需要維護。RRDtool處理RRD數據庫。它用向RRD數據庫存儲數據、從RRD數據庫中提取數據。


2、RRD中可以存放什麼樣的數據?

  • 可以適合時間序列的數據。就是說你必須能夠在時間的幾個點上度量某些值,並提供這些信息給RRDtool。如果你能夠做到這一點,RRDtool就能夠存儲它們。這些數值必須是數字,但是不一定要是整數,在與MRTG合用時。(下一節會給出更詳細的介紹)。
    下面的例子是關於SNMP的,SNMP是簡單網絡過來協議的縮寫。簡單是指協議簡單--並不表示管理或監視網絡簡單。讀完本篇文檔後,你應當能夠對人們談論的SNMP的東西有更多的理解。現在,只要知道SNMP可以用來查詢設備中保持的計數器的值就可以了。我們要存放到RRD數據庫中的正是這些計數器中的數值。


3、RRDtool可以用來幹什麼?

  • RRDtool源自MRTG(多路由器流量繪圖器)。MRTG是有一個大學連接到互聯網鏈路的使用率的小腳本開始的。MRTG後來被當作繪製其他數據源的工具使用,包括溫度、速度、電壓、輸出量等等。
    很可能你會從使用RRDtool來存儲和處理通過SNMP收集到的數據開始。這些數據很可能是某個網絡或計算機接收或發送的字節數(比特數)。它也可以用來顯示潮水的波浪、陽光射線、電力消耗、展會的參觀人員、機場附近的噪音等級、你喜歡的度假區的溫度、電冰箱的溫度、以及任何你可以想象的東西。
    你最需要一個度量數據,以及能夠提供這些數據給RRDtool的感應器就可以了。RRDtool會讓你創建數據庫、存儲數據、提取數據、創建用於在Web瀏覽器中顯示的PNG格式的圖像。這些PNG圖像以來於你收集的數據,它可以是網絡平均使用率、峯值。


4、問題探討

  • 首先:再讀一遍!你可能漏了某些地方。如果你無法編譯源代碼,而且你的操作系統相當普遍,很可能不是RRDtool的錯誤。互聯網上有已經編譯好的版本。如果來自可信賴的網站,就下載一個。
    另一種情況是程序能夠工作,但是沒有得到預期的結果,可能是配置方面的問題。檢查你的配置,與後面例子的配置比較一下。
    RRDtool有一個郵件列表及其歸檔。讀一下幾周的列表並搜索歸檔。沒有搜索過歸檔就提問是很粗魯的做法:你遇到的問題可能已經由其他人解決了!儘管不是全部,大多數問題都會這樣,郵件列表不是經濟爲了某個參與者服務的。看看RRDtool的文檔瞭解郵件列表的位置和使用方法。
    我建議你馬上就花點時間訂閱郵件列表,只要發送一封主題爲 subscribe 的郵件到 [email protected] 就可以了。如果要退定該郵件列表,只需要發送主題爲 unsubscribe 到同樣的地址即可。


二、學習實例
1、第一個RRD數據庫

  • 在我看來,學習某個東西的最好辦法就是實踐。爲什麼現在不開始呢?我們會創建一個數據庫,放一些數值到它裏面,然後提取這些數據。你的輸出應當與本文檔中的輸出是一樣的。
    我們會從一些簡單的入手,然後把汽車與路由器比較,或者將公里和比特、字節數比較。他們都是一樣的:都是某些時段的某些數值。
    假設我們有一個向互聯網發送數據和接收數據的設備。該設備保留一個計數器,該計數器在開啓設備時設置爲0,並在每傳送一個字節就加1。該計數器可能會有一個最大值。如果該值達到最大時,在加一個字節的計數,該計數器就會再次從0開始。這與世界上的許多計數器都是一樣的,比如車輛上的里程計數器。
    關於網絡的討論通常用每秒比特數來衡量,因此我們要習慣這種用法。把一個字節看成是8個比特,並且開始用比特而不是字節來思考問題。不過,計數器仍然用字節數爲單位來計量!在SNMP世界裏,大部分的計數器都是32比特的。這就意味着他們計數範圍是0-4294967。我們在例子裏會用到這些數值。該設備在被查詢時,會返回計數器的當前值。我們知道從上次查詢設備開始到現在的時間,因此我們現在就知道每秒 平均傳輸了多少字節數。這不難計算。首先用文字來描述,然後計算:

用當前查詢到的計數器值,減去上一次查詢的計數器值
把當前查詢時間和上次查詢時間作上述同樣操作(秒)
將(1)的結果除以(2)的結果,得到的結果就是每秒的字節數。乘以8就得到每秒的比特數(bps)

實例一

 

  • 你現在正在開車。12:05時你看了一下儀表盤上的里程計數器,它顯示這倆車已經行駛了12345公里。12:10分時,你有看了一下里程計數器,它顯示 12357公里。這表示你在5分鐘內行駛了12公里。科技人員會把它轉換成米/秒,這樣可以更好的進行比較(每5分鐘的字節數)和(每秒比特數)。
    我們行駛了12公里,也就是12000米。我們在5分鐘內,或者說是300秒內完成。我們的速度是1200米/300秒,或者說是40米/秒。
    我們可以用公里/小時來計算速度:12乘以5分鐘就是一個小時,因此我們必須把12公里乘以12得到144公里/小時。對於和我一樣說英語的朋友來說,就是90英里/小時,因此不要在家裏或我生活的地方嘗試這個速度 :)
    記住:這些數值都僅僅是平均值。如果無法從數字中得到你是否以固定的速度在行駛。本教程後面有一個例子說明這個問題。我希望你理解在計算米/秒或者比特/秒。唯一的差別在於收集數據的方式。即使是K這個單位也是一樣的,因爲在網絡術語中,K同樣表示1000。
    我們現在要創建一個數據庫,在此數據庫中我們能夠保存所有這些有趣的數字。啓動這個程序的方法可能在各個操作系統上各不相同,但是我假設你可以搞清楚它是否與你的操作系統不同,鍵入下面的行作爲一個長長的行(爲了可讀性,我得把他分成幾行)並且用 / 來分割。
rrdtool create test.rrd /
--start 920804400 /
DS:speed:COUNTER:600:U:U /
RRA:AVERAGE:0.5:1:24 /
RRA:AVERAGE:0.5:6:10


2、創建了什麼東西?

  • 我們創建的rrd數據庫名爲test (test.rrd),它的起始時間是我寫這篇文檔的當天下午,也就是1999年3月7日(該日期轉換成920804400秒)。我們的數據庫存放一個名爲 ’speed’ 的數據源(DS),它表示一個計數器。該計數器每5分鐘(缺省)讀取一次。在同一個數據庫中,保存有2個環狀歸檔(RRA),一個是每次讀取時的平均數據(例如:沒有東西進行平均)並保留24個樣本(24乘以5分鐘是2小時)。另一個RRA有6個平均值(半小時)幷包含10個這樣的平均值(例如5個小時)。

 

RRDtool使用來源於UNIX世界的特殊時間戳。該時間戳是自1979年1月1日UTC時間開始到當前逝去的秒數。該時間戳的值被轉換成本地時間,它在不同的時區會不一樣。
可能你不是和我在地球的同一個地方。這就是說時區不同。在所有的例子中,我所說的時間當中,小時可能對你來說是錯誤的。這對這些例子中的結果有一點影響,在閱讀時,只需要修正時間中的小時即可。例如:我看到 12:05 的話,在英國的傢伙看到的時間就是 11:05 。

現在我們得向數據庫中填入一些數字。我們希望讀到以下數據:
12:05 12345 KM
12:10 12357 KM
12:15 12363 KM
12:20 12363 KM
12:25 12363 KM
12:30 12373 KM
12:35 12383 KM
12:40 12393 KM
12:45 12399 KM
12:50 12405 KM
12:55 12411 KM
13:00 12415 KM
13:05 12420 KM
13:10 12422 KM
13:15 12423 KM

我們用下面的命令把上述數據填入數據庫:

 

rrdtool update test.rrd 920804700:12345 920805000:12357 920805300:12363
rrdtool update test.rrd 920805600:12363 920805900:12363 920806200:12373
rrdtool update test.rrd 920806500:12383 920806800:12393 920807100:12399
rrdtool update test.rrd 920807400:12405 920807700:12411 920808000:12415
rrdtool update test.rrd 920808300:12420 920808600:12422 920808900:12423

正如你說看到的那樣,可以在一個命令裏向數據庫中填入多個值。爲了可讀性,我得只用三個數據,實際一行裏運行的最大數據與操作系統相關。
我們可以使用 rrdtool fetch 命令從數據庫中提取數據。

rrdtool fetch test.rrd AVERAGE --start 920804400 --end 920809200
  • 該命令會返回如下輸出結果:
    speed

 

920804700: nan
920805000: 4.0000000000e-02
920805300: 2.0000000000e-02
920805600: 0.0000000000e+00
920805900: 0.0000000000e+00
920806200: 3.3333333333e-02
920806500: 3.3333333333e-02
920806800: 3.3333333333e-02
920807100: 2.0000000000e-02
920807400: 2.0000000000e-02
920807700: 2.0000000000e-02
920808000: 1.3333333333e-02
920808300: 1.6666666667e-02
920808600: 6.6666666667e-03
920808900: 3.3333333333e-03
920809200: nan
如果不是像上面的輸出結果,可能哪裏有錯誤。也許你的操作系統會打印出不同的格式 NaN 。 NaN 表示 非數字 。 如果你的操作系統輸出 U 或 UNKN 或者其他類似東西都是正常的。如果其他地方錯誤,可能是因爲你的過程中的那些步驟出錯了(當然假設我的教程是完全正確的 :-))。這樣的話,刪除數據庫文件然後再重新嘗試。 有時事情就會變化。本例喲難道的數據像 0.04 而不是 4.0000e-02 。這些實際上是一樣的數字,只是寫法不同而已。如果rrdtool今後的版本顯示略有不同是輸出也不要大驚小怪。本文檔中的例子對於RRDtool 1.2.0版本都是正確的。


3、繪第一張圖

建幾個圖示的時候到了,試試下面的命令:

rrdtool graph speed.png /
--start 920804400 --end 920808000 /
DEF:myspeed=test.rrd:speed:AVERAGE /
LINE2:myspeed#FF0000


如圖一

 

  • 該命令會創建名爲speed.png的圖像文件,該圖像從12:00開始,到13:00。有一個名爲myspeed的變量定義,它使用來自 test.rrd數據庫的 speed RRA中的數據。繪製的線條是2像素高,表示myspeed變量。顏色是紅色的.
    你會注意到圖像的起始不是12:00而是12:05。這是因爲在此時間之前的數據不夠計算出平均值。這只會在缺少某些樣本的情況下發生,不會經常發生。
    顏色是由紅、綠、藍構成的。對每種顏色成分,你可以用16進制來表示使用多少,其中00表示不包含,FF表示完全包含。白色是由紅、綠、藍組成的:FFFFFF。黑色是全部不包含:000000。


4、用幾種數學方法來繪圖

  • 查看圖像時,你會注意到橫軸下標爲 12:10、12:20、12:30、12:40、12:59。有時某些下標不適合(可能是12:00和13:00)會被忽略掉。
    縱軸顯示我們輸入的範圍。下面提供的公里數,以及除以300妙的結果,我們得到非常小的數值。爲了更加精確,第一個值是12(12567-12456),除以300後得到0.04,RRDtool顯示時爲 40m 表示 40/1000 。 其中的 m 與米、公里、或者毫米都沒有任何關係!RRDtool不知道我們的數據單位,它只處理沒有單位的數據。
    如果我們用米來衡量我們的距離,就會是這樣:(12′357′000-12′345′000)/300 = 12′000/300 = 40.
    因爲許多人都對這樣的數值範圍感覺更好,我們就來修正一下。我們將重新創建數據庫,並存儲正確的數據。但是有更好的辦法:在創建png文件時進行一些計算!
rrdtool graph speed2.png /
--start 920804400 --end 920808000 /
--vertical-label m/s /
DEF:myspeed=test.rrd:speed:AVERAGE /
CDEF:realspeed=myspeed,1000,/* /
LINE2:realspeed#FF0000



注意:不要忘記操作符 * 後面的 。這個反斜杆用來將*從操作系統可能解釋的符號轉義,而不是直接傳遞給rrdtool命令。
在查看PNG文件後,你會注意到 m 不見了。正確的結果就是這樣。同樣,在圖像中加入了一個標註。出了上面提到的幾點外,PNG看起來應當是一樣的。

如圖二

 

  • 計算是在CDEF部分中指定的,使用逆波蘭表達式( RPN )表示的。我們要求RRDtool所作的事情是:`取數據源myspeed, 以及數值1000;把他們相乘` 。在此不要被RPN表達式困擾了,後面會詳細介紹。同時,你可能想讀一讀關於CDEF的教程。以及Steve Rader的RPN表達式的教程。不過哦首先看我這篇教程吧。
    如果我們用1000乘以這些數值,顯示把同樣的數據顯示成公里/小時也是可以的。
    要修改米/秒爲單位的值:
    計算米/小時: value * 3′600
    計算公里/小時: value / 1′000
    合起來: value * (3′600/1′000) 或者 value * 3.6

下面我們來創建這個PNG文件,並加入更多的魔幻功能…

rrdtool graph speed3.png /
--start 920804400 --end 920808000 /
--vertical-label km/h /
DEF:myspeed=test.rrd:speed:AVERAGE /
"CDEF:kmh=myspeed,3600,*" /
CDEF:fast=kmh,100,GT,kmh,0,IF /
CDEF:good=kmh,100,GT,0,kmh,IF /
HRULE:100#0000FF:"Maximum allowed" /
AREA:good#00FF00:"Good speed" /
AREA:fast#FF0000:"Too fast"



這個圖像看起來更好。速度用KM/H表示,有一個附加的線條表示最大允許的速度(在我行駛的道路上的最大限速)。我還修改了速度的顯示顏色,把它從線條改爲區塊。

如圖三

 


5、一個更復雜的圖例

  • 現在計算更加複雜一些。對於在限速內的速度衡量方法是:
    檢查公里/小時是否大於100 ( kmh,100 ) GT
    如果是,返回0,否則返回公里/小時。 ((( kmh,100 ) GT ), 0, kmh) IF

 

對於上述的限速值:
檢查公里/小時是否大於100 ( kmh,100 ) GT
如果是,返回公里/小時,否則返回0。 ((( kmh,100) GT ), kmh, 0) IF

我願意相信RRDtool的繪圖功能能夠處理的數據沒有任何虛擬的限制。我會解釋他們是如何工作的,不過看看下面的PNG圖像:

rrdtool graph speed4.png /
--start 920804400 --end 920808000 /
--vertical-label km/h /
DEF:myspeed=test.rrd:speed:AVERAGE /
"CDEF:kmh=myspeed,3600,*" /
CDEF:fast=kmh,100,GT,100,0,IF /
CDEF:over=kmh,100,GT,kmh,100,-,0,IF /
CDEF:good=kmh,100,GT,0,kmh,IF /
HRULE:100#0000FF:"Maximum allowed" /
AREA:good#00FF00:"Good speed" /
AREA:fast#550000:"Too fast" /
STACK:over#FF0000:"Over speed"


如圖四

 

第一部分完
[轉載]RRDTool 中文手冊-簡易入門(二)

三、RRD數據庫更新實例

  • 在簡易入門(一)中已經介紹過update 命令:它使用1個或多個參數,其格式爲: : . 如果你知道可以用一個 N 表示當前的時間,你一定會高興的。或者你可以用Perl中的 time 函數來指定時間:
    perl: perl -e ‘print time, “/n” ‘
    shell: date +%s
  • 如何按照固定間隔運行某個程序各操作系統不同。不過可以用僞碼來表示:
    - Get the value and put it in variable “$speed”
    - rrdtool update speed.rrd N:$speed

 

就這些。每5分鐘運行一次上面的腳本。在你想知道圖像看起來是啥樣時,運行上面的例子。你可以把他們放入一個腳本中。運行此腳本後,查看我們剛纔創建的graph。

四、SNMP相關知識

  • 我可以想像到只有少數的人能夠每5分鐘從他們的汽車中讀取一次真實的數據。其他人不得不清算其他類型的計數器。你可以測量打印機打印的頁數,咖啡機做的咖啡杯數,計算使用的電流的設備,都可以。遞增的計數器可以被監視,並且用你已經學會的方法被繪製成圖像。稍後我們就能夠監視像溫度計這樣的值了。
    大多數對RRDtool感興趣的人會使用一個跟蹤網絡設備傳輸數據量的計數器。這樣我們下一步就來作這個。我們會從解釋如何收集數據開始。

 

有些人會說有些工具可以幫助你收集數據。他們是對的!不過,我感覺理解這些工具不是必須的非常重要。在你能夠確定爲什麼事情發生了錯誤,你要知道他們是如何工作的。

本例中使用的工具在本文檔前面非常簡短地提到過,它就是所謂的SNMP。它是與聯網設備交談的方式。

下面用到的工具名爲 snmpget ,以下是關於它是如何工作的說明:

snmpget device password OID

snmpget -v[version] -c[password] device OID
  • 對於device, 你要用設備的名稱或者IP地址來替換。對於password, 你需要使用SNMP領域中稱爲 comunity read string 來替換。對於某些設備來說,缺省的 public 可以工作,但是該設置可能會被關閉,調整或者由於安全和機密的原因而被保護起來。請閱讀你的設備或程序的文檔。

 

接下來有一個稱爲OID的參數,它用來表示 對象標識符 。

  • 剛開始學習SNMP時,它看起來有些令人困惑。在你看到MIB管理信息基時,就不會那麼困難了。MIB是用來描述數據的倒狀樹,它有隻有一個根結點,並且由根結點開始有多個分支。這些分支都以另一個結點終結,他們繼續向下分支,如此繼續。所以的分支都有一個名稱,它們構成了一個我們能夠沿着往下的路徑。我們所沿着的這些分支都被命名了:iso, org, dod, internet, mgmt 和mib-2.這些名稱也可以用數字方式記錄,就像 1 3 6 1 2 1。
    iso.org.dod.internet.mgmt.mib-2 (1.3.6.1.2.1)

 

有些程序會使用前導點 . , 令人感到許多困惑。在一個OID中並 沒有前導點。爲了顯示OID縮記法和OID完整記法的區別,(通常約定)在使用OID的完整記法時使用前導點。通常這些程序在返回數據給你時,會省略卻缺省的部分。這些程序有的有幾個缺省前綴,這會讓事情顯得更加糟糕。
Ok, lets continue to the start of our OID: we had 1.3.6.1.2.1 From there, we are especially interested in the branch interfaces which has number 2 (e.g., 1.3.6.1.2.1.2 or 1.3.6.1.2.1.interfaces).

好了,我們繼續OID的初步學習:我們有一個1.3.6.1.2.1的OID,我們對(其下面的) interface 分支特別感興趣,其編號爲2(例如:1.3.6.1.2.1.2 或 1.3.6.1.2.1.interface)。

  • 首先,我們得要有幾個SNMP的程序。先看看你的OS平臺上是否有已編譯好的軟件包。這是最便捷的方式。如果沒有,你就得下載源代碼、並編譯。互聯網上到處都是源代碼、程序。你可以用你喜歡的任何方式、搜索引擎來找到相關的信息。

 

假設你已經有了這些程序。先試着收集大多數系統都有的數據。記住:那些引起我們興趣的樹,它上面的部分都有一個簡略名。

在此我會給出一個在Fedora Core 3操作系統上可用的例子。如果對你的操作系統不可用,請查看snmp的手冊,並作相應的調整讓它能夠運行。

snmpget -v2c -c public myrouter system.sysDescr.0
  • 該設備應當迴應其自身的描述,該描述可能是一個空的。只有在你從某個設備獲得響應後,你才能夠繼續。其中可能需要使用不同的口令、或者不同的設備。
snmpget -v2c -c public myrouter interfaces.ifNumber.0

最好你得到的結果是一個數字。如果這樣的話,你就可以繼續往下,並試試另一個叫做 snmpwalk 的程序。

snmpwalk -v2c -c public myrouter interfaces.ifTable.ifEntry.ifDescr
  • 如果該命令返回一系列的接口,這就對了。以下是該命令運行的返回結果的例子:
[user@host /home/alex]$ snmpwalk -v2c -c public cisco 2.2.1.2
interfaces.ifTable.ifEntry.ifDescr.1 = "BRI0: B-Channel 1"
interfaces.ifTable.ifEntry.ifDescr.2 = "BRI0: B-Channel 2"
interfaces.ifTable.ifEntry.ifDescr.3 = "BRI0" Hex: 42 52 49 30
interfaces.ifTable.ifEntry.ifDescr.4 = "Ethernet0"
interfaces.ifTable.ifEntry.ifDescr.5 = "Loopback0"
  • 對於cisco設備,我想監視 ‘Ethernet0` 接口,從上面的輸出結果能夠看到該接口的編號是 4。 我試着運行如下命令:
[user@host /home/alex]$ snmpget -v2c -c public cisco 2.2.1.10.4 2.2.1.16.4

interfaces.ifTable.ifEntry.ifInOctets.4 = 2290729126
interfaces.ifTable.ifEntry.ifOutOctets.4 = 1256486519
  • 這樣,我就有兩個OID需要監視,他們是(這次使用完整記法):
    1.3.6.1.2.1.2.2.1.10

    1.3.6.1.2.1.2.2.1.16
    這兩個OID都有接口編號4。
    別被糊弄了,我可不是試一次就搞定的。我花了一些數據來搞清這些數字都是什麼意思。把這些編號轉換成描述文字大有幫助… 至少在大家談論MIB和OID時,你知道他們是什麼東西。別忘了接口編號(如果它不是附屬接口,就是0),如果用snmpget沒有得到響應,試試 snmpwalk。

五、應用RRDtool的實例

  • 實際運用的例子
    開始有趣的東東吧。首先,創建一個新的數據庫。它包含輸入和輸出2個計數器的數據。該數據被放入能夠進行平均的歸檔中。他們一次使用1、6、24、或 288個樣本。他們同時被存入保存最大數字的歸檔中。稍後會解釋。樣本間隔時間爲300秒,也就是5分鐘,這是一個好的開始。:

 

1個樣本 “平均” 保留5分鐘的週期
6個樣本 每30分鐘進行一次平均
24個樣本 每2小時進行一次平均
288個樣本 每1天進行一次平均

  • 我們試着與MRTG互相兼容,MRTG存儲以下數據::

 

600 5分鐘樣本數: 2天和2小時
600 30分鐘樣本數: 12.5天
600 2小時樣本數: 50天
732 1天樣本數: 732天

  • 這些範圍被補充進去,因此在數據庫中保存的數據總數大約797天。RRDtool存儲不同的數據,它不會在 每日 歸檔停止的地方開始 每週 歸檔。對於這兩個歸檔,最新的數據會是在 now 附近,因此我們需要比MRTG保存更多的數據!
    我們需要::

 

600個5分鐘的樣本 (2天和2小時)
700個30分鐘的樣本 (2天和2小時,加12.5天)
775個2小時的樣本 (上述+50天)
797個1天的樣本 (上述+732天,環型迴繞最大797)

rrdtool create myrouter.rrd /
DS:input:COUNTER:600:U:U /
DS:output:COUNTER:600:U:U /
RRA:AVERAGE:0.5:1:600 /
RRA:AVERAGE:0.5:6:700 /
RRA:AVERAGE:0.5:24:775 /
RRA:AVERAGE:0.5:288:797 /
RRA:MAX:0.5:1:600 /
RRA:MAX:0.5:6:700 /
RRA:MAX:0.5:24:775 /
RRA:MAX:0.5:288:797

接下來要做的就是收集數據並把它保存起來。以下是一個例子。它是用僞碼寫的,你得根據OS調整後讓它能夠運行。:

while not the end of the universe
do
get result of
snmpget router community 2.2.1.10.4
into variable $in
get result of
snmpget router community 2.2.1.16.4
into variable $out

rrdtool update myrouter.rrd N:$in:$out

wait for 5 minutes
done

在收集了1天的數據後,試着用下面的命令創建圖像::

rrdtool graph myrouter-day.png --start -86400 /
DEF:inoctets=myrouter.rrd:input:AVERAGE /
DEF:outoctets=myrouter.rrd:output:AVERAGE /
AREA:inoctets#00FF00:"In traffic" /
LINE1:outoctets#0000FF:"Out traffic"

這會產生一個具有1天流量值的圖像。1天有24(小時)x60(分鐘)x60(秒)。我們從當前時間-86400秒開始。我們用DEF把輸入和輸出字節數定義成myrouter.rrd數據庫中的的平均值,並且繪製輸入流量區和輸出流量線。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章