假设这是我的http://localhost:8080/actuator输出:
{
"_links": {
"self": {
"href": "http://localhost:8080/actuator",
"templated": false
},
"health": {
"href": "http://localhost:8080/actuator/health",
"templated": false
},
"prometheus": {
"href": "http://localhost:8080/actuator/prometheus",
"templated": false
},
"httptrace": {
"href": "http://localhost:8080/actuator/httptrace",
"templated": false
}
}
}
现在我已经把我的prometheus环境连接到/actuator/prometheus
上,工作正常。我也想让prometheus读取我的httptrace,所以我也添加了/actuator/httptrace
到我的prometheus配置。然而,这并不起作用。httptrace端点上的格式是json格式,prometheus中的格式是yaml格式,我想我需要prometheus yaml中的httptrace。普罗米修斯吃山药就好了,吃json就不行了。
我如何从我的spring Boot 项目传递我的httptrace到actuator/prometheus?最后,我的目标是为grafana中的每个请求获取timeTaken值。
1条答案
按热度按时间qf9go6mv1#
Spring的HttpTraceRepository将最近的跟踪暴露在端点上,而不是在prometheus中作为百分位数。所以我可以建议两条路:
1.您可以实现自己的
HttpTraceRepository
,它封装了您正在使用的HttpTraceRepository
(默认值是InMemory...),然后覆盖该方法,从[io.micrometer.core]中触发一些自定义Timer
,计时(https://micrometer.io/docs/concepts#timers),如果您也通过www.example.com启用,则会将其聚合为百分位数https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.metrics.customizing.per-meter-properties最后,我的目标是为grafana中的每个请求获取timeTaken值。
1.**只需使用每个端点捕获的http_server_requests_seconds**(不是请求)
http_server_requests_seconds_count
是应用程序在此端点接收的请求总数
http_server_requests_seconds_sum
是应用程序在此端点收到的每个请求的持续时间总和
这篇很棒的文章解释了如何在prometheus中使用它,https://tomgregory.com/spring-boot-default-metrics/