1

我已经从进入 InfluxDB 0.8.8 的对象存储中读取和写入字节计数器(很高兴为 0.9 提供有效的答案。在升级之前等待不同的存储引擎)

数据由服务器和设备收集,因此例如数据点可能具有:

timestamp: ...
server: abc1-oss1
disk: disk_id1
read_bytes: a counter

abc\d+ 和 -oss\d+ 中有一系列 ID,例如,abc14-oss5、abc1-oss1、abc8-oss12 都是有效的主机名。

我想做的是为所有不同的 abc\d+-* 组提供一个概述。查看者会选择“abc2”并获得与 abc2-* 匹配的所有主机上的所有磁盘总和的导数(因为它是一个不断增加的计数器)。

虽然我可以将特定主机的总和放入初始数据插入中,但我不能对 abc2-oss* 中的十几个主机执行此操作

在 grafana 中,我可以使用正则表达式执行模板变量,以将可能的 abc\d+ 值提取到名为 $Area 的变量中,然后:

select sum(value) from "read_bytes" where $timeFilter and hostname =~ /$Area.*/ group by time($interval) order asc

这给了我每个区域的读取总和,但我不能调用导数(),因为导数(总和(值))在 InfluxDB 中无效:

select derivative(sum(value)) from ... 

“无法评估类型 &{sum 10 [oxc21648f220] false} 的值”

我假设这意味着我需要在 InfluxDB 中进行连续查询来计算总和,然后将导数()调用放在结果测量上。我将如何对部分列值执行此操作,以便将 、 等的所有值hostname =~ /abc1-.*/相加hostname =~ /abc2-.*/

4

1 回答 1

1

DERIVATIVE(SUM(value))在 InfluxDB 0.9 中有效,它仍然支持FROM子句中的正则表达式匹配。

但是,我建议在迁移之前阅读0.8 和 0.9 之间的差异。它们很重要,而且迁移也很重要。等待官方 0.9.5 发布以获得最佳体验。

如果您准备好深入研究,新的存储引擎是最新的夜间版本。

于 2015-10-08T00:33:17.067 回答