跨测量的 InfluxDB 数学

标签 influxdb

我的 InfluxDB 中有两个测量值,例如 mem_usedmem_ available
我尝试查询这些测量结果并进行数学计算

SELECT mean("mem_used_value") / mean("mem_available_value") FROM 
    (
     SELECT mean("value") AS "mem_used_value", 
            mean("value") AS "mem_available_value"
     FROM "dbname"."autogen"."mem_used",
          "dbname"."autogen"."mem_available"
     GROUP BY time(1m)
    )
GROUP BY time(1m)

查询的结果非常奇怪,我想知道 InfluxDB 是否可以跨测量执行数学运算。

我对此功能做了一些研究,发现了问题 3552 Mathematics across measurements仍在开放中。然而,这是三年前提出的要求。

有什么方法可以做到这一点吗?欢迎任何建议。

最佳答案

Influx QL 中没有 JOIN。

请记住:这不是关系数据库,查询语言可能看起来很熟悉,但它是完全不同的东西。

您可以执行以下操作。

1) 最明智、最合法的方法:正确塑造您的测量结果。

目前您没有:不应该有两个测量值,而应该有一个,例如(以 line protocol 表示法)

memusage,host=yourhost,othertag=something,yetanotertag=anything mem_used=123,mem_available=321 yourtimestamp

2) 使用Kapacitor完全加入您的测量结果。

在那里,您可以直接在 Kapacitor 中进行数学计算,或者简单地将连接结果写回到单个测量中,然后在普通的 InfluxQL 中进行聚合。

关于跨测量的 InfluxDB 数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53666199/

相关文章:

influxdb - 在 Grafana 上使用 InfluxDB 计算每秒请求数

python-3.x - 如何使用 influxdb-python 向 influxdb 发送正确的时间戳

java - 如何以编程方式从 InfluxDb 中删除测量值?

influxdb - Kapacitor .post() HTTP Post 到 url 不发送数据

docker - Docker容器通信而没有暴露端口

mysql - 如何从 MariaDB 迁移到 InfluxDB 日期时间到时间

kubernetes - 无法关闭Kubernetes中的InfluxDB

influxdb - 如何获取InfluxDB中Collectd测量的CPU使用率百分比

time - 如何查询InfluxDB以显示当前时间和日期?