Сбор метрик автоматического выключателя Spring Cloud Resilience4J с помощью Micrometer (предварительная версия)
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.
Эта статья относится к:✅ Basic/Standard ✅ Enterprise
В этой статье описывается сбор метрик размыкателя цепи Spring Cloud Resilience4j с помощью внутрипроцессного агента Java в Application Insights. С помощью этой функции можно отслеживать метрики автоматического останова отказоустойчивости4j из Application Insights с помощью 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 выберите Application Insights в области навигации и выберите Application Insights на странице.
Примечание.
Если вы не включите Application Insights, вы можете включить агент Java in-Process. Дополнительные сведения см. в разделе "Управление Application Insights" с помощью портал Azure раздела "Использование агента Java в процессе Application Insights" в Azure Spring Apps.
Включите коллекцию измерений для метрик устойчивости 4j. Дополнительные сведения см. в разделе "Измерения пользовательских метрик" и раздел предварительной агрегации метрик на основе журналов и предварительно подготовленных метрик в Application Insights.
Выберите метрики в области навигации . Страница метрик предоставляет раскрывающееся меню и параметры для определения диаграмм в этой процедуре. Для всех диаграмм задайте пространство имен метрик в 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 выберите Application Insights в области навигации, а затем выберите application Insights по умолчанию на странице.
Примечание.
Если по умолчанию Application Insights отсутствует, можно включить агент Java in-Process. Дополнительные сведения см. в разделе "Управление Application Insights" с помощью портал Azure раздела "Использование агента Java в процессе Application Insights" в Azure Spring Apps.
Включите коллекцию измерений для метрик устойчивости 4j. Дополнительные сведения см. в разделе "Измерения пользовательских метрик" и раздел предварительной агрегации метрик на основе журналов и предварительно подготовленных метрик в Application Insights.
Выберите метрики в области навигации . Страница метрик предоставляет раскрывающееся меню и параметры для определения диаграмм в этой процедуре. Для всех диаграмм задайте пространство имен метрик в 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.