2015-10-21 74 views
2

我有一个系统需要监控其指标。为了做到这一点,我使用grafana + influxdb。我目前使用的influxdb版本是0.9.x.influxdb中合并时间系列0.9.x

我想能够计算一些统计数据。我的用例很简单:

  1. 我想从几个时间序列源中进行选择查询。
  2. 我想在选择查询中使用group by语句来获取我的数据分组。
  3. 最后,我想找到每个组内的平均值。

我的查询如下:

SELECT mean(value) FROM /namespaces_.*.amount/ where time < "2015-10-21T14:16:18Z" group by time(1m); 

它接缝微不足道的,但它是一个有点棘手。我得到的是这样的:

name: namespaces_1.amount 
------------------------------------------------------------ 
time   mean 
1970-01-01T00:00:00Z 0.8877630461283463 

name: namespaces_2.amount 
------------------------------------------------------------ 
time   mean 
1970-01-01T00:00:00Z 0.6982870635693408 

根据influxdb文档你能够抓住从多个来源的数据,换句话说,你可以写后多个数据序列FROM关键字。而我想合并他们和我的合并系列处理。在influxdb 0.8.x中有merge函数,它使您能够混合数据源。 但是,在influxdb 0.9.x中,既没有合并也没有连接操作。

编号:https://influxdb.com/docs/v0.9/concepts/08_vs_09.html

在InfluxDB 0.9既不是MERGE也不JOIN操作支持。 MERGE操作不再需要。在查询时, 度量内的所有系列都会自动合并,除非WHERE子句中的标签排除了 。

所以,当你写

SELECT mean(value) FROM merge(/namespaces_.*.amount/) where time < "2015-10-21T14:16:18Z" group by time(1m); 

你得到空的结果......

因此,我的问题是:什么是选择从多个时间序列数据源的数据的方式,合并他们按照一些标准进行分组,并使用influxdb 0.9.x的工具对每个组应用聚合函数?

回答

2

从多个时间序列来源选择数据,合并它们,按照某些标准进行分组,并使用influxdb 0.9.x的工具将聚合函数应用到每个组是什么方法?

您需要正确构建您的模式,因为我在mailing list上进行了响应。

在InfluxDB 0.9中,默认情况下,给定度量下的所有系列都会合并,并使用WHERE子句中的过滤使用标签。

不同测量下的系列不能合并成单个结果。

您有许多测量,每个系列都有一个系列。每个系列都应该有很少的测量。请参阅0.8 vs 0.9 docs

+0

正在编写JOIN在0.12版本中仍然不可能的测量? – marbel