亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python下rrdtool模塊的基本使用方法

 更新時間:2015年11月13日 17:01:15   作者:China_OS  
這篇文章主要介紹了Python下rrdtool模塊的基本使用方法,經(jīng)常被用來做數(shù)據(jù)可視化的相關功能,需要的朋友可以參考下

最近需要用python根據(jù)收集到的數(shù)據(jù)進行繪圖,決定使用rrd數(shù)據(jù)庫,然后配合rrdtool來繪圖,故學習一下rrdtool的用法。

用法如下:

創(chuàng)建:
create(...)
create(args..): Set up a new Round Robin Database
    create filename [--start|-b start time] [--step|-s step] [DS:ds-name:DST:heartbeat:min:max] [RRA:CF:xff:steps:rows]
    filename:是rrd的文件名,可以以rrd結尾。
    --step:rrdtool期望每隔多長事件收到一個值,默認是5分鐘。
    --start:rrdtool第一個記錄的起始時間,rrdtool不會接收任何數(shù)據(jù)的時間小于起始時間。例如你在update時給出的時間小于起始時間,則rrdtool會拒絕該值
    DS:DS用于定義數(shù)據(jù)源,是用來存放結果的變量名。該變量名在畫圖時會用到。
    DST:用來設置數(shù)據(jù)源的類型,有COUNTER、GUAGE、DERIVE、ABSOLUTE、COMPUTE等5種類型。
        COUNTER:數(shù)值必須是遞增的
        DERIVE:和COUNTER類似,不過數(shù)據(jù)可遞增可遞減
        ABSOLUTE:他每次假定前一個時間間隔的值是0,然后計算平均值
        GAUGE:不做任何變化,直接存入rra中
        COMPUTE:他不接收具體值,而是定義一個表達式,然后算出某個值
    heartbeat:
    min:
    max:
    RRA:rra指定數(shù)據(jù)如何存放,他可以保存不同時間間隔的數(shù)據(jù)。力圖每5分鐘產(chǎn)生一條數(shù)據(jù),這樣一小時就是12條,如果每30分鐘一條數(shù)據(jù),這樣一小時就是兩條數(shù)據(jù),這樣一天,一年下來會有很多條數(shù)據(jù),但是rrd數(shù)據(jù)庫的大小是固定的,所以就有一個合并數(shù)據(jù)的方式了。這就是rra的功能。合并方式由CF指定。
    CF:CF就是用來設置數(shù)據(jù)合并的功能,有AVERAGE、MAX、MIN、LAST等4種類型,分別表示對PDP取平均、最大、最小、當前值。
    xff:xff字段設置一個比例值,rrdtool會把多個PDP合并為一個CDP,如果這寫PDP中有值為UNKNOW的PDP,那么CDP的值該怎么計算,xff就是設置一個比例,當PDP中UNKNOW的比例超過多少是,就無法合成正常的CPD,合成的CPD值也為UNKNOW。
    steps:表示多少個PDP合成一個CDP
    rows:表示總共存多少個CDP?也就是可以保存多少數(shù)據(jù)?

    PDP:在每個規(guī)定的時間間隔內(nèi)rrdtool都會收到一個值,rrdtool在收到該值后,根據(jù)DST的設置,會計算出另一個值,這個值就是PDP。
    CDP:rrdtool使用多個PDP合并出一個CDP,也就是執(zhí)行CF的后果,然后把這個CDP的值存入rra中。


查看第一次/最后一次數(shù)據(jù)更新時間:
first(...)
first(filename): Return the timestamp of the first data sample in an RRD

last(...)
last(filename): Return the timestamp of the last data sample in an RRD


查看rrd結構信息:
info(...)
info(filename): extract header information from an rrd

取出rrd的值:
fetch(...)
fetch(args..): fetch data from an rrd.
    fetch filename CF [--resolution|-r resolution] [--start|-s start] [--end|-e end]
    filename:要取出數(shù)據(jù)的rrd文件
    --start:可選,默認是end-1day
    --end:可選,默認是now
    CF:AVERAGE、MAX、MIN、LAST。前提是你的rrd中有該類型的rra才可以。


更新rrd數(shù)據(jù):
update(...)
update(args..): Store a new set of values into the rrd
    update filename [--template|-t ds-name[:ds-name]...] N|timestamp:value[:value...] [timestamp:value[:value...] ...]
    filename:要更新的rrd文件
    --template:
    -t ds-name[:ds-name]:設置更新那個DS的數(shù)據(jù)
    N|timestamp:時間戳,表示數(shù)據(jù)在哪個時間點采集的,N表示now。
    value[:value...]:一個rrd文件可以有多個DS,所以一次update可以更新多個value。

update插入值后,并不會有返回,無法知道插入是否正常,可以用updatev

帶返回值的插入:
updatev(...)
updatev is called in the same manner as update
    和update類似,不過每次插入后會返回一個狀態(tài)碼。


畫圖:
graph(...)
graph(args..): Create a graph based on data from one or several RRD
    graph filename [-s|--start seconds] [-e|--end seconds] [-x|--x-grid x-axis grid and label] [-y|--y-grid y-axis grid and label] [--alt-y-grid] [--alt-y-mrtg] [--alt-autoscale] [--alt-autoscale-max] [--units-exponent] value [-v|--vertical-label text] [-w|--width pixels] [-h|--height pixels] [-i|--interlaced] [-f|--imginfo formatstring] [-a|--imgformat GIF|PNG|GD] [-B|--background value] [-O|--overlay value] [-U|--unit value] [-z|--lazy] [-o|--logarithmic] [-u|--upper-limit value] [-l|--lower-limit value] [-g|--no-legend] [-r|--rigid] [--step value] [-b|--base value] [-c|--color COLORTAG#rrggbb] [-t|--title title] [DEF:vname=rrd:ds-name:CF] [CDEF:vname=rpn-expression] [PRINT:vname:CF:format] [GPRINT:vname:CF:format] [COMMENT:text] [HRULE:value#rrggbb[:legend]] [VRULE:time#rrggbb[:legend]] [LINE{1|2|3}:vname[#rrggbb[:legend]]] [AREA:vname[#rrggbb[:legend]]] [STACK:vname[#rrggbb[:legend]]]

    filename:圖片的名稱,默認是PNG格式
    --start:圖片X軸數(shù)據(jù)的起始時間
    --end:圖片X軸數(shù)據(jù)的結束時間
    --x-grid x-axis grid and label:
    --y-grid y-axis grid and label:
    --alt-y-grid
    --alt-y-mrtg
    --alt-autoscale
    --alt-autoscale-max
    --units-exponent
    --vertical-label text  Y軸的文字說明
    --width pixels  X軸的大小
    --height pixels  Y軸的大小
    --interlaced
    --imginfo formatstring 
    --imgformat GIF|PNG|GD  圖片格式
    --background value
    --overlay value
    --unit value
    --lazy
    --logarithmic
    --upper-limit value  Y軸數(shù)據(jù)值的上限,默認會自動調(diào)整Y軸的數(shù)字
    --lower-limit value  Y軸數(shù)據(jù)值的下限
    --no-legend  取消圖表下方的圖例
    --rigid  嚴格按照upper-limit/lower-limit來繪制
    --step value
    --base value  默認1K=1000 可以調(diào)整1K=1024
    --color COLORTAG#rrggbb
    --title title  圖表上方的標題
    DEF:vname=rrd:ds-name:CF 定義繪圖用的數(shù)據(jù)源,也就是從那個RRD中取數(shù)據(jù),因為RRA有多種類型,所以需要指定CF
    CDEF:vname=rpn-expression  定義合并值,
    PRINT:vname:CF:format
    GPRINT:vname:CF:format  在圖表的下方輸出最大值、最小值之類
    COMMENT:text  用來輸出一些字符串
    HRULE:value#rrggbb  在圖表上繪制水平線
    VRULE:time#rrggbb  在圖表上繪制垂直線
    LINE{1|2|3}:vname  使用線條來繪制vname的數(shù)據(jù)圖
    AREA:vname  使用方塊來繪制vname的數(shù)據(jù)圖
    STACK:vname 


下面附上一個例子:

###創(chuàng)建rrd
#!/usr/bin/python
import rrdtool
 
rrdb=rrdtool.create('rest.rrd','--step','60','--start','1369982786',
    'DS:input:GAUGE:120:U:U',
    'DS:output:GAUGE:120:U:U',
    'RRA:LAST:0.5:1:600',
    'RRA:AVERAGE:0.5:5:600',
    'RRA:MAX:0.5:5:600',
    'RRA:MIN:0.5:5:600')
if rrdb:
  print rrdtool.error()
 
###rrd插入數(shù)據(jù)
#!/usr/bin/python
import time
import psutil
import rrdtool
 
for keys in psutil.network_io_counters(pernic=True):
  if keys == 'em1':
    sent=psutil.network_io_counters(pernic=True)[keys][0]
    recv=psutil.network_io_counters(pernic=True)[keys][1]
    up=rrdtool.updatev('rest.rrd','N:%d:%d' % (sent,recv))
    print up
 
###根據(jù)rrd繪圖
#!/usr/bin/python
import rrdtool
 
rrdtool.graph('rest.png','--start','1369983960',
    '--title','my rrd graph test',
    '--vertical-label','bits',
    'DEF:input=rest.rrd:input:LAST',
    'DEF:output=rest.rrd:output:LAST',
    'LINE1:input#0000FF:In traffic',
    'LINE1:output#00FF00:Out traffic\\r',
    'CDEF:bytes_in=input,8,*',
    'CDEF:bytes_out=output,8,*',
    'COMMENT:\\n',
    'GPRINT:bytes_in:LAST:LAST in traffic\: %6.2lf %Sbps',
    'COMMENT: ',
    'GPRINT:bytes_out:LAST:LAST out traffic\: %6.2lf %Sbps')

相關文章

  • Anaconda多環(huán)境多版本python配置操作方法

    Anaconda多環(huán)境多版本python配置操作方法

    下面小編就為大家?guī)硪黄狝naconda多環(huán)境多版本python配置操作方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • python基于pdfminer庫提取pdf文字代碼實例

    python基于pdfminer庫提取pdf文字代碼實例

    這篇文章主要介紹了python 提取pdf文字代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 使用Python Fast API發(fā)布API服務的過程詳解

    使用Python Fast API發(fā)布API服務的過程詳解

    這篇文章主要介紹了使用Python Fast API發(fā)布API服務,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • python中xlutils庫用法淺析

    python中xlutils庫用法淺析

    在本篇文章里小編給大家整理了一篇關于python中xluntils庫用法淺析的內(nèi)容,有需要的朋友們可以學習下。
    2020-12-12
  • Python數(shù)據(jù)結構dict常用操作代碼實例

    Python數(shù)據(jù)結構dict常用操作代碼實例

    這篇文章主要介紹了Python數(shù)據(jù)結構dict常用操作代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Python的內(nèi)建模塊itertools的使用解析

    Python的內(nèi)建模塊itertools的使用解析

    這篇文章主要介紹了Python的內(nèi)建模塊itertools的使用解析,itertools是python的迭代器模塊,itertools提供的工具相當高效且節(jié)省內(nèi)存,Python的內(nèi)建模塊itertools提供了非常有用的用于操作迭代對象的函數(shù),需要的朋友可以參考下
    2023-09-09
  • Python常用數(shù)據(jù)結構和公共方法技巧總結

    Python常用數(shù)據(jù)結構和公共方法技巧總結

    這篇文章主要介紹了Python常用數(shù)據(jù)結構和公共方法技巧總結,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • jupyter?notebook內(nèi)核配置的圖文教程

    jupyter?notebook內(nèi)核配置的圖文教程

    Jupyter?Notebook是基于網(wǎng)頁的用于交互計算的應用程序,下面這篇文章主要給大家介紹了關于jupyter?notebook內(nèi)核配置的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-02-02
  • Python對文件操作知識匯總

    Python對文件操作知識匯總

    這篇文章主要介紹了Python對文件操作知識匯總的相關資料,非常具有參考借鑒價值,需要的朋友可以參考下
    2016-05-05
  • 詳解python中的數(shù)據(jù)類型和控制流

    詳解python中的數(shù)據(jù)類型和控制流

    這篇文章主要介紹了詳解python中的數(shù)據(jù)類型和控制流,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08

最新評論