3

我有一个需要监控其指标的系统。为此,我使用 grafana + influxdb。我目前使用的 influxdb 版本是 0.9.x。

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

  1. 我想从几个时间序列源中进行选择查询。
  2. 我想在 select 查询中使用 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 工具从多个时间序列源中选择数据、合并它们、按某些标准分组并对每个组应用聚合函数的方法是什么

4

1 回答 1

4

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

正如我在邮件列表中回复的那样,您需要正确构建您的架构。

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

不同测量下的系列不能合并为一个结果。

您有许多测量值,每个测量值都有一个系列。你应该有几个测量,每个测量有很多系列。请参阅0.8 与 0.9 文档

于 2015-10-22T18:46:56.880 回答