Spring boot 2 Prometheus 不提取数据库指标
Posted
技术标签:
【中文标题】Spring boot 2 Prometheus 不提取数据库指标【英文标题】:Spring boot 2 Prometheus not pulling db metrics 【发布时间】:2020-03-26 18:52:31 【问题描述】:我正在使用带有 Prometheus 的 spring boot2。我们使用 Postgres 作为数据库。 Prometheus url 未获取数据库指标。
任何参考资料都会非常有帮助。
我试过了
@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)
【问题讨论】:
首先,检查 prometheus 端点是否启动并运行。如果是这样,请检查 prometheus 服务器日志中是否存在任何可见错误,说明为什么无法与端点建立连接。 @Anoukh 我正在运行 prometheus 端点,但找不到任何数据源指标。 你能多描述一下你到目前为止所做的事情吗?即您如何配置 Prometheus 导出器等。 @Anoukh,我已经更新了。你能检查一下吗 【参考方案1】:在line 101 中,通过 DI 接收到的注册表用于构建 pgMetrics 对象。由于您在这一行获得了空指针,因此您可能会丢失 Prometheus registry 作为依赖项的导入。
【讨论】:
以上是关于Spring boot 2 Prometheus 不提取数据库指标的主要内容,如果未能解决你的问题,请参考以下文章
升级到 Spring Boot 版本 2 后 Prometheus 无法正常工作
Prometheus 配置不适用于 Spring boot 2.3.0:ClassNotFoundException:io.micrometer.prometheus.HistogramFlavor
不能在 Spring Boot 2(版本 2.0.0.M7)中包含 Prometheus 指标