我在 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
结合不同标签下的聚合测量有点棘手。我设法找到了这篇有答案的帖子。
关键是使用子查询(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)
经过几周的尝试和错误后弄清楚了。我试图使用 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)
归档时间: |
|
查看次数: |
32898 次 |
最近记录: |