Spring Boot не забирает реестр микрометров из пути к классам (cloudwatch) - PullRequest
0 голосов
/ 24 апреля 2019

Я использую Spring Boot 1.5 с микрометром-пружиной-наследием: 1.1.4 и микрометром-реестром-облаком-наблюдателем: 1.1.4 на пути к классам. Согласно документам он должен автоматически подобрать этот реестр:

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

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

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

Из журнала:

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

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

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

Обновление

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

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

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

1 Ответ

0 голосов
/ 25 апреля 2019

Таким образом, проблема заключалась в том, что мне не хватало интеграции микрометров и пружин для CloudWatch, которая не включена в наследство микрометров и пружин из-за ее зависимостей. Вместо этого он находится в репозитории Spring Cloud AWS, а именно в пакете 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.

...