神奇的环形数据库工具-rrdtool

一 前言

前段时间写多主机性能指标监控工具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,可能会报字体文件缺失,注意下载默认的指定文件并指定。

文章标题:神奇的环形数据库工具-rrdtool
URL标题:https://www.cdcxhl.com/article22/jjpijc.html

成都网站建设公司_创新互联,为您提供小程序开发虚拟主机网站收录建站公司企业网站制作域名注册

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都做网站