Spring Boot不会从类路径(cloudwatch)中拾取Micrometer注册表

时间:2019-04-24 08:21:04

标签: spring-boot micrometer spring-micrometer

我在类路径上使用带有micrometer-spring-legacy:1.1.4和micrometer-registry-cloudwatch:1.1.4的Spring Boot 1.5。根据{{​​3}},它应该自动选择此注册表:

  

在运行时类路径中具有对micrometer-registry- {system}的依赖足以使Spring Boot配置注册表。

但是,当我在应用启动时查看已注册的Spring Bean时,只有“ simpleMeterRegistry”(我认为这是默认值)。

为什么不接CloudWatchMeterRegistry?如何排除故障?谢谢!!!

从日志中:

  

io.micrometer.spring.autoconfigure.CompositeMeterRegistryConfiguration上的条件CompositeMeterRegistryConfiguration.MultipleNonPrimaryMeterRegistriesCondition不匹配,原因是NoneNestedConditions 1匹配1不匹配; CompositeMeterRegistryConfiguration.MultipleNonPrimaryMeterRegistriesCondition.SingleInjectableMeterRegistry @ConditionalOnSingleCandidate(类型:io.micrometer.core.instrument.MeterRegistry; SearchStrategy:all)上的NestedCondition从bean'simpleMeterRegistry'中找到了一个主bean。 CompositeMeterRegistryConfiguration.MultipleNonPrimaryMeterRegistriesCondition.NoMeterRegistryCondition @ConditionalOnMissingBean(类型:io.micrometer.core.instrument.MeterRegistry; SearchStrategy:全部)上的NestedCondition发现了bean'simpleMeterRegistry'

     

由于AllNestedConditions 2匹配0而导致io.micrometer.spring.autoconfigure.jdbc.DataSourcePoolMetricsAutoConfiguration匹配的条件DataSourcePoolMetricsAutoConfiguration.DataSourcePoolMetricsConditionalOnBeans没有匹配;在DataSourcePoolMetricsAutoConfiguration.DataSourcePoolMetricsConditionalOnBeans.ConditionalOnMeterRegistryBean @ConditionalOnBean(类型:io.micrometer.core.instrument.MeterRegistry; SearchStrategy:all)上的NestedCondition找到了bean'simpleMeterRegistry';找到DataSourcePoolMetricsAutoConfiguration.DataSourcePoolMetricsConditionalOnBeans.ConditionalOnDataSourceBean @ConditionalOnBean上的NestedCondition(类型:javax.sql.DataSource; SearchStrategy:全部)发现bean'dataSource'

     

过滤器“ webMetricsFilter”已成功配置

更新

我看到有CloudWatchMetricAutoConfiguration,我希望它会产生一个CloudWatchMetricWriter Bean,但是没有这样的Bean。它也应该创建一个AmazonCloudWatchAsync bean,但它不是-我们拥有的唯一“ amazon ” bean是amazonS3

可能是原因

我发现micrometer-spring-legacy:1.1.4的软件包io.micrometer.spring.autoconfigure.export.<system>包含<system>MetricsExportAutoConfiguration<system>Properties<system>PropertiesConfigAdapter的软件包,适用于每个受支持的系统-但不是CloudWatch。这些类使* Registry可以作为Spring Bean使用,并且由于不支持cloudwatch注册表,因此不能作为Spring Bean使用。

2 个答案:

答案 0 :(得分:0)

所以问题是我缺乏CloudWatch的微米弹簧组合,由于其依赖性,它未包含在微米弹簧传统中。相反,它位于Spring Cloud AWS存储库中,即in the package org.springframework.cloud.aws.autoconfigure.metrics库的spring-cloud-aws-autoconfigure中。

有关背景,请参见spring-projects/spring-boot#11276

但是spring-cloud-aws-autoconfigure 2希望使用Boot 2.x,而Boot 1.5的最新版本是1.2.3,它缺少CloudWatch指标集成。因此,唯一的选择是复制,粘贴和调整其CloudWatchMetricsExportAutoConfiguration

答案 1 :(得分:0)

我的问题是我使用了 micrometer-registry-cloudwatch2,它与我的 SpringBoot 不兼容。所以我使用了 micrometer-registry-cloudwatch 并且一切正常。