微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

球衣应用中的测微仪 Prometheus 指标非弹簧

如何解决球衣应用中的测微仪 Prometheus 指标非弹簧

我有一个带有 Jersey REST 端点的 Web 应用程序 (war)。我正在与普罗米修斯/千分尺集成以生成指标。我在这里公开了“/metrics”端点

@Path("/metrics")
public class Metrics {
    private static final PrometheusMeterRegistry prometheusRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);

    static {
        new JvmGcmetrics().bindTo(prometheusRegistry);
        new JvmMemoryMetrics().bindTo(prometheusRegistry);
        new JvmCompilationMetrics().bindTo(prometheusRegistry);
        new JvmThreadMetrics().bindTo(prometheusRegistry);
    }
    @GET
    public String getMetrics() {
        return prometheusRegistry.scrape();
    }
}

我被困在如何生成 http 请求指标上。我找不到任何与获取这些指标相关的代码。有人可以帮我解决这个问题吗?

解决方法

作为 checketts 提议的替代方案,您可以使用 Micrometer 的 Jersey 服务器检测,它甚至在 1.0.0 发布之前就以 micrometer-jersey2 库的形式存在。您可以找到来源 here

您对此的入口点是可以在 Jerseys ResourceConfig 中注册的 MetricsApplicationEventListener。例如,您可以查看有关如何完成此操作的 test class

您还可以查看如何在 Spring Boot here 中集成/自动配置。

最后一个注意事项:Spring Boots 指标名称是 http.server.requests(以将它们与 HTTP 客户端请求指标区分开来),如果有一天您将迁移到 Spring Boot 或者您的平台已经在运行 Spring Boot 应用程序,那么您的非 Spring无需多说,启动 HTTP 请求指标将很好地匹配。

,

您需要包含一个 Filter 来记录通过的每个请求。请参阅 https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/servlet/WebMvcMetricsFilter.java 了解 Spring 是如何做到的。

如果可能,我建议不要使用 static 注册表,而是使用依赖注入。

以下是您可以在过滤器的 doFilter 方法中执行的操作的一个小示例

        long start = System.nanoTime()
        try {
            filterChain.doFilter(request,response);
            long durationNanos = System.nanoTime() - start;
            prometheusRegistry.timer("http.server.requests","status",response.getStatus().toString()).record(durationNanos,TimeUnit.NANOSECONDS)
        } catch (Exception ex) {
            //Equivalent exception timer recording
            throw ex;
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。