如果我选择更宽的时间范围,石墨,数据点就会消失

时间:2014-04-29 18:14:18

标签: graphite

如果我要求这些数据:

https://graphite.it.daliaresearch.com/render?from=-2hours&until=now&target=my.key&format=json

除了其他数据点之外,我得到了这个:

[
  2867588,
  1398790800
]

如果我要求这些数据:

https://graphite.it.daliaresearch.com/render?from=-10hours&until=now&target=my.key&format=json

数据点看起来像这样:

[
  null,
  1398790800
]

当我选择更宽的时间范围时,为什么此数据点正在无效

更新

我看到,对于小于7小时的选定日期范围,数据点的分辨率 每10秒且选择的日期范围为7小时或分辨率越大,每1分钟一个数据点 ..并继续这个方向,因为选择的日期范围越来越大,每10分钟一个数据点等等。

因此,当数据点的分辨率是每10秒数据存在时,当分辨率为每1分钟或更长时间,则数据点不具有值:/

我每1小时发送一个数据点,可能与分辨率配置冲突,而我每小时只发送一个数据点

2 个答案:

答案 0 :(得分:11)

这里发生了一些事情,但基本上问题是你的石墨配置错误(或者至少是以一种让你做不想要的事情的方式配置它)。

具体来说,您应该在storage-aggregation.conf文件中设置xFilesFactor = 0.0。既然你是新手,你可能只想要这个(我的是/opt/graphite/conf/storage-aggregation.conf):

[default]
pattern = .*
xFilesFactor = 0.0
aggregationMethod = average

石墨文档描述xFilesFactor如下:

  

xFilesFactor应该是介于0和1之间的浮点数,并指定先前保留级别的槽的哪一部分必须具有非空值才能聚合为非空值。默认值为0.5。

但是等等!这不会改变现有的统计数据!在创建度量标准时,每个度量标准设置一次这些聚合设置。由于您是新手,最简单的方法就是转到您的耳语目录并删除之前的数据并重新开始:

cd /opt/graphite/storage/whisper/my/
rm key.wsp

你的root whisper目录可能会有所不同,具体取决于平台等。删除数据文件后,graphite应该在下一个度量标准写入时自动重新创建它们,并且它们应该获得更新的设置(不要忘记在更改存储后重新启动carbon-cache -aggregation settings)。

或者,如果您需要保留旧数据,则需要针对带有--xFilesFactor = 0.0的私语(.wsp)数据文件运行whisper-resize.py,并且还可能需要存储架构中的所有保留设置.conf(也可以whisper-info.py查看)

最后,我应该补充一下你在第一个查询中获得非空数据的原因,但是你的第二个数据中的空数据是因为石墨将尝试根据时间选择最佳可用保留期来从中提供请求你要求的窗口。对于较小的窗口,石墨决定使用最高精度的数据(即非聚合)来满足您的要求,因此您可以看到原始指标。对于更长的时间窗口,graphite发现高精度,非聚合数据不可用于整个窗口 - 这些时间段在storage-schemas.conf中配置 - 因此它跳到下一个最高精度的数据集可用(即第一个聚合层)并仅返回聚合数据。由于您的聚合配置正在写入空数据,因此您会看到空指标!所以修复聚合,你应该修复空数据问题。但请记住,graphite在单个请求/响应中从不组合聚合层,因此,当您更改所有内容时,无论何时您发现同一查询的结果之间的差异是from / to params,问题几乎总是由于聚合配置。 / p>

答案 1 :(得分:2)

我不太确定你的具体情况,但我想我可以给你一些一般的指示。

首先,您根据时间范围改变分辨率是正确的。这是在storage-schemas.conf中配置的,用于在大量时间内存储数据时节省空间。一个例子可以是:15s:7d,1m:21d,15m:5y,意味着15天的分辨率为7天,然后是1分钟的分辨率为21天,然后是15分钟为5年。

然后就是Graphite从一种分辨率到另一种分辨率的实际聚合方式。这在以下位置配置:storage-aggregation.conf。默认设置为:xFilesFactor = 0.5和aggregationMethod = average。 xFilesFactor设置表示先前保留级别中至少50%的插槽必须具有下一个保留级别的值才能包含聚合。 aggregationMethod表示先前保留级别中的所有插槽值将通过平均值组合。我的猜测是你的统计数据没有足够的数据点来满足50%的要求,导致空值。

有关详细信息,请查看文档,它们非常完整:http://graphite.readthedocs.org/en/latest/config-carbon.html