Spring Boot не берет реестр микрометров из пути к классам (cloudwatch)

Я использую Spring Boot 1.5 с micrometer-spring-legacy: 1.1.4 и micrometer-registry-cloudwatch: 1.1.4 в пути к классам. Согласно docs, он должен автоматически получить этот реестр:

Наличие зависимости от micrometer-registry- {system} в пути к классам среды выполнения достаточно для Spring Boot для настройки реестра.

Однако, когда я смотрю на зарегистрированные компоненты Spring при запуске приложения, есть только «simpleMeterRegistry» (который, как я предполагаю, используется по умолчанию).

Почему не подхватывает CloudWatchMeterRegistry? Как устранить неполадки? Спасибо!!!

Из журнала:

Условие CompositeMeterRegistryConfiguration.MultipleNonPrimaryMeterRegistriesCondition в io.micrometer.spring.autoconfigure.CompositeMeterRegistryConfiguration не соответствует из-за NoneNestedConditions 1 соответствует 1 не соответствует; NestedCondition в CompositeMeterRegistryConfiguration.MultipleNonPrimaryMeterRegistriesCondition.SingleInjectableMeterRegistry @ConditionalOnSingleCandidate (типы: io.micrometer.core.instrument.MeterRegistry; SearchStrategy: all) обнаружил первичный bean-компонент из beansReg; NestedCondition в CompositeMeterRegistryConfiguration.MultipleNonPrimaryMeterRegistriesCondition.NoMeterRegistryCondition @ConditionalOnMissingBean (типы: io.micrometer.core.instrument.MeterRegistry; SearchStrategy: all) найден bean 'simpleMeterRegistry

Условие DataSourcePoolMetricsAutoConfiguration.DataSourcePoolMetricsConditionalOnBeans на io.micrometer.spring.autoconfigure.jdbc.DataSourcePoolMetricsAutoConfiguration сопоставлено из-за AllNestedConditions 2 сопоставлено 0 не соответствует; NestedCondition в DataSourcePoolMetricsAutoConfiguration.DataSourcePoolMetricsConditionalOnBeans.ConditionalOnMeterRegistryBean @ConditionalOnBean (типы: io.micrometer.core.instrument.MeterRegistry; SearchStrategy: all) найден bean-компонент 'simpleMeterRegistry'; NestedCondition в DataSourcePoolMetricsAutoConfiguration.DataSourcePoolMetricsConditionalOnBeans.ConditionalOnDataSourceBean @ConditionalOnBean (типы: javax.sql.DataSource; SearchStrategy: all) найден bean-компонент dataSource

Фильтр "webMetricsFilter" настроен успешно

Обновлять

Я вижу, что есть CloudWatchMetricAutoConfiguration, и я ожидал бы, что он создаст CloudWatchMetricWriter Bean, но такого bean-объекта нет. Он также должен создать AmazonCloudWatchAsync bean, но это не так - единственный bean-компонент "amazon", который у нас есть, это amazonS3.

Вероятная причина

Я обнаружил, что micrometer-spring-legacy:1.1.4 имеет пакет io.micrometer.spring.autoconfigure.export.<system> с <system>MetricsExportAutoConfiguration, <system>Properties, <system>PropertiesConfigAdapter для каждой поддерживаемой системы, но не CloudWatch. Эти классы делают реестр * доступным как bean-компонент Spring, и, поскольку нет поддержки реестра cloudwatch, он недоступен как bean-компонент Spring.


person Jakub Holý    schedule 24.04.2019    source источник
comment
В Spring Boot 2 это происходит, когда вы не включаете Actuator. См. stackoverflow.com/a/64484479/625581.   -  person Martín Coll    schedule 22.10.2020


Ответы (2)


Таким образом, проблема заключалась в том, что мне не хватало интеграции микрометр-пружина для CloudWatch, которая не включена в наследство микрометр-пружина из-за ее зависимостей. Вместо этого он находится в репозитории Spring Cloud AWS, а именно в пакете org.springframework.cloud.aws.autoconfigure.metrics _ 2_.

Для получения справочной информации см. spring-projects / spring-boot # 11276.

Однако spring-cloud-aws-autoconfigure 2 ожидает Boot 2.x, последняя версия для Boot 1.5 - 1.2.3, в которой отсутствует интеграция метрик CloudWatch. Таким образом, единственный вариант - скопировать, вставить, отрегулировать его CloudWatchMetricsExportAutoConfiguration.

person Jakub Holý    schedule 25.04.2019

Проблема заключалась в том, что я использовал micrometer-registry-cloudwatch2, который несовместим с моим SpringBoot. Я использовал micrometer-registry-cloudwatch, и все заработало.

person Shivansh Jagga    schedule 05.05.2021