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 个端点,以显示在此下拉列表中。我如何实现这一目标?
在我的第一个仪表板上附上一张图片以供参考。
我们可以使用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 工作,这让我走上了这条路。