




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、RRDtool 的定義個人認(rèn)為:.rrd是一個數(shù)據(jù)源,而rra是在此數(shù)據(jù)源借用CF將其CDP數(shù)據(jù)存儲的表.在其中的DS中定義的變量是用來收集數(shù)據(jù)源的一個接口. RRDtool 代表 “Round Robin Database tool” ,作者同時也是 MRTG 軟件的發(fā)明人。官方站點位于http:/oss.oetiker.ch/rrdtool/ 。 所謂的“Round Robin” 其實是一種存儲數(shù)據(jù)的
2、方式,使用固定大小的空間來存儲數(shù)據(jù),并有一個指針指向最新的數(shù)據(jù)的位置。我們可以把用于存儲數(shù)據(jù)的數(shù)據(jù)庫的空間看成一個圓,上面有很多刻度。這些刻度所在的位置就代表用于存儲數(shù)據(jù)的地方。所謂指針,可以認(rèn)為是從圓心指向這些刻度的一條直線。指針會隨著數(shù)據(jù)的讀寫自動移動。要注意的是,這個圓沒有起點和終點,所以指針可以一直移動,而不用擔(dān)心到達終點后就無法前進的問題。在一段時間后,當(dāng)所有的空間都存滿了數(shù)據(jù),就又從頭開始存放。這樣整個存儲空間的大小就是一個固定的數(shù)值。所以RRDtool 就是使用類似的方式來存放數(shù)據(jù)的工具, RRDtool 所使用的數(shù)據(jù)庫文件的后綴名是'.rrd。
3、60;RRDtool 的特殊之處A) 首先 RRDtool 存儲數(shù)據(jù),扮演了一個后臺工具的角色。但同時 RRDtool 又允許創(chuàng)建圖表,這使得RRDtool看起來又像是前端工具。其他的數(shù)據(jù)庫只能存儲數(shù)據(jù),不能創(chuàng)建圖表。 B) RDtool 的每個 rrd 文件的大小是固定的,而普通的數(shù)據(jù)庫文件的大小是隨著時間而增加的。C) 其他數(shù)據(jù)庫只是被動的接受數(shù)據(jù), RRDtool 可以對收到的數(shù)據(jù)進行計算,例如前后兩個數(shù)據(jù)的變化程度(rate of
4、60;change),并存儲該結(jié)果。 D) RRDtool 要求定時獲取數(shù)據(jù),其他數(shù)據(jù)庫則沒有該要求。如果在一個時間間隔內(nèi)(heartbeat)沒有收到值,則會用 UNKN 代替,其他數(shù)據(jù)庫則不會這樣。建立 RRD 數(shù)據(jù)庫建庫實際上就是建立后綴名為 .rrd 的 RRD 文件。一)語法格式rrdtool create filename -start|-b start time -step|-s step &
5、#160; DS:ds-name:DST:dst arguments (最后獲取的數(shù)據(jù)是PDP,更新數(shù)據(jù)時要考略DS順序(*把所有要更新的數(shù)據(jù),按照DS定義的順序用冒號格開*) RRA:CF:xff arguments(最后獲取的數(shù)據(jù)是CDP,繪圖時使用的是這些數(shù)據(jù).)其中 filename 、DS 部
6、分和 RRA 部分是必須的。其他兩個參數(shù)可免。二)參數(shù)解釋A)<filename> :默認(rèn)是以 .rrd 結(jié)尾,但也以隨你設(shè)定。B) -step :就是 RRDtool “期望” 每隔多長時間就收到一個值。和 MRTG 的 interval 同樣含義。默認(rèn)是5分鐘。我們的腳本也應(yīng)該是每5分鐘運行一次。C) -start :給出 RRDtool 的第一個記錄的起始時間。RRDtool 不會接受任何采樣時間小于或者等于指定時間的數(shù)據(jù)。也就是說 -start指定了數(shù)據(jù)庫最早的那個記錄是從什么時候開始的。如果 update 操作中給出的時間在 -start 之前,則 RRDtool拒絕接受
7、。-satrt 選項也是可選的。按照 我們在前一篇中的設(shè)定,則默認(rèn)是當(dāng)前時間減去 600*300秒,也就是50個小時前。 如果你想指定-start 為1天前,可以用CODE:-start $(date -d '1 days ago' +%s)注意,-start 選項的值必須是 timestamp 的格式。D) DS :DS 用于定義 Data Soure 。也就是用于存放結(jié)果的變量名。 DS是用來申明數(shù)據(jù)源的,也可以理解為申明數(shù)據(jù)變量,也就是你要檢測的端口對應(yīng)的變量名,這個參數(shù)在畫圖的時候還要使用的。E) DST :DST 就是D
8、S的類型。有 COUNTER、GUAGE、DERIVE、ABSOLUTE、COMPUTE 5種。由于網(wǎng)卡流量屬于計數(shù)器型,所以這里應(yīng)該為 COUNTER 。F) RRA :RRA 用于指定數(shù)據(jù)如何存放。我們可以把一個RRA 看成一個表,各保存不同 interval 的統(tǒng)計結(jié)果RRA的作用就是定義更新的數(shù)據(jù)是如何記錄的。比如我們每5分鐘產(chǎn)生一條刷新的數(shù)據(jù),那么一個小時就是12條。每天就是288條。這么龐大的數(shù)據(jù)量,一定不可能都存下來??隙ㄓ幸粋€合并(consolidate)數(shù)據(jù)的方式,那么這個就是RRA的作用了。G)PDP :Primary Data Point 。正常情況下每個 interva
9、l RRDtool 都會收到一個值;RRDtool 在收到腳本給來的值后會計算出另外一個值(例如平均值),這個 值就是 PDP ;這個值代表的一般是“xxx/秒”的含義。注意,該值不一定等于RRDtool 收到的那個值。除非是GAUGE ,可以看下面的例子就知道了 H) CF :CF 就是 Consolidation Function 的縮寫。也就是合并(統(tǒng)計)功能。有 AVERAGE、MAX、MIN、LAST 四種分別表示對多個PDP 進行取平均、取最大值、取最小值、取當(dāng)前值四種類型。具體作用等到 update 操作時
10、再說。I)CDP :Consolidation Data Point 。RRDtool 使用多個 PDP 合并為(計算出)一個 CDP。也就是執(zhí)行上面 的CF 操作后的結(jié)果。這個值就是存入 RRA的數(shù)據(jù),繪圖時使用的也是這些數(shù)據(jù)。三)再說 DST (DST的選擇很重要,它是決定數(shù)據(jù)是如何保存的!借助下面的實例來看!) DST 的選擇是十分重要的,如果選錯了 DST ,即使你的腳本取的數(shù)據(jù)是對的,放入 RRDtool 后也是錯誤的,更不用提畫出來的圖是否有意義了。 如何選擇 DST 看下面的描述 :
11、160;A)COUNTER :必須是遞增的,除非是計數(shù)器溢出。在這種情況下,RRDtool 會自動修改收到的值。例如網(wǎng)絡(luò)接口流量、收到的packets 數(shù)量都屬于這一類型。 B)DERIVE:和 COUNTER 類似。但可以是遞增,也可以遞減,或者一會增加一會兒減少。 C)ABSOLUTE :ABSOLUTE 比較特殊,它每次都假定前一個interval的值是0,再計算平均值。 D)GAUGE :GAGUE 和上面三種不同,它沒有“平均”的概念,RRDtool 收到值之后字節(jié)存入 RRA 中&
12、#160; E)COMPUTE :COMPUTE 比較特殊,它并不接受輸入,它的定義是一個表達式,能夠引用其他DS并自動計算出某個值。例如CODE:Copy to clipboardDS:eth0_bytes:COUNTER:600:0:U DS:eth0_bits:COMPUTE:eth0_bytes,8,* 則 eth0_bytes 每得到一個值,eth0_bits 會自動計算出它的值:將 eth0_bytes 的值乘以 8 。不過 COMPUTE 型的 DS 有個限制,只能應(yīng)用它所在的 RRD 的 DS ,不能引用其他 RRD 的 DS。 COMPUTE 型 DS
13、是新版本的 RRDtool 才有的,你也可以用 CDEF 來實現(xiàn)該功能。如:CDEF:eth0_bits=eth0_bytes,8,*四)DST 實例說明這樣說可能還是比較模糊,可以看下面的例子,體會一下什么是 DST 和 PDP :QUOTE:Values = 300, 600, 900, 1200 # 假設(shè) RRDtool 收到4個值,分別是300,600,900,1200Step = 300 seconds
14、; # step 為 300COUNTER = 1,1, 1,1 # (300-0)/300,(600-300)/300,(900-600)/300,(1200-900)/300 ,所以結(jié)果為 1,1,1,1DERIVE = 1,1,1,1
15、 # 同上ABSOLUTE = 1,2,3,4 # (300-0)/300,(600-0)/300 , (900-0)/300, (1200-0)/300,所以結(jié)果為 1,2,3,4GAUGE = 300,600,900,1200
16、160; # 300 , 600 ,900 ,1200 不做運算,直接存入數(shù)據(jù)庫所以第一行的 values 并不是 PDP ,后面4行才是 PDP 五)開始建庫CODE:Copy to clipboardrootdns1 root# rrdtool create eth0.rrd > -step 300 > DS:eth0_in:COUNTER:600:0:12500000 # 600 是 heartbeat;0 是最小值;12500000 表示最大值; > DS:eth0_out:COUNER:6
17、00:0:12500000 # 如果沒有最小值/最大值,可以用 U 代替,例如 U:U> RRA:AVERAGE:0.5:1:600 # 1 表示對1個 PDP 取平均。實際上就等于 PDP 的值> RRA:AVERAGE:0.5:4:600 # 4 表示每4個 PDP 合成為一個 CDP,也就是20分鐘。方法是對4個PDP取平均, > RRA:AVERAGE:0.5:24:600 #
18、同上,但改為24個,也就是24*5=120分鐘=2小時。> RRA:AVERAGE:0.5:288:730 # 同上,但改為288個,也就是 288*5=1440分鐘=1天rootdns1 root# CODE:Copy to clipboardrootdns1 bob# ll -h eth0.rrd-rw-r-r- 1 root root 41K 1
19、1月 19 23:16 eth0.rrdrootdns1 bob#有的人可能會問,上面有兩個 DS,那 RRA 中究竟存的是那個 DS 的數(shù)據(jù)呢?實際上,這些 RRA 是共用的,你只需建立一個 RRA,它就可以用于全部的 DS 。所以在定義 RRA 時不需要指定是給那個 DS 用的。六)什么是 CF 以第2個RRA 和 4,2,1,3 這4個 PDP 為例AVERAGE :則結(jié)果為 (4+2+1+3)/4=2.5MAX :結(jié)果為4個數(shù)中的最大值 4MIN :結(jié)果為4個數(shù)中的最小值1LAST :結(jié)果為4個數(shù)中的最后一個 3同理,第三個RRA和第4個RRA則是每24個 PDP、每288個 PDP
20、合成為1個 CDP七)解釋度(Resolution)(這個告訴我們應(yīng)該取那個RRA的數(shù)據(jù)了(定義了那么多RRA,有用處了吧!嘎嗄)這里要提到一個 Resolution 的概念,在官方文檔中多處提到 resolution 一詞。Resolution 究竟是什么?Resolutino 有什么用?舉個例子,如果我們要繪制1小時的數(shù)據(jù),也就是60分鐘,那么我們可以從第一個RRA 中取出12個 CDP 來繪圖;也可以從第2個 RRA中取出3個 CDP 來繪圖。到底 RRDtool 會使用那個呢?讓我們看一下 RRA 的定義 :RRA:AVERAGE:0.5:4:600 。Resolution 就等于 4
21、 * step = 4 * 300 = 1200 ,也就是說 ,resolution 是每個CDP 所代表的時間范圍,或者說 RRA 中每個 CDP(記錄)之間的時間間隔。所以第一個 RRA 的 resolution 是 1* step=300,第2是 1200,第三個是 24*300=7200,第4個 RRA 是 86400 。默認(rèn)情況下,RRDtool 會自動挑選合適的 resolution 的那個 RRA 的數(shù)據(jù)來繪圖。我們大可不必關(guān)心它。但如果自己想取特定 RRA 的數(shù)據(jù),就需要用到它了。關(guān)于 Resolution 我們還會在 fetch 和 graph 中提到它。八)xff 字段細心
22、的朋友可能會發(fā)現(xiàn),在 RRA 的定義中有一個數(shù)值,固定是 0.5 ,這個到底是什么東東呢?這個稱為 xff 字段,是 xfile factor 的縮寫。讓我們來看它的定義 :QUOTE:The xfiles factor defines what part of a consolidation interval may be made up from *UNKNOWN* data whilethe consolidated value is still regarded as known. It is given as the ratio of allowed *UNKNOWN* PDPs t
23、o the number of PDPs in the interval. Thus, it ranges from 0 to 1 (exclusive)這個看起來有點頭暈,我們舉個簡單的例子 :例如CODE:Copy to clipboardRRA:AVERAGE:0.5:24:600 這個 RRA 中,每24個 PDP (共兩小時)就合成為一個 CDP,如果這 24 個 PDP 中有部分值是 UNKNOWN (原因可以很多),例如1個,那么這個 CDP合成的結(jié)果是否就為 UNKNOWN 呢?不是的,這要看 xff 字段而定。Xff 字段實際就是一個比例值。0.5 表示一個 CDP 中的所有
24、 PDP 如果超過一半的值為 UNKNOWN ,則該 CDP 的值就被標(biāo)為UNKNOWN。也就是說,如果24個 PDP中有12個或者超過12個 PDP 的值是 UNKNOWN ,則該 CPD 就無法合成,或者合成的結(jié)果為 UNKNOWN;如果是11個 PDP 的值為 UNKNOWN ,則該 CDP 的值等于剩下 13 個 PDP 的平均值。如果一個 CDP 是有2個 PDP 組成,xff 為 0.5 ,那么只要有一個 PDP 為 UNKNOWN ,則該 PDP 所對應(yīng)的 CDP 的值就是 UNKNOWN 了 使用RRDtool 進行繪圖一)前言使用R
25、RDtool 我們最關(guān)心什么?當(dāng)然是把數(shù)據(jù)畫出來了。雖然前面談了很多,但這些都是基礎(chǔ)來的。掌握好了,可以讓你在繪圖時更加得心應(yīng)手。本來還有 RPN (反向波蘭表達式)一節(jié)的,但考慮一下,覺得還是放到后面,先從基本的繪圖講起。這一節(jié)的內(nèi)容雖然很多,但基本都是實驗性的內(nèi)容,只要多試幾次就可以了。二、graph 語法CODE:Copy to clipboardrrdtool graph filename option . data definition . data calculation .
26、 variable definition . graph element . print element .其中的 data definiton、variable definition 、data calculation、分別是下面的格式CODE:Copy to clipboardDEF:<vname>=<rrdfile>:<ds-name>:<CF>:step=<step>:start=<time>:end=<time>:reduce=<CF&g
27、t;VDEF:vname=RPN expressionCDEF:vname=RPN expression其中 filename 就是你想要生成的圖片文件的名稱,默認(rèn)是 png 。你可以通過選項修改圖片的類型,可以有 PNG、SVG、EPS、PDF四種。A)DEF 是 Definition (定義)的意思。定義什么呢?你要繪圖,總要有數(shù)據(jù)源吧?DEF 就是告訴 RRDtool 從那個 RRD 中取出指定(PS:很重要)為什么還有一個 CF 字段?因為 RRA 有多種 CF 類型,有些 RRA 可能用來保存平均值、有些 RRA 可能用于統(tǒng)計最大值、最小值等等。所以你必須同時指
28、定使用什么 CF 類型的 RRA的數(shù)據(jù)。至于 :start 和 :end 、:reduce 則用得比較少,最常用的就是 :step 了,它可以讓你控制 RRDtool 從那個 RRA 中取數(shù)據(jù)。B)VDEF 是 Variable Definition (變量定義)的意思。定義什么呢?記得 MRTG 在圖表的下面有一個稱之為 Legend 的部分嗎?那里顯示了1個或者2個 DS (MRTG 沒有 DS 一說,這里是借用 RRDtool 的)的 “最大值”、“平均值”、“當(dāng)前值”。 RRDtool 中用 VDEF
29、來定義。這個變量專門存放某個 DS 某種類型的值,例如 eth0_in 的最大值、eht0_out 的當(dāng)前值等。當(dāng)你需要象MRTG 一樣輸出數(shù)字報表(Legend) 時,就可以在 GPRINT 子句(sub clause)中調(diào)用它。同樣它也需要用一個變量來存放數(shù)值。要注意的是,舊版 的 RRDtool 中是用另外一種格式來達到相同的目的。新版的 RRDtool 則推薦使用VDEF語句。但在使用過程中,卻發(fā)現(xiàn) VDEF 的使用反而造成了困擾。 例如你有5個 DS 要畫,每個 DS 你都想輸出最大值、最小值、平均值 、當(dāng)前值。 如果使用 VDE
30、F ,則需要 4 * 5 = 20 個 VDEF 語句,這會造成極大的困擾。具體例子可以看第十一節(jié)“數(shù)字報表”部分。 C)CDEF 是 Calculation Define 的意思。使用過MRTG 的都會體會到一點,MRTG 的計算能力實在太差了。例如你有兩個 Target ,一個是 eth0_in , 一個是 eth0_out,如果要把它們相加起來,再除以8,得出 bytes 為單位的值,如何計算呢?或者說你只想看 eth0_in 中超過 10Mb/s 的那部分, 其余的不關(guān)心,又如何實現(xiàn)呢?因為 MRTG 不能對它從 log 取出來的數(shù)據(jù)進行修改,只能原原
31、本本的表現(xiàn),所以很難滿足我們的要求。而使用 CDEF , 這一切都可以很容易的實現(xiàn)。CDEF 支持很多數(shù)學(xué)運算,甚至還支持簡單的邏輯運算 if-then-else ,可以解決前面提到的第2個問題:如何只繪制你所關(guān) 心的數(shù)據(jù)。不過這一切都需要熟悉 RPN 的語法.所以我們放到下一節(jié)介紹,這一節(jié)就介紹把 RRDtool 中的數(shù)據(jù)以圖表的方式顯示出來。 三)選項分類本部分我們按照官方文檔的方式,把選項分成幾大類,分為 :A)Time range : 用于控制圖表的X軸顯示的起始
32、/結(jié)束時間,也包括從RRA中提取指定時間的數(shù)據(jù)。B)Labels :用于控制 X/Y 軸的說明文字。C)Size :用于控制圖片的大小。D)Limits :用于控制 Y 軸的上下限。E)Grid :用于控制 X/Y 軸的刻度如何顯示。F)Miscellaneous :其他選項。例如顯示中文、水印效果等等。G)Report :數(shù)字報表需要說明的是,本篇當(dāng)中并不是列出了所有選項的用法,只是列出較為常用的選項,如果想查看所有選項的的用法,可以到官方站點下載文檔。四)時間范圍控制(Time Range)CODE:Copy to clipboard-s|-start time -e|-end time
33、-S|-step seconds既然要繪圖,就應(yīng)該有一個起始/結(jié)束的時間。Graph 操作中有 s ,-e 選項。這兩個選項即可以用于控制圖表的 X 軸顯示的時間范圍,也可以用于控制 RRDtool 從 RRA 中提取對應(yīng)時間的數(shù)據(jù)。如果沒有指定 -end ,默認(rèn)為 now;如果沒有指定 -start,則默認(rèn)為1天前。如果兩者都沒有指定,則圖表默認(rèn)顯示從當(dāng)前算起1天內(nèi)的?;仡^看一下 DEF 中,也有 :start ,:end , :step ,這些和 -start、-end、-step 之間有什么關(guān)系呢?讓我們先看 :step 和 step之間的關(guān)系是如何的。下面以 eth0.rrd 為例,假
34、設(shè)要繪制的時間范圍 range 等于 end -startA)如果 0 < ragne < 180000 (第一個 RRA 的時間覆蓋范圍) ,則默認(rèn)從第1個RRA中取數(shù)據(jù) : 如果 DEF 中給出的 :step > 300 ,例如 1000 ,則從 resolution= 1000 的或者第一個高于 1000 的RRA 中挑選數(shù)據(jù),由于 eth0.rrd 中沒有
35、 resolution = 1000 的 RRA,則 RRDtool 會從 resolution = 1200 的第2 RRA 中取數(shù)據(jù)。 如果 DEF 中給出的 :step <= 300 ,例如 2
36、00 ,則 RRDtool 會忽略該設(shè)定,還是從第一個 RRA 中取數(shù)據(jù)。B)如果 180000 < range < 720000 ,由于第一個RRA只能保存2天的數(shù)據(jù),所以默認(rèn)從第2個RRA中取數(shù)據(jù) : 如果 DEF 中給出的 :step > 1200 ,例如 1800,則 RRDtool 會從 resolution = 7200 的第3 RRA 中取數(shù)據(jù) 如果 DEF 中給出 :step<= 1200,例如 300 ,則 RRDtool 會忽略,還是
37、從第2個 RRA 中取數(shù)據(jù)C)如果 720000 < range < 4320000 ,則默認(rèn)從第三個 RRA 中取數(shù)據(jù) : 如果 DEF 中給出的 :step > 7200 ,例如 10000 ,則從第4個 RRA中取數(shù)據(jù) 如果 DEF 中給出的 :step <= 7200 , 例如 1200 ,則忽略該值,并還是從第3 個 RRA 中取數(shù)據(jù)D)如果 4320000 < range < 63072000 ,則默認(rèn)從第4個 RRA 中取數(shù)據(jù)
38、: 如果 DEF 中給出的 :step > 86400 ,則行為未知 如果 DEF 中給出的 :step <=86400 ,則從第4個 RRA 中取數(shù)據(jù)E)-S 選項可以直接控制 RRDtool 挑選 RRA 。 例如 -S 1200 ,即使DEF 中不加 :setp ,則 RRDtool 會從第2個 RRA 中取數(shù)據(jù),即使 rang < 180000 如果 -S 和 :step 同時出現(xiàn),則 :step 優(yōu)先。F)DEF 中的
39、 :start 和 :end 可以覆蓋 -start 和 -end 的值。 默認(rèn)情況下,如果 DEF 中不加 :start 和 :end ,則等于 -start 和 end 如果 DEF 中定義了 :start 和 :end ,則以 :start 和 :end 為準(zhǔn)。實例1 :使用 -start 指定 X 軸的起始時間CODE:Copy to clipboardrootdns1 bob# rrdtool graph 1.png > -start now-120
40、000 # 表示起始時間是當(dāng)前時間往前 120000 秒,也就是 33 個小時左右> DEF:value1=eth0.rrd:eth0_in:AVERAGE # 從eth0.rrd 中取出 eth0_in 的數(shù)據(jù),CF 類型為 AVERAGE> AREA:value1#ff0000 # 用“方塊”的形式來繪制 value1 ,注意這里是用 value1 ,不是用 eth0_in481x154
41、60; # 如果 RRDtool 有繪圖方面的語句,則這里顯示圖片大小,否則為 0x0。rootdns1 bob#可以看到 X 軸的文字有些是亂碼,不過不要緊,你可以臨時已用 env LANG=C rrdtool xxxx 來解決該問題,或者在后面用n 來設(shè)定 RRDtool 使用中文字體,就不會出現(xiàn)這樣的情況了實例2 :使用 :step 從第2個RRA中取數(shù)據(jù)CODE:Copy to clipboardrootdns1 bob# rrdto
42、ol graph 2.png > -start now-120000 > DEF:value1=eth0.rrd:eth0_in:AVERAGE:step=1000 # :step 指定 resolution=1000 > AREA:value1#ff0000481x154rootdns1 bob# 這里是 :step=1000,但 RRDtool 會取 :step=1200 的 第2個 RRA 的數(shù)據(jù)來繪圖,可以和上面的 1.png 比較,發(fā)現(xiàn)比較平滑。實例3 :使用 S 從第2個RRA中取數(shù)據(jù)CODE:Copy to
43、 clipboardrootdns1 bob# rrdtool graph 4.png > -S 1200 # 使用 S 控制 RRDtool 從 resolution=1200 的 RRA 中取數(shù)據(jù)> -start now-120000 > DEF:value1=eth0.rrd:eth0_in:AVERAGE > AREA:value1#ff0000 481x154rootdns1
44、bob# 可以看到和上面的圖一樣,說明 RRDtool 的確按照 -S 的設(shè)置從第2個RRA 中取數(shù)據(jù)了使用 S 可以對 DEF 中所有的 DS 都使用相同的 resolution,等于在每個 DEF后都加上 :step=<value> ,value 是 S 的值實例4 :同時使用 S 和 :step CODE:Copy to clipboardrootdns1 bob# rrdtool graph 5.png > -S 1200
45、60; # -S 指定 resolution=1200> -start now-120000 > DEF:value1=eth0.rrd:eth0_in:AVERAGE:step=300 # :step 指定 resolution=300> AREA:value1#ff0000 481x154rootdns1 bob# 可以看到 5.png 和 1.png 是一樣的,也就
46、是說 S 1200 并沒有起作用,而是 :step=300 起作用了實例5 :使用 :start 和 :end 只顯示指定時間內(nèi)的數(shù)據(jù)CODE:Copy to clipboardrootdns1 bob# rrdtool graph 1.png > -start now-1h # X 軸顯示1個小時的長度> DEF:value1=eth0.rrd:eth0_in:AVERAGE:start=now-600:end=n
47、ow-300 # 但只取10分鐘前到5分鐘前的這部分> AREA:value1#00ff00:in 475x168rootdns1 bob#如果我們不加 :start 和 :end ,則效果如下 :我們甚至可以讓兩個對象顯示不同的時間,例如 實例6 :讓兩個對象顯示不同時間段的數(shù)據(jù)CODE:Copy to clipboardrootdns1 bob# rrdtool graph 1.png > -start now-2h
48、 # 規(guī)定時間為2小時內(nèi)> DEF:value1=eth0.rrd:eth0_in:AVERAGE:end=now:start=end-1h # 規(guī)定時間為1小時內(nèi) > DEF:value2=eth0.rrd:eth0_out:AVERAGE # 沒有指定 :start 和 :end,默認(rèn)和 -start 一樣也是2小時> AREA
49、:value1#00ff00:in > LINE2:value2#ff0000:out:STACK 475x168rootdns1 bob#實例7 :把一段時間分為幾段分別顯示 :CODE:Copy to clipboardrootdns1 bob# rrdtool graph 1.png > DEF:value1=eth0.rrd:eth0_in:AVERAGE:end=now:start=end-1h # 當(dāng)前1小時內(nèi)> DEF:value2=eth0.rrd:eth0_in:AVERAGE:end=now-1h:s
50、tart=now-2h # 2小時前> DEF:value3=eth0.rrd:eth0_in:AVERAGE:end=now-2h:start=now-3h # 3小時前> LINE1:value1#00ff00:"1 hours ago" > LINE2:value2#ff0000:"2 hours ago" > LINE3:value3#000000:"3 hours ago"
51、60;475x168rootdns1 bob我們把3個小時內(nèi)的數(shù)據(jù)用三種不同粗細、不同顏色的曲線畫了出來。out部分(紅色)顯示了2個小時內(nèi)的流量,而in部分(綠色)則只顯示了1個小時內(nèi)的部分。在這里要提一點,雖然我們指定了 -start 或者 -end ,或者 :start , :end,但并不意味著曲線就一定會從指定的時間點開始和結(jié)束。例如我們上面指定了 :start=now-600:end=now-300 ,也就是只顯示5分鐘的數(shù)據(jù)。但圖表出來的效果卻是10(10:05-10:15)分鐘的數(shù)據(jù),這是因為我們挑選的時間當(dāng)中“不慎”橫垮了兩個周期 (10:05-10:10,10:10-10:
52、15),所以 RRDtool 會把它們?nèi)慨嫵鰜?,而不是只畫其中?分鐘。 五)說明文字(Label)CODE:Copy to clipboard-t|-title string -v|-vertical-label string-t 是用于圖表上方的標(biāo)題,-v 是用于 Y 軸的說明文字實例1 :給圖表增加標(biāo)題CODE:Copy to clipboardrootdns1 bob# rrdtool graph 1.png > -start now-183600 # 從當(dāng)前開始往前
53、51個小時> -t "51 hours ago" -v "Traffic" # 標(biāo)題是 “51 hours ago”,Y 軸的說明文字是 “Traffic”> DEF:value1=eth0.rrd:eth0_in:AVERAGE > DEF:value2=eth0.rrd:eth0_out:AVERAGE > LINE1:value1#0000ff:in # 注釋 :以1個像素寬的曲線畫出 value1,顏色是藍色,圖
54、例的說明文字是“in”> LINE2:value2#ff0000:out # 注釋 :以2個像素寬的曲線畫出 value2,顏色是紅色,圖例的說明文字是 “out”497x179rootdns1 bob#現(xiàn)在我們用的是 LINE 的方式來繪圖。LINE 可以有3種,分別是 LINE1|2|3,也就是線條的粗細。還有一種是 STACK 方式下面再介紹??梢钥吹搅魅氲牧髁勘攘鞒龅牧髁可源?,這樣看的話,out 流量比較難看,是否可以有別的方式呢?RRDtool 還提供了另外一種格式,就是 STACK 。意思就是在前一個對象的基礎(chǔ)(把前一個對
55、象的值當(dāng)成 X 軸)上繪圖,而不是從 X 軸開始。實例2 :使用 STACK 方式繪圖CODE:Copy to clipboardrootdns1 bob# rrdtool graph 3.png > -start now-120000 > -t "33 hours ago" > -v "Traffic" > DEF:value1=eth0.rrd:eth0_in:AVERAGE > DEF:value2=eth0.rrd:eth0_out:AVERAGE > AREA:value1#00ff00:in > LI
56、NE:value2#ff0000:out:STACK # 注意最后的 “STACK” ,表示在 value1 的基礎(chǔ)上繪圖497x179rootdns1 bob#這是沒有采用 STACK 方式繪圖的效果 :可以看得出上面采用 STACK 方式的比較清晰,但要注意,采用 STACK 方式后,在讀取 out 流量時,Y 軸的刻度不再是 out 的值,應(yīng)該用刻度值減去 in 的值,才是 out 真正的值。這點比較麻煩。需要配合 GPRINT 語句才能達到一定的效果。六)圖表大小(Size)C
57、ODE:Copy to clipboard-w|-width pixels -h|-height pixels這里說圖表大小而不是圖片大小,是因為 w ,-h 控制的是 X/Y 軸共同圍起來的那部分大小,而不是整個圖片的大小,這點在前面就可以看出了。默認(rèn)的圖表大小是 400 (長)x 100 (高),但一般會返回497x179 這樣的數(shù)字,這個才是圖片的大小。RRDtool 比 MRTG 好的一個地方就是 MRTG 一放大圖片,就會變得模糊。RRDtool 則不會。在官方文檔中,-w 似乎是一個比較敏感的參數(shù),我們看下面的描述 :QUOTE:First it makes sure that t
58、he RRA covers as much of the graphing time frame as possible. Second it looks at the resolution of theRRA compared to the resolution of the graph. It tries to find one which has the same or higher better resolution. With the -r'' option you can force RRDtool to assume a different resolution
59、than the one calculated from the pixel width of the graph.實例1 :使用 w 設(shè)定圖表大小為 300 像素CODE:Copy to clipboardrootdns1 bob# rrdtool graph 3.png > -w 300 # 設(shè)定 size 為 300 pixel> -start now-1
60、20000 > DEF:value1=eth0.rrd:eth0_in:AVERAGE > AREA:value1#ff0000 381x154rootdns1 bob#可以看到圖表是不是變小了呢?而且整個圖片的大小也變小了。如果用前面的話來推理,由于 120000/300(-w的值)= 400 > 300 (step),由于沒有 resolution=400 的 RRA,所以應(yīng)該采用 resolution=7200 的第2個 RRA 的數(shù)據(jù)來繪圖,但實際上不是。上面這個才是
61、300 pixel 寬,resolution=7200 的效果所以w 和 h 并不能影響 RRDtool 選擇 RRA ,只能起到縮小放大的作用。BTW:當(dāng)你繪制的時間范圍較大時,可以使用 w 增大圖表大小七) Y 軸上下限(Limits)CODE:Copy to clipboard-u|-upper-limit value -l|-lower-limit value -r|-rigid默認(rèn)情況下,RRDtool 會和 MRTG 一樣自動調(diào)整 Y 軸的數(shù)字,來配合當(dāng)前的數(shù)值大小。如果想禁止該特性,可以通過 upper-limit-lower-limit 來做限制,表示Y軸顯示的值從多少到多少。
62、如果沒有指定 rigid ,則在圖表的上下邊界處還是會有一些延伸,但如果指定了 -rigid ,則嚴(yán)格按照 -upper-limit 和 -lower-limit 繪制。在使用 lower-limit 時要注意,如果數(shù)據(jù)中有負(fù)數(shù),如果 -lower-limit 為 0,則負(fù)數(shù)部分是顯示不出來的。實例1 :使用 -upper-limit 和 -lower-limit 限制 Y 軸的上下限CODE:Copy to clipboardrootdns1 bob# rrdtool graph 1.png > -start now-120000 > -v "Traffic&
63、quot; -t "33 Hours ago" > -lower-limit -5000 # 限制Y軸下限為 -5000 > -upper-limit 10000 # 上限為 10000> -rigid # 嚴(yán)格按照上面的規(guī)定來畫> DEF:value1=eth0.rrd:eth0_in:AVERAGE > DEF:val
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國半乳濁無光釉數(shù)據(jù)監(jiān)測研究報告
- 2025年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識考前沖刺試卷B卷含答案
- 2023-2024學(xué)年廣東省廣州市天河區(qū)天省實驗學(xué)校七年級(下)月考數(shù)學(xué)試卷(含答案)
- 2021-2022學(xué)年廣東省廣州市越秀區(qū)培正中學(xué)七年級(下)期中數(shù)學(xué)試卷(含答案)
- 2025年大學(xué)英語六級考試模擬試卷一
- 院感消毒知識培訓(xùn)課件
- 個人委托信息咨詢服務(wù)合同
- 物理實驗課教案:《力學(xué)實驗操作技巧》
- 湖北省部分名校2024-2025學(xué)年高三上學(xué)期1月期末地理試題 含解析
- 吉林省長春市榆樹市2024-2025學(xué)年八年級上學(xué)期期末生物學(xué)試題(含答案)
- 高速公路建設(shè)承攬合同
- 20以內(nèi)破十法練習(xí)題-A4打印版
- 物業(yè)公司人員培訓(xùn)及考核方案
- 數(shù)據(jù)中心容災(zāi)備份解決方案
- 七年級下冊第三單元名著導(dǎo)讀《駱駝祥子》公開課一等獎創(chuàng)新教學(xué)設(shè)計(公開課公開課一等獎創(chuàng)新教案及作業(yè)設(shè)計)
- 幾何圖形中求線段線段和面積等最值問題 中考數(shù)學(xué)
- 真太陽時調(diào)整
- 景區(qū)開發(fā)合作協(xié)議書范本
- 藥材的采收與產(chǎn)地加工
- 森林資源經(jīng)營管理課件
- 一級醫(yī)院建設(shè)可行性研究報告
評論
0/150
提交評論