by:ysuncn(欢迎转载,请注明原创信息)
下边是rrdtool用于作图而给出的三种数据定义:
DEF:<vname>=<rrdfile>:<ds-name>:<CF>[:step=<step>][:start=<time>][:end=<time>][:reduce=<CF>]
此命令从RRD文件中取出数据,虚拟名vname可以在脚本范围内使用。
VDEF:vname=RPN expression
VDEF命令根据RPN语句返回一个值和(或)时间,当你在另一个RPN中使用这个vname时,直接用值来代换。
CDEF:vname=RPN expression
CDEF命令在内存中创建一组新的数据,RPN指令用来构建数学公式,得到的vname可以象DEF定义的变量一样使用。
问题主要针对DEF,后两个是构建于DEF定义的vname之上的。
问:对于某个DS(变量)可能有不同时间粒度的多个档案,作图是RRDtool取哪一个呢?
答:默认情况下,满足两个条件的RRA才能被选中:1、包含正确的DS(变量);2、RRA的 时间粒度(分辨率)合适。时间粒度可以用--step重置,默认数据的时间间隔是和作图的间隔一样,你可以通过修改起止时间来更改。如果数据的分辨率高于 图形的,数据进一步聚集,在DEF中定义的RRA的CF可以用来降低数据密度(:reduce=<CF>)。问:作图的起止时间和图片尺寸是不是随意定的?
答:可以随意定,但要做出理想的图,还是有些讲究的。图片尺寸400×200指水平方向有400个象素,竖直方向200个象素,理想情况下图中每个象素点与RRA中的CDP一致,这样你可以根据CDP的时间粒度和图片水平象素来确定作图的时间跨度。 例如:你的RRD有个RRA,分辨率 是每个CDP 1800秒,你建的图是400象素宽,跨度就应该是400×1800秒。
问:RRA的构建中时间粒度和保存的CDP数有没有规定?
答: 看你要做什么样的图来定义RRA,如果数据库每5分钟获得数据,你想要5分钟时间粒度,一整天的图,那么就是
RRA:AVERAGE:0.5:1:288
注意到288意味着保存了288个CDP,要是画图,最佳的水平尺寸是288象素,如果你做400的图,可想而知没有足够的数据,一个CDP就不只是一个象素了,图会有很多平的地方。所以多数人保存的笔数设为400+,不妨600吧。换句话说:你就别主观去定时间跨度了,时间跨度由水平象素和时间粒度的乘积算出来的,不应该是你定的,你要定的是时间粒度和图的尺寸。