Сбор метрик автоматического выключателя Spring Cloud Resilience4J с помощью Micrometer (предварительная версия)
Примечание.
Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.
Эта статья относится к: ✔️ Basic/Standard ✔️ Enterprise
В этой статье описывается сбор метрик размыкателя цепи Spring Cloud Resilience4j с помощью внутрипроцессного агента Java в Application Insights. С помощью этой функции можно отслеживать метрики автоматического останова устойчивости4j из приложения Аналитика с помощью Micrometer.
Демонстрационная демонстрация spring-cloud-circuit-breaker-demo показывает, как работает мониторинг.
Необходимые компоненты
- Установите Git, Maven и Java, если он еще не установлен на компьютере разработки.
Сборка и развертывание приложений
Выполните следующие действия, чтобы создать и развернуть примеры приложений.
Используйте следующую команду, чтобы клонировать и создать демонстрационный репозиторий:
git clone https://github.com/spring-cloud-samples/spring-cloud-circuitbreaker-demo.git cd spring-cloud-circuitbreaker-demo && mvn clean package -DskipTests
Чтобы создать экземпляр службы "Приложения Azure Spring", используйте следующую команду:
az spring create \ --resource-group ${resource-group-name} \ --name ${Azure-Spring-Apps-instance-name}
Используйте следующие команды для создания приложений с конечными точками:
az spring app create \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name resilience4j \ --assign-endpoint az spring app create \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name reactive-resilience4j \ --assign-endpoint
Используйте следующие команды для развертывания приложений:
az spring app deploy \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name resilience4j \ --env resilience4j.circuitbreaker.instances.backendA.registerHealthIndicator=true \ --artifact-path ./spring-cloud-circuitbreaker-demo-resilience4j/target/spring-cloud-circuitbreaker-demo-resilience4j-0.0.1-SNAPSHOT.jar az spring app deploy \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name reactive-resilience4j \ --env resilience4j.circuitbreaker.instances.backendA.registerHealthIndicator=true \ --artifact-path ./spring-cloud-circuitbreaker-demo-reactive-resilience4j/target/spring-cloud-circuitbreaker-demo-reactive-resilience4j-0.0.1-SNAPSHOT.jar
Чтобы создать экземпляр службы "Приложения Azure Spring", используйте следующую команду:
Примечание.
Если подписка никогда не использовалась для создания экземпляра плана Enterprise в Azure Spring Apps, необходимо выполнить следующую команду:
az term accept \ --publisher vmware-inc --product azure-spring-cloud-vmware-tanzu-2 --plan asa-ent-hr-mtr
az spring create \ --resource-group ${resource-group-name} \ --name ${Azure-Spring-Apps-instance-name} \ --sku Enterprise
Используйте следующие команды для создания приложений с конечными точками:
az spring app create \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name resilience4j \ --assign-endpoint az spring app create \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name reactive-resilience4j \ --assign-endpoint
Используйте следующие команды для развертывания приложений:
az spring app deploy \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name resilience4j \ --env resilience4j.circuitbreaker.instances.backendA.registerHealthIndicator=true \ --artifact-path ./spring-cloud-circuitbreaker-demo-resilience4j/target/spring-cloud-circuitbreaker-demo-resilience4j-0.0.1-SNAPSHOT.jar az spring app deploy \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name reactive-resilience4j \ --env resilience4j.circuitbreaker.instances.backendA.registerHealthIndicator=true \ --artifact-path ./spring-cloud-circuitbreaker-demo-reactive-resilience4j/target/spring-cloud-circuitbreaker-demo-reactive-resilience4j-0.0.1-SNAPSHOT.jar
Примечание.
Включите требуемую зависимость для Resilience4j:
<dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-micrometer</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId> </dependency>
Код должен использовать
CircuitBreakerFactory
API, который реализуется какbean
автоматически созданный при включении начального средства разбиения цепи Spring Cloud. Дополнительные сведения см. в разделе Spring Cloud Circuit Breaker.Следующие две зависимости конфликтуют с пакетами Resilient4j. Убедитесь, что вы не включаете их.
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
Перейдите по URL-адресу, предоставленному приложениями шлюза, и получите доступ к конечной точке из spring-cloud-circuit-breaker-demo, как показано ниже.
/get
/delay/{seconds}
/fluxdelay/{seconds}
Найдите метрики Resilence4j в портал Azure
В экземпляре Azure Spring Apps выберите "Приложение Аналитика" в области навигации и выберите "Приложение Аналитика" на странице.
Примечание.
Если вы не включаете приложение Аналитика, вы можете включить агент Java in-Process. Дополнительные сведения см. в разделе "Управление приложением" Аналитика с помощью раздела портал Azure "Использование агента приложения Аналитика Java в процессе" в Azure Spring Apps.
Включите коллекцию измерений для метрик устойчивости 4j. Дополнительные сведения см. в разделе "Измерения пользовательских метрик" и раздел предварительной агрегирования метрик на основе журналов и предварительно агрегированных метрик в приложении Аналитика.
Выберите метрики в области навигации . Страница метрик предоставляет раскрывающееся меню и параметры для определения диаграмм в этой процедуре. Для всех диаграмм задайте пространствоимен метрик в azure.applicationinsights.
Задайте для метрики значение resilience4j_circuitbreaker_buffered_calls, а затем задайте для агрегированиязначение Avg.
Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg.
Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg. Выберите "Добавить фильтр" и задайте для параметра "Имя" значение "Задержка".
Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg. Выберите "Применить разделение" и задайте для типа "Разделить".
Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg. Выберите "Добавить метрику" и задайте для метрики значение resilience4j_circuitbreaker_buffered_calls, а затем установите для агрегирования значение Avg. Нажмите кнопку "Добавить метрику" еще раз и задайте для метрикизначение resilience4j_circuitbreaker_slow_calls, а затем установите для параметра "Агрегирование" значение Avg.
В экземпляре Azure Spring Apps выберите приложение Аналитика в области навигации, а затем выберите Аналитика приложения по умолчанию на странице.
Примечание.
Если Аналитика приложения по умолчанию нет, можно включить агент Java in-Process. Дополнительные сведения см. в разделе "Управление приложением" Аналитика с помощью раздела портал Azure "Использование агента приложения Аналитика Java в процессе" в Azure Spring Apps.
Включите коллекцию измерений для метрик устойчивости 4j. Дополнительные сведения см. в разделе "Измерения пользовательских метрик" и раздел предварительной агрегирования метрик на основе журналов и предварительно агрегированных метрик в приложении Аналитика.
Выберите метрики в области навигации . Страница метрик предоставляет раскрывающееся меню и параметры для определения диаграмм в этой процедуре. Для всех диаграмм задайте пространствоимен метрик в azure.applicationinsights.
Задайте для метрики значение resilience4j_circuitbreaker_buffered_calls, а затем задайте для агрегированиязначение Avg.
Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg.
Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg. Выберите "Добавить фильтр" и задайте для параметра "Имя" значение "Задержка".
Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg. Выберите "Применить разделение" и задайте для типа "Разделить".
Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg. Выберите "Добавить метрику" и задайте для метрики значение resilience4j_circuitbreaker_buffered_calls, а затем установите для агрегирования значение Avg. Нажмите кнопку "Добавить метрику" еще раз и задайте для метрикизначение resilience4j_circuitbreaker_slow_calls, а затем установите для параметра "Агрегирование" значение Avg.