Spring boot 2 Prometheus未提取数据库指标

问题描述 投票:0回答:1

我在Prometheus中使用spring boot2。我们使用Postgres作为数据库。 Prometheus网址未获取数据库指标。

任何参考都将非常有帮助。

我尝试过

@Configuration
@AutoConfigureAfter({DataSourceAutoConfiguration.class})
public class MyConfiguration {


  @Autowired
  HikariDataSource dataSource;

  @Bean
  PostgreSQLDatabaseMetrics dbMeterics() {
    return new PostgreSQLDatabaseMetrics(dataSource, "database-name");
  }

} 

当我到达终点/ prometheus时,出现此错误

java.lang.NullPointerException: null
    at io.micrometer.core.instrument.binder.db.PostgreSQLDatabaseMetrics.lambda$bindTo$1(PostgreSQLDatabaseMetrics.java:101)
    at io.micrometer.core.instrument.internal.DefaultGauge.value(DefaultGauge.java:40)
    at io.micrometer.prometheus.PrometheusMeterRegistry.lambda$newGauge$3(PrometheusMeterRegistry.java:235)
    at io.micrometer.prometheus.MicrometerCollector.collect(MicrometerCollector.java:69)
    at io.prometheus.client.CollectorRegistry$MetricFamilySamplesEnumeration.findNextElement(CollectorRegistry.java:183)
    at io.prometheus.client.CollectorRegistry$MetricFamilySamplesEnumeration.nextElement(CollectorRegistry.java:216)
    at io.prometheus.client.CollectorRegistry$MetricFamilySamplesEnumeration.nextElement(CollectorRegistry.java:137)
    at io.prometheus.client.exporter.common.TextFormat.write004(TextFormat.java:22)
    at org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScrapeEndpoint.scrape(PrometheusScrapeEndpoint.java:50)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:282)
    at org.springframework.boot.actuate.endpoint.invoke.reflect.ReflectiveOperationInvoker.invoke(ReflectiveOperationInvoker.java:76)
spring prometheus spring-boot-actuator spring-micrometer
1个回答
0
投票

line 101中,通过DI接收到的注册表用于构建pgMetrics对象。由于您在此行获取了空指针,因此可能缺少Prometheus registry作为依赖项的导入。

© www.soinside.com 2019 - 2024. All rights reserved.