Prometheus Grafana 模板按计数排序

niz*_*.sp 2 grafana prometheus

我正在尝试为每个 API 端点放置一个下拉列表,它将显示 http 请求的 QPS 和延迟(RED 指标)。

我使用了 Grafana 的模板并使用了以下 prometheus 查询。

label_values(http_duration_milliseconds_count, api_path)
Run Code Online (Sandbox Code Playgroud)

但这里的问题是排序顺序。它显示了一些长尾 api 请求,如 /admin/phpMyAdmin all。

我只想按计数显示前 10 个端点,以显示在此下拉列表中。我如何实现这一目标?

在我的第一个仪表板上附上一张图片以供参考。

在此处输入图片说明

niz*_*.sp 5

我们可以使用query_result来实现这一点。 http://docs.grafana.org/features/datasources/prometheus/#query-variable

query_result(topk(10, sort_desc(sum(http_tt_ms_count) by (api_path))))
Run Code Online (Sandbox Code Playgroud)

http_tt_ms_count - 是我的普罗米修斯公制时间序列和时间。

api_path - 是我的标签名称

这个 query_result 将给出这样的三元组值。

{api_path="/search/query"} 25704195 1507641522000
Run Code Online (Sandbox Code Playgroud)

使用查询路径中的Regex字段仅获取 api 名称。

*api_path="(.*)".*
Run Code Online (Sandbox Code Playgroud)

这看起来很远,但

label_values((topk(10, sort_desc(sum(http_tt_ms_count) by (api_path)))), api_path) 
Run Code Online (Sandbox Code Playgroud)

不在 grafana 工作,这让我走上了这条路。