前段時間寫多主機性能指標監(jiān)控工具res-monitor時有提到它,這里就專門對它做個介紹吧。
站在用戶的角度思考問題,與客戶深入溝通,找到華陰網(wǎng)站設(shè)計與華陰網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務覆蓋華陰地區(qū)。
像res-monitor這類工具,既要實時獲取數(shù)據(jù),又要實時圖形化展示數(shù)據(jù),常規(guī)的是把采集的數(shù)據(jù)存放到數(shù)據(jù)庫,然后再讀數(shù)據(jù)庫數(shù)據(jù)畫圖展示,然而,當我遇到rrdtool的時候,眼前一亮,很特別,它一方面可以把數(shù)據(jù)存儲起來,扮演數(shù)據(jù)庫的角色;另一方面又能根據(jù)存儲的數(shù)據(jù)繪圖,而且圖形表達能力很強,如線狀圖、餅狀圖、柱狀圖、區(qū)域面積圖等;支持高性能的數(shù)據(jù)存儲、繪圖,很方便集成在各種腳本中。從github的修改記錄來看,它從2012年發(fā)布至今,一直在維護和更新著,可見其生命力。
Rrdtool很強大,完成數(shù)據(jù)存儲和實時展示繪圖等工作,只需要掌握3個命令,但這三個命令的參數(shù)相當多,使用起來有點復雜,另外,需要注意的是,它主要應用在linux平臺,在windows上只能用Cygwin打包版本的,而且有些,需要繞過去。
本文不打算詳細介紹rrdtool的原理,因為這塊可以看官方文檔,主要是說明如何使用它,并給出一些應用參考。
Rrdtool網(wǎng)址: https://oss.oetiker.ch/rrdtool/index.en.html
Rrdtool是環(huán)形數(shù)據(jù)庫工具,存儲和讀取的是環(huán)形數(shù)據(jù)庫,表現(xiàn)是后綴為.rrd的二進制文件。要大概理解啥是環(huán)形數(shù)據(jù)庫,我對它的理解就是把它想象成圓形的時鐘,隨著時間推移,不斷往里寫數(shù)據(jù),同時有個標記指向當前數(shù)據(jù)記錄的最新位置,就像時鐘上的指針指示當前時間一樣。又因為它是圓形的,無始無終,可以一直往里寫數(shù)據(jù),只是歷史數(shù)據(jù)會被覆蓋掉,所以,有時它又被叫做時序結(jié)構(gòu)數(shù)據(jù)庫。
以下僅列出rrdtool的三個常用命令create、update、graph,看到這些命令格式,大概你就感覺到這工具使用的復雜性了。
Create命令格式:
rrdtool create filename [--start|-b start time] [--step|-s step] [--template|-t template-file] [--source|-r source-file] [--no-overwrite|-O] [--daemon|-d address] [DS:ds-name[=mapped-ds-name[[source-index]]]:DST:dst arguments] [RRA:CF:cf arguments]
Update命令格式:
rrdtool {update | updatev} filename [--template|-t ds-name[:ds-name]...] [--skip-past-updates|-s] [--daemon|-d address] [--] N:value[:value]... timestamp:value[:value]... at-timestamp@value[:value]...
Graph命令格式:
rrdtool graph|graphv filename [option ...] [data definition ...] [data calculation ...] [variable definition ...] [graph element ...] [print element ...]
針對各個參數(shù)的說明實在太多,不在此列出,建議直接看官方文檔https://oss.oetiker.ch/rrdtool/doc/rrdtool.en.html,該部分:
命令格式太復雜,但是,只要搞定上面三個命令,以后用起來就輕松了,直接套用格式就行,如下是res-monitor監(jiān)控帶寬使用的命令配置實例,應用在python代碼里,僅供參考哦。
1) 使用create命令創(chuàng)建rrd數(shù)據(jù)庫文件
rrdtool_create = ('{bin_file} create {rrd_file} -s {interval} '
'DS:recvAvg:GAUGE:300:0:U '
'DS:sendAvg:GAUGE:300:0:U '
'RRA:AVERAGE:0.5:1:600 ')
命令說明:
Create命令創(chuàng)建rrd數(shù)據(jù)庫,設(shè)置間隔為5s,定義里個數(shù)據(jù)源(DS),且數(shù)據(jù)源類型是保留原始值(GAUGE),數(shù)據(jù)接收的最大時間跨度是5分鐘,否則設(shè)置U(unknown),指定按每個數(shù)據(jù)取平均值(AVERAGE)的方式歸檔存放數(shù)據(jù);
2) 使用update命令更新rrd數(shù)據(jù)庫
rrdtool_update = '{bin_file} update {rrd_file} N:'
命令說明:
Update命令向rrd數(shù)據(jù)庫寫數(shù)據(jù),注意N:后面的數(shù)據(jù)組數(shù)和create指定的數(shù)據(jù)源對應,上面create是2個數(shù)據(jù)源,update的數(shù)據(jù)也只能是2組??梢岳斫獬啥嘈?列的表,每列對應create指定的數(shù)據(jù)源,update就是一行行往里面填數(shù)據(jù)。
3) 使用graph命令讀取rrd數(shù)據(jù)庫并繪制
rrdtool_graph = ('{bin_file} graph {rrd_graph} '
'--start now-1800s '
'--vertical-label "NET Utilization" '
'--units-exponent 0 '
'--alt-autoscale-max '
'--lower-limit 0 '
'--title "NET/TOTAL:recv/send(MB/s)" '
'--font TITLE:10: Roman.ttf --font AXIS:10: Roman.ttf –font UNIT:10: Roman.ttf --font LEGEND:10: Roman.ttf '
'DEF:recvAvgFlow={rrd_relative_file}:recvAvg:AVERAGE '
'LINE1:recvAvgFlow#e60000:"recv(MB/s)" '
'GPRINT:recvAvgFlow:AVERAGE:"AVERAGE\:%3.1lf" '
'GPRINT:recvAvgFlow:MIN:"MIN\:%3.1lf" '
'GPRINT:recvAvgFlow:MAX:"MAX\:%3.1lf\\n" '
'DEF:sendAvgFlow={rrd_relative_file}:sendAvg:AVERAGE '
'LINE1:sendAvgFlow#32cd32:"send(MB/s)" '
'GPRINT:sendAvgFlow:AVERAGE:"AVERAGE\:%3.1lf" '
'GPRINT:sendAvgFlow:MIN:"MIN\:%3.1lf" '
'GPRINT:sendAvgFlow:MAX:"MAX\:%3.1lf\\n" '
)
命令說明:
Graph命令相當復雜,但表現(xiàn)里很強,上面參數(shù)指定圖標顯示的時間跨度,縱橫坐標標題,圖表是否自動縮放,線條顏色,每個線條對應從哪里取數(shù)據(jù),且顯示MIN\MAX\AVERAGE圖例說明等等。
注意:
命令中的變量需要根據(jù)自己的實際情況替換,自己開發(fā)的程序里需要執(zhí)行周期性的數(shù)據(jù)采集操作獲得數(shù)據(jù),然后使用update操作將數(shù)據(jù)寫入rrdtool。按上述命令格式配置,最后的效果如下:
坑1:
Rrdtool主要被設(shè)計應用在linux平臺的,命令參數(shù)的分割符就是“:”,但在windows平臺,冒號是盤符標志,所以,實際應用中需要做轉(zhuǎn)義或者傳入相對路徑;
坑2:
Windows使用Cygwin打包版本的rrdtool,可能會報字體文件缺失,注意下載默認的指定文件并指定。
文章標題:神奇的環(huán)形數(shù)據(jù)庫工具-rrdtool
URL標題:http://jinyejixie.com/article22/jjpijc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、虛擬主機、網(wǎng)站收錄、建站公司、企業(yè)網(wǎng)站制作、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)