按类别划分的 Promql 成功百分比
Promql percent successes by category
我有一个带有标签“success_or_failure”的仪表,其值为“成功”和“失败”。我想在 graphana 中创建一个图表,显示按另一个标签“类别”细分的成功百分比。这个想法是查看每个类别随时间推移的“成功百分比”。
我想要的 promql 应该是这样的:
avg by (category)
(event_gauge{success_or_failure="success"} /
ignoring(success_or_failue) group_right event_gauge)
当我这样做时,每个图表元素都等于 1。这让我相信我做错了。我在这里做错了什么?
Prometheus 只会在您列出的 PromQL 查询中使用您最后存储的值。 PromQL 查询始终基于您的指标的最后一个值。
你可以做一个
sum_over_time(event_gauge{success_or_failure="success"}[1h]) /
count_over_time(event_gauge{success_or_failure="success"}[1h])
得到你想要的。
但实际上,数据没有很好地建模以用于 Prometheus。你应该考虑为此使用计数器。
带有 event_counter{category="xyz", status="success"}
和 event_counter{category="xyz", status="failure"}
的内容。并让您的检测代码根据事件增加当前计数器。
让 Prometheus 抓取您计数器的最新状态。
那你可以做
avg by (category)
(sum without (status) (event_counter{category="xyz", status="success"})
/
sum without (status) (event_counter{category="xyz"}))
P.S。我还没有对它进行全面测试,所以可能会有轻微的语法错误,但最重要的是看看你是否可以将它建模为计数器而不是仪表。
我有一个带有标签“success_or_failure”的仪表,其值为“成功”和“失败”。我想在 graphana 中创建一个图表,显示按另一个标签“类别”细分的成功百分比。这个想法是查看每个类别随时间推移的“成功百分比”。
我想要的 promql 应该是这样的:
avg by (category)
(event_gauge{success_or_failure="success"} /
ignoring(success_or_failue) group_right event_gauge)
当我这样做时,每个图表元素都等于 1。这让我相信我做错了。我在这里做错了什么?
Prometheus 只会在您列出的 PromQL 查询中使用您最后存储的值。 PromQL 查询始终基于您的指标的最后一个值。
你可以做一个
sum_over_time(event_gauge{success_or_failure="success"}[1h]) /
count_over_time(event_gauge{success_or_failure="success"}[1h])
得到你想要的。
但实际上,数据没有很好地建模以用于 Prometheus。你应该考虑为此使用计数器。
带有 event_counter{category="xyz", status="success"}
和 event_counter{category="xyz", status="failure"}
的内容。并让您的检测代码根据事件增加当前计数器。
让 Prometheus 抓取您计数器的最新状态。
那你可以做
avg by (category)
(sum without (status) (event_counter{category="xyz", status="success"})
/
sum without (status) (event_counter{category="xyz"}))
P.S。我还没有对它进行全面测试,所以可能会有轻微的语法错误,但最重要的是看看你是否可以将它建模为计数器而不是仪表。