Influxdb 和 Grafana 结合多个 SELECT

Mik*_*ike 4 aggregate select

我在 Influx 中有一些网络计数器,我用 Grafana 绘制它们。

我正在尝试组合来自几个以太网接口的统计数据并将它们组合起来以显示总带宽。

这两个单独的查询独立工作,但我不知道如何编写它以将这两者结合起来。

SELECT 8 * non_negative_derivative(mean("value"), 1s ) 
FROM "inoctets" 
WHERE "host" = 'myhost1' AND $timeFilter 
GROUP BY time(1s) fill(null)

SELECT 8 * non_negative_derivative(mean("value"), 1s ) 
FROM "inoctets" 
WHERE "host" = 'myhost4' AND $timeFilter 
GROUP BY time(1s) fill(null)
Run Code Online (Sandbox Code Playgroud)

编辑:FWIW 我正在运行 Influx 1.1.1 和 Grafana 4.1.1

Mor*_*hit 6

结合不同标签下的聚合测量有点棘手。我设法找到了这篇有答案的帖子

关键是使用子查询(InfluxDB 1.2+)分别捕获每个标签的测量值。然后,由于字段名称相同,因此需要对其进行重命名。最后,您可以根据需要操作它们。这是你的例子:

SELECT 8 * (non_negative_derivative(mean("inoctets1"), 1s )
          + non_negative_derivative(mean("inoctets4"), 1s ))
AS "inbytestotal"
FROM (
    SELECT "value"
    AS "inoctets1"
    FROM "inoctets"
    WHERE "host" = 'myhost1' AND $timeFilter
), (
    SELECT "value"
    AS "inoctets4"
    FROM "inoctets"
    WHERE "host" = 'myhost4' AND $timeFilter
)
GROUP BY time(1s) fill(null)
Run Code Online (Sandbox Code Playgroud)

  • 这只会在分隔子查询的逗号上引发语法错误。Influx 1.5.2 每个子查询不需要在括号中,子查询整体没有括号。https://github.com/influxdata/influxdb/issues/8043#issuecomment-282062607 (2认同)

Mik*_*ike 2

经过几周的尝试和错误后弄清楚了。我试图使用 AND 而不是 OR。但在我将 SUM 添加到组合中之前,OR 不会给我正确的值。

所以对于未来的搜索者来说,这有效......

SELECT 8 * non_negative_derivative(sum("value"), 1s) 
FROM "inoctets" 
WHERE "host" = 'myhost1' OR "host" = 'myhost4' AND $timeFilter 
GROUP BY time($interval)
Run Code Online (Sandbox Code Playgroud)