首页 > 其他分享 >RRDTool

RRDTool

时间:2024-08-09 23:39:40浏览次数:7  
标签:RRDTool -- rrd RRA 数据 DS

RRDTool 简介 :

http://bbs.linuxpk.com/thread-37101-1-1.html

RRDTool 是指 Round Robin Database 工具(环状数据库)。 Round robin 是一种处理定量数据、以及当前元素指针的技术。想象一个周边标有点的圆环--这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头--这就是指针。就像我们在一个圆环上一样,没有起点和终点,你可以一直往下走下去。过来一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。 RRDTool 处理 RRD 数据库。它向 RRD 数据库存储数据、从 RRD 数据库中提取数据。

RRD 中可以存放什么样的数据?

可以适合时间序列的数据。就是说你必须能够在时间的几个点上度量某些值,并提供这些信息给 RRDTool 。如果你能够做到这一点,就可以用 RRDTool 存放它们。这些值必须是数字,但是不一定要是整数,在与 MRTG 合用时。

SNMP 是简单网络管理协议的缩写。简单是指协议简单--并不表示管理或监视网络简单。可以用来查询设备中保持的计数器的值,我们要存放到 RRD 数据库中的正是这些计数器的值。

RRDTool 可以用来做什么?

RRDTool 源自 MRTG (多路由器流量绘图器)。 MRTG 是有一个大学链接到互联网链路的使用率的小脚本开始的。 MRTG 后来被当作绘制其他数据源的工具使用,包括温度、速度、电压、输出量等等。

很可能你会使用 RRDTool 来存储和处理通过 SNMP 搜集到的数据开始。这些数据可能是某个网格或者计算机接收或者发送的字节数(比特数)。它也可以用来显示潮水的波浪、阳光射线、电力消耗、展会的参观人员、机场附近的噪音等级、你喜欢的度假区的温度、电冰箱的温度、以及任何你可以想象的东西。

你需要一个度量数据,以及能够提供这些数据给 RRDTool 的感应器就可以了。 RRDTool 会让你创建数据库、存储数据、提取数据、创建用于在 web 浏览器中显示的 png 格式的录像。这些 PNG 格式的图像来自于你收集的数据,它可以是网络平均使用率、峰值。

 

RRDTool 使用教学

http://erospan.blog.hexun.com/5639240_d.html

以监控网络流量为例:

1 、        通过 shell 脚本,配置我们监控的端口流量,并生成 .rrd 的数据文档。

2 、        由数据更新脚本,通过调用 snmpwalk 更新 .rrd 数据文档。

3 、        数据更新脚本,调用绘图脚本根据 rrd 数据文档,重新绘图

4 、        休息 300s ,继续 2

RRDTool 的使用方法:

rrdtool [option] command command_options

而 command 包括:

create , update , updatev , graph , dump , restore , last , first , info , fetch , tune , resize , xport

create 命令的使用:

rrdtool create filename [--starte|--b start time] [--step|-s step] [DS:ds-name:DST:heartbeat:min:max]  [RRA:CF:xff:steps:rows]

//DS:ds-name:GAUGE|COUNTER|DERIVE|ABSOLUTE:heartbeat:min:max

用例子来解释语法:

--start 1023654125

--step 300

DS:mem:GAUGE:600:0:671744

RRA:AVERAGE:0.5:12:24

RRA:AVERAGE:0.5:288:31

create 创建一个新的 Round Robin Database ( rrd )数据库文件以存储信息

filename 习惯以 .rrd 结尾,记住这个数据库文件的名字

--start 这个参数可以指定 filename 的数据记录其实日期,你可以指定为 1970 年至今的秒数(参数为 -b data -d "1970/01/01" +%s ),如果你不指定,那么其实时间默认就是现在。

--step 采集数据的间隔时间,习惯上我们设定为 300 秒,当然你可以自行调整,这也是 rrd 的优势所在,但是采集周期不应该过短也不应小于你的 update rrd 文件周期,否则可能会造成服务器负载过重。

[DS:ds-name:DST:heartbeat:min:max]

// DS:ds-name:GAUGE | COUNTER | DERIVE | ABSOLUTE:heartbeat:min:max

对比例子

DS:mem:GAUGE:600:0:671744

下面以例子来说明:

DS :用来表示数据源的,也可以理解为声明数据变量的关键字。这个是必须写的。不能按照你的意愿修改成其他表述方式。

DS-NAME :变量名,可以理解为你给这个数据源起的助记符(简称 DSN )。当每一个刷新周期到来的时候,数据文档中各个变量对应的值就会被更新。这个变量对应的值在官方文档中也叫做主要数据点。-- PDP ( primary data point )

DST : DS 的类型,通常有: GAUGE,COUNTER,DERIVE,ABSOLUTE 四种。

GAUGE 测量,表示实际的值,比如说输入次序为 98 100 98 ,那么输出的顺序也是一样的 98 100 98

COUNTER 累计值,自己进行计算的。输入 98 100 98 ,输出 2 -2 ,( 100-98 98-100 ),其实就是两个差值,它表示的是经过一个刷新周期的变化率。

DERIVE 也是累计值,和 COUNTER 一样,唯一不同的是,他不存在负值,最小的是 0 ,比如, -2 就表示成 0

如同 ,但 可能 (数值过大),所以会取绝对值

虽然后三个都是取差值,但是会再除以两次间隔间的秒数。如果间隔 300 ,则画出来的就是 2/300, -2/300

heartbeat 心跳有效期

例子中定义了心跳有效期为 600 ,就是两个刷新周期。例如:在 12 点的时候没有产生数据,那么前后 300s (共 600s )的平均值就会绘成 12 点的值,但如果在两个刷新周期内,都没有接收到数据更新,那么这个时候,必须往数据记录中写入一个( UN ) unknown 值,这是 RRDTool 的一个特别的地方,要知道 MRTG 在处理网络中断的时候,记录的是 0 值,这个 0 和 UN 是有一定区别的。

min : max

记录数据的最大值和最小值, DS 数值的有效范围,超出就是 UN ,也可以写成 U:U 代表不限定范围,小技巧,将数据源建立方式记为"三文字:三数字"

RRA :作用就是定义更新的数据是如何记录的, RRA 即 Round Robin Archive , Archive 是存档。比如每 5 分钟产生一条刷新的数据,那么一个小时就有 12 条,每天就有 288 条那么庞大的数据量,一定不可能都存起来,肯定有一个合并 consolidate 数据的方式,那么这个和 RRA 的作用了。

下面具体介绍怎么应用 RRA :

使用方法: RRA:AVERAGE | MIN | MAX | LAST:xff:steps:rows

RRA 用以生命 RRAs 的关键字

CF : consolidation functions 合并方式 包括四类。

平均值 最大值 最小值 最后一笔数据

上面提到,经过一个刷新周期会达到一个主要数据点,将若干个 PDPs 使用合并方式( CF )合并后会产生一个合并数据点 CDF ( consolidation data point )

xff : xfiles factor 和 unknown 数据有关,很多资料都是 0.5

step :有 step 条 PDP 合并成一条 CDP

row :记录的合并数据点 CDP 的条数

例子:

RRA:AVERAGE:0.5:12:24 //1 天

RRA:AVERAGE:0.5:288:31 //1 月

对于第一个 RRA , 12 条 PDP 吉恩过 CFed ( AVERAGE ),也就是取平均值,产生一个 CDP , 24 个 CDPs 存档。我们一起计算时间,如果一个周期是 300 秒,那么 12 个 PDP 的产生时间就是一个小时,也就是一个小时产生一个 CDP 。 24 个 CDPs 时间就是一天。说明通过这条 RRA 的定义,它将会替代第一条 CDP 的位置。

 

第二讲 rrd 数据的更新( update )

在创建好文档后,我们要用程序定时更新数据文档 .rrd ,然后才能根据数据文档画图,以采集核心交换流量为例,手心我们要抓到各端口的流量,可以通过 snmp 协议来取得数据。

语法:

rrdtool{update|updatev}

rrdtool update tcpdump.rrd 1061811856:114:0:50:1199:0:821073

上面的 1061811856 即时间值,如果就是要现在的时间值,可以 N 代表,但要转化成秒值,通常我们都会用 timestamp='date +%s' 来转现在秒数,如果是某些特定时间,则可以: timestamp='date -d "2003/08/15 12:00" +%s'

后面跟着所有的更新的数据,按照 DS 定义的数序用冒号隔开。

 

第三讲:画图

换图的语法很多,列出最有用的

方法: rrdtool graph image-filename 参数:

[-s|--start seconds] :绘图起始时间,预设是一天前( -1d ),可用 -s data … 来指定时间

[-e|--end time] :绘图结束时间,预设是现在 now ,除了 date 的应用外,可用 -e -1w 表示绘图的结束于一周前

[-t|--title title] :图上显示的标题

[-v|--vertical-label text] : Y 轴上的说明文字

[-w|--width pixels] :绘图区域,画图区宽的大小

[-h|--height pixels] :绘图区域,画图区高的大小

-u : Y 轴正值高度

-l : Y 轴负值高度

-no-mirror 不要副格线

画图的配套参数就介绍这么多,重点放在图的数据变量的描述和画图具体过程上面

DEF ( Define ):就是定义一个变量

语法: DEF:vname=rrd_filename:DS_name:CF

DEF:vname=rrd_filename:DS-name:[AVERAGE|MAX…]

主要用处在你要取出哪个 rrd 档案的 dsn 到这个 graph 来

从上很容易看出,要定义一个虚拟的变量,变量从 .rrd 玩数据文件中取得数据源( DS )经过数据合并( CF )后的数据。前面的那些参数都是为了绘图做准备的。

1.        vname 虚拟变量,自己取,以后还要用到

2.        rrd_filename:DS_name:CF 数据文件的全路径 - 数据源变量 - 合并方法

3.         例子 : DEF:in_bytes_1=$RRD_PATH:ifInOctets1:AVERGE

然而,只有记录的数据源变量还是不够的,我们希望这些数据源变量可以计算。比如希望把某两个端口的流量加在一起作为一个变量画图,那么这时就需要 CDEF

CDEF 一个虚拟的变数,其值为 DEF 的某些运算,语法如下:

CDEF:vname=fpn-expression

例子:取得某端口流入流量的字节数,希望画在图上的是 bit 为单位,则字节数要乘以 8

例子:

DEF:in_byte_1=$RRD_PATH:ifInOctets1:AVERAGE

CDEF:in_bits_1=8,in_byte_1,*

rpn ( reverse polish notation )逆波兰表达式,它的语法规定,必须以逆波兰表达式的方式给出。后缀表达式。上面表示 in_bits_1=in_byte_1*8

有两种表示流量的方式,流入用绿色的区域( AREA ),流出用蓝色的线( LINE ),这就是画图的几个元素。

语法:

AREA:vname[#rrggbb[:legend]]

LINE{1|2|3}:vname[#rrggbb[:legend]]

STACK:vname[#rggbb[:legend]]

1 vname 根据虚拟变量 vname 画图

2 #rrggbb 颜色的 16 进制表示,

3 legend 对该颜色的提示,最后会写在图上

4 特别的,画线有粗细,所以有 LINE1-LINE3 , line1 最细, line3 最粗

5 AREA 可以画出资料值至 0 之间的区域图

6 STACK         是表现在的图的值,叠在上一个值上

如果使用 AERA/STACK 则需特别注意图盖图的问题,一定要先画大的值,再话小的值,才会有层次的效果,不然最大的数据会把最小的覆盖。

图下面的提示:

GPRIINT:vname:CF:format

COMMENT:text

例如: COMMENT:"hello world.\c"

     GPRINT:in_bits_1:AVERAGE:"Average Current\:%8.2lf %S bps"

// 显示 in_bits_1 的值,精确到小数点后面两位

这些说明文字可以用 \ n 等换行符号

 

 

 

 

 

http://www.oschina.net/p/cacti

Cacti 在英文中的意思是仙人掌的意思, Cacti 是一套基于 PHP,MySQL,SNMP 及 RRDTool 开发的网络流量监测图形分析工具。它通过 snmpget 来获取数据,使用 RRDtool 绘画图形,而且你完全可以不需要了解 RRDtool 复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结 构、 host 以及任何一张图,还可以与 LDAP 结合进行用户验证,同时也能自己增加模板,功能非常强大完善。

标签:RRDTool,--,rrd,RRA,数据,DS
From: https://www.cnblogs.com/smoke520/p/18351717

相关文章

  • rrdtool使用方法
    RRDtool(RoundRobinDatabaseTool)是一种开源的数据库工具,用于存储和绘制时间序列数据。它通常用于监控系统、网络设备和其他资源的性能数据。下面是RRDtool的一些常见用法和基本操作步骤:创建数据库(RRD文件):使用rrdtoolcreate命令创建一个新的RRD数据库。指定数据库的文件名、数......
  • rrdtool的使用介绍
    rrdtool的使用介绍rrdtool的介绍rrdtool(roundrobindatabase)工具为环状数据库的存储格式。roundrobin是一种处理定量数据以及当前元素指针的技术。rrdtool主要用来跟踪对象的变化情况,生成这些变化的走势图,比如业务的访问流量,系统性能,磁盘利用率等趋势图,很多流行监控平台都使......