我已经从插件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(
希望,这回答了你的问题!