当前位置: 首页 > 知识库问答 >
问题:

球衣应用中的千分尺Prometheus指标(非Spring)

陶锋
2023-03-14

我有一个带有Jersey RESTendpoint的web应用程序(war)。我正在与prometheus/micrometer集成以生成度量。我在这里公开了“/metrics”endpoint

@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请求度量上。我找不到任何与获取这些指标相关的代码。有人能帮我吗?

共有2个答案

刁越
2023-03-14

您需要包含一个过滤器,以便在收到每个请求时记录该请求。请参阅 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如何做到这一点。

如果可能的话,我建议不要使用< code>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;
        }
狄河
2023-03-14

作为检查所建议的替代方案,您可以使用甚至在1.0.0版本之前以micromet-jersey2库的形式存在的Microeter的泽西服务器检测。您可以在这里找到源代码。

您的入口点是MetricsApplicationEventListener,它可以在JerseyResourceConfig中注册。例如,您可以查看测试类,了解如何实现这一点。

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

最后一点:Spring启动指标名称是 http.server.requests(以区别于 HTTP 客户端请求指标),如果有一天您将迁移到Spring启动,或者您的平台已经在运行Spring启动应用程序,则您的非Spring启动 HTTP 请求指标将很好地匹配,事不宜迟。

 类似资料:
  • 我正在将JavaSpring项目从java 8迁移到java 11。所以我需要将dropwizard指标替换为千分尺。Dropwizard指标记录到达特定endpoint时的状态和响应。例如:endpoint- 有没有办法在千分尺中实现相同的效果?我知道有注释,但由于某种原因它不起作用。(我把它放在endpoint方法上)。 我的属性文件(仅与指标相关的值):

  • 所以我试着在Spring靴2上使用测微计。X向普罗米修斯记录指标。我在gradle中添加了依赖项: 然后我尝试添加任何指标,例如: 当我去localhost:端口/执行器/普罗米修斯我可以看到一些指标,如: 但我加上的计时器、仪表或计数器什么都没有。我通过代码对自己进行了调试,我可以看到代码已经执行,当我查看compositeRegistry对象时,我可以看到一些可用的东西,即使我没有看到值中任何

  • 我有一个应用程序,其中包含2打Spring批处理cronjobs.There没有Rest控制器,因为它是一个分析应用程序,它每天运行,从数据库读取数据,处理它,然后将聚合数据存储在另一个数据库中。我想使用千分尺对作业进行Spring内置度量,并将它们推送到Prometheus。由于我的应用程序不是网络服务器应用程序,所以千分尺仍然会在HOST: 8080上发布结果?执行器会自动在HOST: 808

  • 我正在将一个微服务更新到spring Boot2,并将度量标准从dropwizard迁移到Micrometer。我们正在使用普罗米修斯来存储度量标准,并使用格拉法纳来显示它们。我想测量每秒对所有URL的请求。千分尺文档说明:

  • 有没有办法关闭执行器/千分尺中的一些返回的度量值?现在看着它们,我看到大约1000个,并想将它们缩减到精选的几个,比如100个,以便实际发送到我们的注册表。

  • 我对Spring很陌生,正在尝试将我的应用程序连接到麋鹿。该应用程序运行的是Spring boot 1.5.5,因此我使用的是微米遗产。我的pom看起来像这样: 每当我尝试启动我的应用程序时,我都会收到以下错误: 根本原因似乎是类io.micrometer.core.instrument.config.validate.Validated它似乎没有像它应该的那样出现在包中。对此有什么想法吗?