0

我使用 Telegraf 收集数据,然后将其写入 InfluxDb。我想将数据汇总到一行中。据我所知,Telegraf 有很多插件,包括聚合数据的插件。我BasicStats Aggregator Plugin用于我的目的。但它有意想不到的行为(对我来说出乎意料)。它按标签聚合行,但我只需要按时间戳聚合。我怎样才能让这个插件只通过它们的时间戳来聚合行?例如,我有以下行:

timestamp=1 tag1=foo field1=3

timestamp=1 tag1=bar field1=1

timestamp=1 tag1=baz field1=4

对于他们,我想获得以下汇总行:

timestamp=1 sum=8

先感谢您

4

1 回答 1

0

我相信由于 InfluxDB 的性质,您无法使用 Telegraf 的传统处理器或聚合器(如 BasicStats )按时间戳进行聚合。它是一个时间序列数据库,并按时间索引。但是您可以使用 InfluxDB 查询聚合数据:

SELECT mean("field1") FROM "statsdemo"."telegraf"."my_metric" WHERE time > now()-5m AND time < now() GROUP BY time(2000ms) FILL(null)

另一种方法可能是使用execd aggregator。只需使用 bash 或您喜欢的从 STDIN 读取的编程语言编写脚本,按时间戳聚合数据,然后按照流入线协议将结果打印到 STDOUT。我以前从未使用过这个聚合器,但我认为它可能会起作用。

于 2021-09-20T19:46:48.353 回答