SpringBoot - Grafana 仪表板的 HTTP 响应状态代码的指标

问题描述

关于 Spring Boot 的小问题,以及如何获取 http 响应状态码并将其显示到 Grafana 中。

设置:2.5.1 版本的 Java SpringBoot 应用程序(与任何 SpringBoot 2.x.x 相关)。该应用程序具有执行器和千分尺依赖项。应用可以很好地生成普罗米修斯指标。

我对这个仪表板非常感兴趣:https 响应状态代码。不是经过的时间,不是计数,只是 http 状态代码响应(以 200、401、503 等响应)。由于依赖关系,我看到了这些指标!

http_server_requests_seconds

因此,我首先尝试了这个:

increase(http_server_requests_seconds{_ws_="my_workspace",_ns_="my_namespace",_source_="my_source",_bucket_="+Inf"}[15m])

这似乎产生了一些东西:

enter image description here

我能够看到一些 http 200 和一些 http 503。但出于某种原因,我不仅看到了一个 200,而且看到了一堆似乎已经过去的时间。

我的问题是,查询不正确?为了随着时间的推移获得不同的 http 状态代码响应,最合适的查询是什么?

最重要的是,代表 HTTP 状态代码响应差异的最佳可视化仪表板是什么?

谢谢

解决方法

Grafana 将为您在 Prometheus 查询中找到的每个不同标签添加一行。当您定义一个不包含所有不同标签的图例时,您将看到具有相同图例的多行。

increase(http_server_requests_seconds_count{}[1m]) 带有图例 {{status}}

example-same-legends

如果您删除图例的定义,您应该能够看到所有标签以确定哪些标签会创建重复值。

increase(http_server_requests_seconds_count{}[1m]) 没有图例定义:

example-1

如果您对查询进行更多限制,例如通过添加条件 {method="POST"},则行数也会减少:

example-2

另一种选择是汇总您的结果以消除标签。基于这个问题,您希望看到每个 HTTP 状态代码的总增加。这是我找到的一个很好的可视化方法的示例:

sum(increase(http_server_requests_seconds_count{}[1m])) by (status) 带有图例 {{status}}

example-aggregation