跨测量的InfluxDB数学

时间:2018-12-07 08:58:20

标签: 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仍然存在。但是,这是三年前提出的要求。

有没有办法做到这一点?任何建议都欢迎。

1 个答案:

答案 0 :(得分:2)

Influx QL中没有JOIN。

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

这是您可以做的。

1):最聪明,最合法的方法:正确调整测量尺寸。

当前您没有:应该不应该进行两次测量,而应该像line protocol表示那样进行一次测量

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

2)使用Kapacitor完全合并您的测量。

在那里,您可以直接在Kapacitor中进行数学运算,也可以简单地将联接的结果写回到单个度量中,然后在纯InfluxQL中进行汇总。