你們還為看不懂rrd中那些生澀的timestamp格式的時(shí)間和科學(xué)計(jì)數(shù)法的數(shù)值而郁悶么??嘿嘿,這個(gè)時(shí)代終于快終結(jié)了...為啥,因?yàn)榘硠偢懔藗€(gè)rrd_fetch.pl腳本了... 閑話少說,還是看看腳本能做甚吧! 1.用法和路徑: /root/longwei/project/rrdtest/rrd_fetch.pl -f localhost_load_1min_5.rrd -R AVERAGE -r 6400 參數(shù)解釋: -f 文件名.當(dāng)然了,內(nèi)網(wǎng)我指定在/data/rra_internal目錄下了,不需要指定路徑 -R RRA的名稱,必須在rrd文件中存在的RRA -r resolution,也就是rra的解釋度. 這個(gè)跟你的step和rra[0].pdp_per_row = 1 這個(gè)參數(shù)有關(guān),如果你指定的resolution不屬于rra文件中定義的任意一個(gè)resolution,比如你指定-r 1234 ,則rrdtool將選擇一個(gè)滿足時(shí)間跨度
的最小resolution來畫圖!! 其實(shí)還有2個(gè)參數(shù)我沒有指定,就是 -s starttime,開始時(shí)間,格式為timestamp格式 -e endtime,結(jié)束時(shí)間,格式同樣為timestamp格式 不指定,默認(rèn)為1day ago---now-10s的時(shí)間跨度 好了,介紹了用法,現(xiàn)在俺截圖來show一下我的這個(gè)rrd_fetch腳本和官方的rrdtool fetch腳本有啥不一樣吧... 1.官方rrdtool fetch使用如下命令后的結(jié)果: 從上面的圖可以看出,官方的rrdtool fetch腳本可以顯示出時(shí)間和具體的數(shù)值,但是時(shí)間為timestamp格式,數(shù)值為科學(xué)計(jì)數(shù)法顯示的,比較難懂.. 2.我寫的rrd_fetch.pl腳本運(yùn)行結(jié)果如下: 嘿嘿,大家看到了吧,將前面的timestamp格式的時(shí)間轉(zhuǎn)化成了比較通俗易懂的時(shí)間,后面的科學(xué)計(jì)數(shù)法表示的數(shù)值轉(zhuǎn)化成了普通格式的數(shù)值,這樣就比較方便啦~~~ (PS:最后的NAN讓我郁悶了N久...我將nan作為數(shù)值來做運(yùn)算了,變成了一個(gè)超大的數(shù)值!!!!導(dǎo)致結(jié)果數(shù)值上跟rrdtool fetch的結(jié)果不一樣,讓偶排查了N久!!!!)
其實(shí)這個(gè)腳本也是為了實(shí)現(xiàn)咱新監(jiān)控系統(tǒng)中的一個(gè)功能而做的,但是對(duì)于我們現(xiàn)在也是有一點(diǎn)用處滴...尤其對(duì)于大家在排查rrd出圖的問題時(shí)尤其有用...可以非常方便的知道rrd文件中各個(gè)不同resolution下的數(shù)值為多少!! 在這里,我寫一下我個(gè)人對(duì)rrdtool里面resolution的理解! rrd里面的resolution決定著rrd里面如何取值,同樣也就影響這rrd的數(shù)值了,所以說如何選擇rrd的resolution對(duì)于數(shù)據(jù)的準(zhǔn)確性來說非常重要.但是我們?nèi)绾沃纑rd在畫圖或者fetch的時(shí)候選擇的那個(gè)resolution呢??又或者說 當(dāng)我們指定了resolution后,rrd就會(huì)按照我們指定的resolution去畫圖么??? 答案是否定的!! rrd在畫圖的時(shí)候,選擇那個(gè)resolution來畫圖,必須依據(jù)以下幾個(gè)原則: 1.resolution的選擇,如果未指定resolution,則選擇符合條件的最小resolution. 2.當(dāng)你指定了resolution以后,如果指定的時(shí)間跨度滿足,則會(huì)使用你指定的resolution來畫圖,如果時(shí)間跨度不滿足條件,則會(huì)在滿足時(shí)間跨度的resolution中選擇較小的來畫圖. 以上說的太抽象,舉例說明: 有一個(gè)rrd文件,內(nèi)容如下: filename:test.rrd step:300 ds1=in_bound ds2=out_bound #RRA1 每5分鐘存一個(gè)紀(jì)錄,共存48筆,也就是距當(dāng)前4個(gè)小時(shí)內(nèi)的數(shù)據(jù) rra1 CF=AVERAGE rra1 ROWS=48 rra1 pdp_per_row = 1 #每30分鐘存一筆,共存336筆,也就是距當(dāng)前時(shí)間一周內(nèi)的數(shù)據(jù) rra2 CF=AVERAGE rra2 ROWS=336 rra2 pdp_per_row = 6 #每1天存一筆,共存365筆,也就是距當(dāng)前一年內(nèi)的數(shù)據(jù) rra3 CF=AVERAGE rra3 ROW=365 rra3 pdp_per_row = 288 第一筆紀(jì)錄開始時(shí)間: 2008年10月1號(hào) 好了,有了以上的示例,那我們要畫以下的幾個(gè)圖,看看rrdtool會(huì)使用哪個(gè)resolution來畫圖吧... Q1 如果我要畫距離當(dāng)前時(shí)間2小時(shí)的圖,2天的圖,2個(gè)月的圖,分別用哪個(gè)RRA(未指定resolution的情況)?? A1. 畫2小時(shí)的圖用RRA1,resolution為300s,畫2天的圖用RRA2,resolution為300*6=1800s,畫2月的圖用RRA3,resolution=300*288 這個(gè)很好解釋.滿足條件的最小resolution來畫圖 Q2.如果我要畫從距離當(dāng)前時(shí)間9天前到距離當(dāng)前時(shí)間7天前共3天時(shí)間的圖,rrdtool會(huì)使用哪個(gè)RRA來畫呢?? A2. 使用RRA3來畫圖. why??不是rra2也滿足時(shí)間跨度的么??rra都存放了1week的圖了,而且rra2的粒度比RRA3要細(xì)為啥要用RRA3呢?? 因?yàn)閞ra2里面最早的數(shù)據(jù)是距當(dāng)前時(shí)間前1周的數(shù)據(jù),也就是說,RRA2里面,最早的紀(jì)錄應(yīng)該是距離當(dāng)前時(shí)間7天前的數(shù)據(jù),雖然跨度滿足要求,粒度也較小,但是時(shí)間不滿足,因?yàn)闆]有9天前的數(shù)據(jù)..所以必須使用RRA3
|