如何通过普罗米修斯查询将二除以计算百分比
How to divide two by prometheus queries to calculate a percentage
我有两个不同的指标,它们的标签都是 client_app
。
一个指标是一个直方图,它计算给定时间跨度内失败请求的数量(即,最后一分钟有 10 个请求失败),另一个指标是一个计数器,每个请求都会递增。
我想将这两个指标相除以获得每个 client_app
的失败请求百分比
这是我目前的尝试
avg by (client_app) (max(rate(ignored_events_sum[5m])) / sum(rate(total_app_events[5m])))
这只输出一个图,而我希望每个图一个 client_app
试试这个:
max by (client_app) (rate(ignored_events_sum[5m])) / sum by (client_app) (rate(total_app_events[5m]))
默认情况下,Prometheus 根据these docs 对/
左右两侧具有相同标签集的时间序列对进行划分。如果 /
左右两侧的时间序列包含不同的标签集,那么 on()
和 group_left()
修饰符可能会有所帮助:
on()
修饰符限制标签,用于搜索匹配的时间序列对。例如 a / on(client_app) b
将搜索来自 a
和 b
且仅具有相同 client_app
标签的时间序列对。
group_left()
修饰符允许将多个时间序列与 /
左侧的给定标签集与 [=11= 右侧的单个时间序列匹配].
查看有关这些修饰符的更多详细信息in these docs。
所以原始问题的解决方案是以下 PromQL 查询:
rate(ignored_events_count[5m])
/ on (client_app) group_left()
rate(total_app_events[5m])
它将 per-seconds 每个名称为 ignored_events_count
的时间序列的比率除以名称为 total_app_events
的时间序列的 per-second 比率与匹配的 client_app
标签值。
我有两个不同的指标,它们的标签都是 client_app
。
一个指标是一个直方图,它计算给定时间跨度内失败请求的数量(即,最后一分钟有 10 个请求失败),另一个指标是一个计数器,每个请求都会递增。
我想将这两个指标相除以获得每个 client_app
的失败请求百分比这是我目前的尝试
avg by (client_app) (max(rate(ignored_events_sum[5m])) / sum(rate(total_app_events[5m])))
这只输出一个图,而我希望每个图一个 client_app
试试这个:
max by (client_app) (rate(ignored_events_sum[5m])) / sum by (client_app) (rate(total_app_events[5m]))
默认情况下,Prometheus 根据these docs 对/
左右两侧具有相同标签集的时间序列对进行划分。如果 /
左右两侧的时间序列包含不同的标签集,那么 on()
和 group_left()
修饰符可能会有所帮助:
on()
修饰符限制标签,用于搜索匹配的时间序列对。例如a / on(client_app) b
将搜索来自a
和b
且仅具有相同client_app
标签的时间序列对。group_left()
修饰符允许将多个时间序列与/
左侧的给定标签集与 [=11= 右侧的单个时间序列匹配].
查看有关这些修饰符的更多详细信息in these docs。
所以原始问题的解决方案是以下 PromQL 查询:
rate(ignored_events_count[5m])
/ on (client_app) group_left()
rate(total_app_events[5m])
它将 per-seconds 每个名称为 ignored_events_count
的时间序列的比率除以名称为 total_app_events
的时间序列的 per-second 比率与匹配的 client_app
标签值。