RRDTool实践经验整理

在小米开发Falcon期间,经常要和rrdtool打交道。把了解到的一些 系统原理、使用经验&教训记录在这里。不定期更新。

fetch时RRA如何选择

这里讨论的是rrdtool的lib库接口,不是cmdline接口。rrdtool.fetch()时,如何选择RRA?

选择RRA的次序,如下(排在最前的,优先选择):

  1. 如果存在 时间完全匹配 的RRA,则选择 归档精度最高 的那个RRA;
  2. 如果不存在 时间完全匹配 的RRA,则选择 匹配时间段最长 的RRA; 如果 匹配时间段最长 的RRA有多个,选择其中 归档精度最高 的RRA。

关键因素: 时间匹配的长度归档精度。时间匹配的长度 优先级高于 归档精度。

eg. 假设数据上报周期为60s
RRA1(1, 60)    // 原始数据,保存60个点,覆盖的时间段[0min, 60min)
RRA2(5, 24)    // 5个点归为1个,保存24个点,覆盖的时间段[5min, 2h)
RRA3(30, 20)   // 30个点归为1个,保存20个点,覆盖的时间段[30min, 10h)  
 
now()=`12:00:00`, 数据已存储到了12:00:00这个时刻;假设数据在每个周期的起点被上报。
fetch([11:01, 12:00])           RRA1        
fetch([10:59, 12:00])           RRA2        
fetch([10:01, 12:00])           RRA2
fetch([10:59, 11:01])           RRA2        
fetch([09:59, 12:00])           RRA3        
fetch([02:01, 12:00])           RRA3        
fetch([01:59, 12:00])           RRA3        
fetch([00:00, 12:00])           RRA3  


Prev     Next