zoukankan      html  css  js  c++  java
  • RRDTool 三个命令的使用

    要了解rrdtool如何使用就要先从rrd的数据存储方式开始,rrdtool就是为了操作这个数据库的工具,抄来下面一段文字解释。

    0x01 什么是rrd数据库

          所谓的“Round Robin” 其实是一种存储数据的方式,使用固定大小的空间来存储数据,并有一个指针指向最新的数据的位置。我们可以把用于存储数据的数据库的空间看成一个圆,上面有 很多刻度。这些刻度所在的位置就代表用于存储数据的地方。所谓指针,可以认为是从圆心指向这些刻度的一条直线。指针会随着数据的读写自动移动。要注意的 是,这个圆没有起点和终点,所以指针可以一直移动,而不用担心到达终点后就无法前进的问题。在一段时间后,当所有的空间都存满了数据,就又从头开始存放。 这样整个存储空间的大小就是一个固定的数值。所以RRDtool 就是使用类似的方式来存放数据的工具, RRDtool 所使用的数据库文件的后缀名是'.rrd。如下图,

    0x02 创建rrdtool create

          单纯从理论上了解rrdtool实在有难度,DS、DST、RRA、PDP、CF、CDP等关键字直接懵倒一片,其实这些关键字都来自于rrd数据库的创建语句。既然是创建了,那就是和rrd数据库的结构相关了

    * create - create a new RRD

    rrdtool create filename [--start|-b start time]
    [--step|-s step]
    [--no-overwrite|-O]
    [DS:ds-name:DST:dst arguments]
    [RRA:CF:cf arguments]

     

    各个名词的解释可以参考http://freeloda.blog.51cto.com/2033581/1307492,这博文写得很通俗易懂

    个人理解,在DS中虽然指定了每个时间间隔是多少,但是并没有说明整个DS有多大,可以存储多少数据,所以DS是一个临时存储的位置

    最终RRA才是所谓的rrd数据库,cd arguments中有setps指定了多少个PDP聚合成一个CDP,rows表示有多少个CDP,这里就已经固定了RRA包含几个CDP,创建之后大小就不变,致使rrd文件大小也不改变

    [root@localhost22 ~]# rrdtool create --start 1459017812 --step 3  test.rrd DS:ds1:GAUGE:6:U:U RRA:AVERAGE:0.5:2:600

    查看当前的时间是date +%s,上面创建了一个时间间隔为3s的时间槽(--step 3),然后RRA中每2个PDP聚合一次AVERGAE(每个CDP跨度就是6s了),一共创建了600个,即记录了一个小时的数据。

    查看当前rrd文件,使用fetch 指定聚合方式和开始时间

    [root@localhost22 ~]# rrdtool fetch test.rrd AVERAGE -r 2 -s 1459018002
    ds1

    1459018008: -nan
    1459018014: -nan
    1459018020: -nan
    1459018026: -nan
    1459018032: -nan
    1459018038: -nan

    可以看到时间间隔6s,没有任何数据,接下来要插入数据

    0x03 插入数据rrdtool update

     往rrd文件中插入数据的命令是rrdtool update

    * update - update an RRD

    rrdtool update filename
    [--template|-t ds-name:ds-name:...]
    [--daemon <address>]
    time|N:value[:value...]

    at-time@value[:value...]

    [ time:value[:value...] ..]

    两个主要选项一个就是数据源的顺序,这个顺序对应上后面需要插入数值的顺序,另一个就是"时间:值",当前时间可以用N代替

    [root@localhost22 ~]# rrdtool update test.rrd N:`echo $RANDOM`

    上面的只是更新一次数据,写个循环,让其不断更新

    [root@localhost22 ~]# cat test.sh
    while(true)
    do
      sleep 3         //每隔3s插入数据
      rrdtool update test.rrd N:`echo $RANDOM`
    done

    然后执行该脚本,一段时间后,查看rrd文件 ,-r 2为解析度(表示两个PDP聚合,如果指定其他解析度是创建时RRA没有的,取相近的)

    [root@localhost22 ~]# rrdtool fetch test.rrd AVERAGE -r 2 -s 1459019604          
    ds1

    1459019610: 2.4833740297e+04
    1459019616: 1.0401318901e+04
    1459019622: 2.2809431869e+04
    1459019628: 1.4484339557e+04
    1459019634: 1.3323151010e+04
    1459019640: 1.7158955025e+04
    1459019646: 1.1848137257e+04
    1459019652: 2.7713005683e+04
    1459019658: 2.2571123781e+04
    1459019664: 1.8554102312e+04

    0x04 绘图rrdtool graph

    rrd数据文件有了数据就可以绘图了,看一下rrdtool graph的参数,太多了!%>_<%

    * graph - generate a graph from one or several RRD

    rrdtool graph filename [-s|--start seconds] [-e|--end seconds]

    [-x|--x-grid x-axis grid and label]
    [-Y|--alt-y-grid] [--full-size-mode]
    [-y|--y-grid y-axis grid and label]
    [-v|--vertical-label string] [-w|--width pixels]
    [--right-axis scale:shift] [--right-axis-label label]
    [--right-axis-format format]
    [-h|--height pixels] [-o|--logarithmic]
    [-u|--upper-limit value] [-z|--lazy]
    [-l|--lower-limit value] [-r|--rigid]
    [-g|--no-legend] [--daemon <address>]
    [-F|--force-rules-legend]
    [-j|--only-graph]

    [-n|--font FONTTAG:size:font]
    [-m|--zoom factor]
    [-A|--alt-autoscale]
    [-M|--alt-autoscale-max]
    [-G|--graph-render-mode {normal,mono}]
    [-R|--font-render-mode {normal,light,mono}]
    [-B|--font-smoothing-threshold size]
    [-T|--tabwidth width]
    [-E|--slope-mode]
    [-P|--pango-markup]
    [-N|--no-gridfit]
    [-X|--units-exponent value]
    [-L|--units-length value]
    [-S|--step seconds]
    [-f|--imginfo printfstr]
    [-a|--imgformat PNG]
    [-c|--color COLORTAG#rrggbb[aa]]
    [--border width
    [-t|--title string]
    [-W|--watermark string]
    [DEF:vname=rrd:ds-name:CF]

    [CDEF:vname=rpn-expression]
    [VDEF:vdefname=rpn-expression]
    [PRINT:vdefname:format]
    [GPRINT:vdefname:format]
    [COMMENT:text]
    [SHIFT:vname:offset]
    [TEXTALIGN:{left|right|justified|center}]
    [TICK:vname#rrggbb[aa][:[fraction][:legend]]]
    [HRULE:value#rrggbb[aa][:legend]]
    [VRULE:value#rrggbb[aa][:legend]]
    [LINE[width]:vname[#rrggbb[aa][:[legend][:STACK]]]]
    [AREA:vname[#rrggbb[aa][:[legend][:STACK]]]]
    [PRINT:vname:CF:format] (deprecated)
    [GPRINT:vname:CF:format] (deprecated)
    [STACK:vname[#rrggbb[aa][:legend]]] (deprecated)

    [-s|--start time]启始时间
    [-e|--end time]结束时间 
    [-S|--step seconds]解析度
    [-t|--title string]图片的标题 
    [-v|--vertical-label string] Y轴标签
    [-w|--width pixels] 显示区的宽度(像素)
    [-h|--height pixels]显示区的高度 (像素)
    [-j|--only-graph]只绘制图像
    [-u|--upper-limit value] Y轴最大值
    [-l|--lower-limit value] Y轴最小值
    [-r|--rigid]固定Y轴的值,不进行缩放
    [-A|--alt-autoscale]自动缩放
    [-J|--alt-autoscale-min]只自动缩放最小值
    [-M|--alt-autoscale-max]只自动缩放最大值
    [-N|--no-gridfit]不显示网格线

    [-x|--x-grid x-axis grid and label]  指定横轴特性,基准网格线单位(时间):值:主网格线单位:值:x轴标签显示间隔(单位):值:后两位是时间格式
    [-y|--y-grid y-axis grid and label]

    [-c|--color COLORTAG#rrggbb[aa]]指定相关颜色,COLORTAG(BACK/CANVAS/SHADEA/SHADEB/GRID/FONT/AXIS/FRAME/ARROW)
    [-n|--font FONTTAG:size:font]自定义字体库,指定路径
    [-a|--imgformat PNG] 输出格式
    [-W|--watermark string] 水印

    [data definition ...]data and variables获取画图的数据,格式如下:
    DEF:vname=rrdfile:ds-name:CF[:step=step][:start=time][:end=time]    varname自定义变量保存rrd某个数据源取得的数据,CF指定数据源的哪一个聚合结果(哪个RRA)

    LINE[width]:value[#color][:[legend]]  线条粗细:前面DEF定义的变量vname#颜色:图下面的颜色方块文本信息

    [GPRINT:vname:CF:format]  图下面的数值信息

    [root@localhost22 ~]# rrdtool graph test.png --step 3 --start=1459019604 DEF:vtest=test.rrd:ds1:AVERAGE LINE:vtest#ff0000:'date'

  • 相关阅读:
    AIX系统/var/adm/wtmp大文件处理
    script & scriptreplay
    Ubuntu/Debianpxe/isopreseed
    Ubuntu12.04安装gimp-2.8
    Ubuntu 3D特效一览
    Unix history图览
    Undelete Files on Linux Systems
    开源界有趣的循环缩写和LOGO
    Ubuntu上的dock
    linux下歌曲、视频、文件等乱码
  • 原文地址:https://www.cnblogs.com/otherside/p/5320398.html
Copyright © 2011-2022 走看看