如何将此查询 influxdb "error rate"更改为"success rate"以显示在 grafana 上?



我已经从插件grafana下载了仪表板,只显示错误率,我从面板中找到了查询错误率。 我计划修改一点查询以在 Grafana 仪表板上显示成功率。 如果您不介意,请帮助我修改查询

我已经修改了

SELECT sum("count") FROM "$measurement_name" WHERE ( "application" =~ /^$application$/ AND "statut" = 'ok')  AND $timeFilter GROUP BY time($__interval) fill(null)

这是来自插件 grafana 的原始查询。

SELECT sum("error") / sum("all") FROM (SELECT sum("count") AS "all" FROM "$measurement_name" WHERE "transaction" = 'all' AND "application" =~ /^$application$/ AND $timeFilter GROUP BY time($__interval) fill(null)), (SELECT sum("countError") AS "error" FROM "$measurement_name" WHERE "transaction" = 'all' AND "application" =~ /^$application$/ AND $timeFilter GROUP BY time($__interval) fill(null))

我预计输出成功率为 80%,但实际输出为 216400.00%

您应该能够在没有子查询的情况下完成此操作。 首先尝试这样的事情,以确保计数和计数错误是您所期望的:

SELECT sum("count"),sum("countError") 
FROM "$measurement_name" 
WHERE "transaction" = 'all' AND "application" =~ /^$application$/ AND $timeFilter 
GROUP BY time($__interval) fill(null)

然后,您可以发出单个查询来划分它们:

SELECT sum("count")/sum("countError") 
FROM "$measurement_name" 
WHERE "transaction" = 'all' AND "application" =~ /^$application$/ AND $timeFilter 
GROUP BY time($__interval) fill(null)

我也在寻找成功率%,所以在获得了一些关于"AS"和"子查询"的知识后,我能够解决。

成功率 % 的公式:(请求总数/通过的请求总数(* 100

您的问题的答案是以下查询:

    SELECT sum("success") / sum("all") FROM (SELECT sum("count") AS "all" FROM "$measurement_name" WHERE "transaction" = 'all' AND "application" =~ /^$application$/ AND $timeFilter GROUP BY time($__interval) fill(null)), (SELECT sum("count")-sum("countError")  AS "success" FROM "$measurement_name" WHERE "transaction" = 'all' AND "application" =~ /^$application$/ AND $timeFilter GROUP BY time($__interval) fill(null))

在这里,第二个查询获取"通过的请求总数",并使用"AS"将查询别名为"成功"。

    (SELECT sum("count")-sum("countError")  AS "success" FROM "$measurement_name" WHERE "transaction" = 'all' AND "application" =~ /^$application$/ AND $timeFilter GROUP BY time($__interval) fill(null))

其中,第一个查询获取"总请求数",并使用"AS"将查询别名为"all"。

    (SELECT sum("count") AS "all" FROM "$measurement_name" WHERE "transaction" = 'all' AND "application" =~ /^$application$/ AND $timeFilter GROUP BY time($__interval) fill(null))

现在,查询的初始部分:

   SELECT sum("success") / sum("all")

实际上将上面提到的两个查询分开:请求总数/通过的请求总数"*100"可以在 grafana 图表的"可视化"部分完成,方法是选择单位:百分比(0.0-0.1(

希望,这回答了你的问题!

最新更新