我有一个需要监控其指标的系统。为此,我使用 grafana + influxdb。我目前使用的 influxdb 版本是 0.9.x。
我希望能够计算一些统计数据。我的用例很简单:
- 我想从几个时间序列源中进行选择查询。
- 我想在 select 查询中使用 group by 语句来对我的数据进行分组。
- 最后,我想找到每个组内的平均值。
我的查询如下:
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 工具从多个时间序列源中选择数据、合并它们、按某些标准分组并对每个组应用聚合函数的方法是什么?