您的位置:首页 > 其它

RRD文件格式分析(一)

2009-06-08 16:37 155 查看
一、
文件格式:

RRD文件大体格式如下

数据结构: typedef struct rrd_t { /*整个rrd文件结构*/    stat_head_t      *stat_head;          /* 静态头部信息*/      ds_def_t         *ds_def;            /* 数据源定义列表*/      rra_def_t        *rra_def;            /* RRA定义列表 */     live_head_t      *live_head;                /*活动头部*/      pdp_prep_t       *pdp_prep;          /* pdp数据区域 */        cdp_prep_t       *cdp_prep;           /* cdp数据区域 */     rra_ptr_t        *rra_ptr;            /* RRA指针列表 */     rrd_value_t      *rrd_value;          /* 真实数据区域 */} rrd_t;下面分别详细介绍RRD头部区域和RRD数据区域:1.RRD头区域:a)        RRD头区域包括:  i.     静态头部:    数据结构:       typedef struct stat_head_t {        char             cookie[4];    //“RRD”        char             version[5];    //RRD版本信息                double           float_cookie;  //        unsigned long    ds_cnt;        //(DS)数据源的个数        unsigned long    rra_cnt;        //RRA个数                unsigned long    pdp_step;       //数据插入间隔        unival           par[10];              } stat_head_t;说明:重要的信息要素:ds_cnt-数据源个数:该数据值是在创建RRD文件的 时候获取到,作用为标识该RRD文件有多少个DS。rra_cnt-RRA个数:该数据值是在创建RRD文件的时候获取到,作用为标识该RRD文件有多少RRA。pdp_step-间隔时间:期望多长时间接受到数据。该数据值是在创建RRD文件的时候获取到。举例:RRD文件命令如下所示:Rrdtool create first.rrd –start N --step 1  /DS:fir:COUNTER:2:U:U  /DS:sec:GAUGE:2:U:U /RRA:AVERAGE:0.5:1:60 /RRA:MAX:0.5:60:60 /RRA:MIN:0.5:3600:24 /RRA:LAST:0.5: 86400:7 /命令说明:命令的格式请参考相关的RRD文档,这里我们只针对相关上面的数据结构进行解释ds_cnt   = 2;rra_cnt   = 4;pdp_step = 1; ii.             DS定义域:数据结构:typedef struct ds_def_t {char    ds_nam[DS_NAM_SIZE];  //数据源名称char    dst[DST_SIZE];          //数据源类型unival   par[10];                } ds_def_t;说明:ds_nam:数据原名称。在创建的时候指定。dst:数据源类型。创建时指定。ds_def [0].ds_nam = firds_def [0].dst    = COUNTERds_def [1].ds_nam = secds_def [1].dst    = GAUGE  iii.              RRA定义域:数据结构:typedef struct rra_def_t {   char          cf_nam[CF_NAM_SIZE];  //CF(合并类型)   unsigned long  row_cnt;                //RRA行数   unsigned long  pdp_cnt;                //pdp个数   unival        par[MAX_RRA_PAR_EN];            } rra_def_t;说明:cf_nam:合并数据的类型。(PDP数据合成CDP数据时的类型)例如:RRA1.Rrdtool create first.rrd –start N --step 1  /DS:fir:COUNTER:2:U:U  /DS:sec:GAUGE:2:U:U /RRA:AVERAGE:0.5:1:60 /RRA:MAX:0.5:60:60 /RRA:MIN:0.5:3600:24 /RRA:LAST:0.5: 86400:7 /将60个,间隔时间为1s的数据(PDP)合成,计算其60个中最大的作为该RRA中的数据源(DS)的计算值进行存储。row_cnt:RRA的行数(每一行有所有数据源的数据)pdp_cnt:该RRA在合并数据时所占用的pdp数量。rra_def_t [0]. cf_nam = AVERAGErra_def_t [0]. row_cnt = 60rra_def_t [0]. pdp_cnt = 1rra_def_t [1]. cf_nam = AVERAGErra_def_t [1]. row_cnt = 60rra_def_t [1]. pdp_cnt = 60rra_def_t [2]. cf_nam = AVERAGErra_def_t [2]. row_cnt = 24rra_def_t [2]. pdp_cnt = 60*60rra_def_t [3]. cf_nam = AVERAGErra_def_t [3]. row_cnt = 7rra_def_t [3]. pdp_cnt = 60*60*24小节:

根据上面的分析,到现在应该清楚了RRD文件中RRA和DS的具体关系了。具体如下:[code]
[/code]
rrd
文件格式大体分为两部分:

1.文件头信息区:
该区域包含一些版本信息和一些于数据存储区相关的一些信息。例如:RRD的版本号,DS数量,DS名称,DS类型,RRA数量,RRA类型,PDP数据区,CDP数据区,最后更新时间,RRA目前更新到的位置等等信息。
2.数据存储区:

该区域存储了实际的数据。数据的来源是根据在创建RRD文件时DS的类型及相关RRA定义,并通过相关的计算得出的(CF,DST)。注意:数据源(DS)是存储的实体,而RRA是数据存储的载体。在逻辑上,每个RRA都有所有DS的数据(计算)。 RRA和DS的关系如下图所示:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: