【问题标题】:Working around derivative(sum(value)) limitations in InfluxDB解决 InfluxDB 中的导数(总和(值))限制
【发布时间】:2015-12-30 15:29:59
【问题描述】:

我已经从进入 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-.*/ 等的所有值相加?

【问题讨论】:

  • 目前正在尝试更改提交脚本以包含适当的包含“abc1”、“abc2”的标记的解决方法。

标签: influxdb grafana


【解决方案1】:

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

不过,我建议在阅读 migrating 之前阅读 differences between 0.8 and 0.9。它们很重要,而且迁移也很重要。等待官方 0.9.5 发布以获得最佳体验。

如果您准备好开始使用,新的存储引擎已包含在最新的夜间版本中。

【讨论】:

  • 您对按正则表达式或等效方法进行分组有什么建议吗?
  • Simon,不能在 GROUP BY 子句中使用正则表达式。但是,我认为您需要通过在 WHERE 子句中使用正则表达式并简单地按标签进行分组来完成。
猜你喜欢
  • 2020-11-03
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多