中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

神奇的環形數據庫工具-rrdtool

發布時間:2020-06-20 10:49:04 來源:網絡 閱讀:1842 作者:平山 欄目:編程語言

一 前言

前段時間寫多主機性能指標監控工具res-monitor時有提到它,這里就專門對它做個介紹吧。

像res-monitor這類工具,既要實時獲取數據,又要實時圖形化展示數據,常規的是把采集的數據存放到數據庫,然后再讀數據庫數據畫圖展示,然而,當我遇到rrdtool的時候,眼前一亮,很特別,它一方面可以把數據存儲起來,扮演數據庫的角色;另一方面又能根據存儲的數據繪圖,而且圖形表達能力很強,如線狀圖、餅狀圖、柱狀圖、區域面積圖等;支持高性能的數據存儲、繪圖,很方便集成在各種腳本中。從github的修改記錄來看,它從2012年發布至今,一直在維護和更新著,可見其生命力。

Rrdtool很強大,完成數據存儲和實時展示繪圖等工作,只需要掌握3個命令,但這三個命令的參數相當多,使用起來有點復雜,另外,需要注意的是,它主要應用在linux平臺,在windows上只能用Cygwin打包版本的,而且有些,需要繞過去。

本文不打算詳細介紹rrdtool的原理,因為這塊可以看官方文檔,主要是說明如何使用它,并給出一些應用參考。
Rrdtool網址: https://oss.oetiker.ch/rrdtool/index.en.html

什么是rrd數據庫

Rrdtool是環形數據庫工具,存儲和讀取的是環形數據庫,表現是后綴為.rrd的二進制文件。要大概理解啥是環形數據庫,我對它的理解就是把它想象成圓形的時鐘,隨著時間推移,不斷往里寫數據,同時有個標記指向當前數據記錄的最新位置,就像時鐘上的指針指示當前時間一樣。又因為它是圓形的,無始無終,可以一直往里寫數據,只是歷史數據會被覆蓋掉,所以,有時它又被叫做時序結構數據庫。

rrdtool常用命令

以下僅列出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 ...]

針對各個參數的說明實在太多,不在此列出,建議直接看官方文檔https://oss.oetiker.ch/rrdtool/doc/rrdtool.en.html,該部分:

神奇的環形數據庫工具-rrdtool

rrdtool應用——監控帶寬使用情況實例

命令格式太復雜,但是,只要搞定上面三個命令,以后用起來就輕松了,直接套用格式就行,如下是res-monitor監控帶寬使用的命令配置實例,應用在python代碼里,僅供參考哦。
1)    使用create命令創建rrd數據庫文件

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命令創建rrd數據庫,設置間隔為5s,定義里個數據源(DS),且數據源類型是保留原始值(GAUGE),數據接收的最大時間跨度是5分鐘,否則設置U(unknown),指定按每個數據取平均值(AVERAGE)的方式歸檔存放數據;

2)    使用update命令更新rrd數據庫

rrdtool_update = '{bin_file} update {rrd_file} N:'

命令說明:
Update命令向rrd數據庫寫數據,注意N:后面的數據組數和create指定的數據源對應,上面create是2個數據源,update的數據也只能是2組。可以理解成多行2列的表,每列對應create指定的數據源,update就是一行行往里面填數據。

3)    使用graph命令讀取rrd數據庫并繪制

    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命令相當復雜,但表現里很強,上面參數指定圖標顯示的時間跨度,縱橫坐標標題,圖表是否自動縮放,線條顏色,每個線條對應從哪里取數據,且顯示MIN\MAX\AVERAGE圖例說明等等。

注意:
命令中的變量需要根據自己的實際情況替換,自己開發的程序里需要執行周期性的數據采集操作獲得數據,然后使用update操作將數據寫入rrdtool。按上述命令格式配置,最后的效果如下:

神奇的環形數據庫工具-rrdtool

坑1:
Rrdtool主要被設計應用在linux平臺的,命令參數的分割符就是“:”,但在windows平臺,冒號是盤符標志,所以,實際應用中需要做轉義或者傳入相對路徑;

坑2:
Windows使用Cygwin打包版本的rrdtool,可能會報字體文件缺失,注意下載默認的指定文件并指定。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

固始县| 阜城县| 滦平县| 乐亭县| 永清县| 平湖市| 通州市| 辽阳市| 兴仁县| 巴东县| 榆社县| 丹巴县| 阿尔山市| 无极县| 汕尾市| 满洲里市| 吴川市| 六枝特区| 台安县| 涡阳县| 香格里拉县| 阳城县| 永吉县| 安远县| 象州县| 怀集县| 沂源县| 原阳县| 上虞市| 北宁市| 英吉沙县| 沙河市| 安塞县| 陆良县| 丹江口市| 兴化市| 财经| 长宁县| 新郑市| 五寨县| 安顺市|