如何在actuator prometheus中导入actuator httptrace?(执行器, Spring Boot ,grafana)

k4ymrczo  于 2023-05-28  发布在  Spring
关注(0)|答案(1)|浏览(147)

假设这是我的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值。

qf9go6mv

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/

相关问题