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

Spring Boot千分尺/Prometheus没有记录我添加的任何指标

常自强
2023-03-14

所以我试着在Spring靴2上使用测微计。X向普罗米修斯记录指标。我在gradle中添加了依赖项:

implementation 'io.micrometer:micrometer-registry-prometheus:latest.release'

然后我尝试添加任何指标,例如:

CompositeMeterRegistry compositeRegistry = new CompositeMeterRegistry();
PrometheusMeterRegistry prometheusMeterRegistry =
    new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
compositeRegistry.add(prometheusMeterRegistry);
long start = System.currentTimeMillis();

doSomething();

long duration = System.currentTimeMillis() - start;

Timer timer =
    Timer.builder("test.times")
        .publishPercentiles(0.5, 0.75, 0.95)
        .maximumExpectedValue(Duration.ofSeconds(15))
        .minimumExpectedValue(Duration.ofSeconds(15))
        .register(compositeRegistry);
timer.record(duration, TimeUnit.MILLISECONDS);
compositeRegistry.timer("test.times.new").record(duration, TimeUnit.MILLISECONDS);
AtomicInteger test = compositeRegistry.gauge("custom.gauge", new AtomicInteger(8));
test.set(30);
Counter counter = compositeRegistry.counter("custom.counter");
counter.increment();

当我去localhost:端口/执行器/普罗米修斯我可以看到一些指标,如:

# HELP jvm_gc_pause_seconds Time spent in GC pause
# TYPE jvm_gc_pause_seconds summary
jvm_gc_pause_seconds_count{action="end of minor GC",cause="Metadata GC Threshold",} 1.0
jvm_gc_pause_seconds_sum{action="end of minor GC",cause="Metadata GC Threshold",} 0.045
jvm_gc_pause_seconds_count{action="end of minor GC",cause="G1 Evacuation Pause",} 2.0
jvm_gc_pause_seconds_sum{action="end of minor GC",cause="G1 Evacuation Pause",} 0.036

但我加上的计时器、仪表或计数器什么都没有。我通过代码对自己进行了调试,我可以看到代码已经执行,当我查看compositeRegistry对象时,我可以看到一些可用的东西,即使我没有看到值中任何度量的任何结果:

我是否缺少需要配置的内容?或任何实施问题?

共有2个答案

公良阳波
2023-03-14

好吧,我现在解决了这个问题,但也许不是最好的办法。我删除了CompositeMeterRegistry,并将计时器直接添加到globalRegistry:

Timer timer = Timer.builder(name)
                   .publishPercentiles(0.5,0.75,0.95)
                   .register(Metrics.globalRegistry);
timer.record(1L, TimeUnit.SECONDS);

这将在Prometheusendpoint以及JConsole中显示我想要的信息。

朱高丽
2023-03-14

您需要注入仪表注册表,以便您使用的注册表与Prometheusendpoint中使用的注册表相同

 类似资料:
  • 我有一个带有Jersey RESTendpoint的web应用程序(war)。我正在与prometheus/micrometer集成以生成度量。我在这里公开了“/metrics”endpoint 我被困在如何生成http请求度量上。我找不到任何与获取这些指标相关的代码。有人能帮我吗?

  • 在千分尺中,我们可以创建一个新的量规,类似于 见此处代码https://github . com/micrometer-metrics/micrometer/blob/master/micrometer-core/src/main/Java/io/micrometer/core/instrument/meter registry . Java # L468 是否可以默认为我的对象包含“前缀”名称?

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

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

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

  • 我为普罗米修斯和Actuator添加了依赖项: 但是,如果我去endpoint /actuator/promehteuslog4j2_events_total指标是不到位的,即使我还添加了log4j2依赖从Spring Boot启动器,我错过了一些额外的配置吗?