Сбор метрик автоматического выключателя 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, если он еще не установлен на компьютере разработки.

Сборка и развертывание приложений

Выполните следующие действия, чтобы создать и развернуть примеры приложений.

  1. Используйте следующую команду, чтобы клонировать и создать демонстрационный репозиторий:

    git clone https://github.com/spring-cloud-samples/spring-cloud-circuitbreaker-demo.git
    cd spring-cloud-circuitbreaker-demo && mvn clean package -DskipTests
    
  1. Чтобы создать экземпляр службы "Приложения Azure Spring", используйте следующую команду:

    az spring create \
        --resource-group ${resource-group-name} \
        --name ${Azure-Spring-Apps-instance-name}
    
  2. Используйте следующие команды для создания приложений с конечными точками:

    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
    
  3. Используйте следующие команды для развертывания приложений:

    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
    
  1. Чтобы создать экземпляр службы "Приложения 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
    
  2. Используйте следующие команды для создания приложений с конечными точками:

    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
    
  3. Используйте следующие команды для развертывания приложений:

    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

  1. В экземпляре Azure Spring Apps выберите "Приложение Аналитика" в области навигации и выберите "Приложение Аналитика" на странице.

    Снимок экрана: портал Azure, на котором показана страница Аналитика приложения Azure Spring Apps с выделенной Аналитика приложения.

    Примечание.

    Если вы не включаете приложение Аналитика, вы можете включить агент Java in-Process. Дополнительные сведения см. в разделе "Управление приложением" Аналитика с помощью раздела портал Azure "Использование агента приложения Аналитика Java в процессе" в Azure Spring Apps.

  2. Включите коллекцию измерений для метрик устойчивости 4j. Дополнительные сведения см. в разделе "Измерения пользовательских метрик" и раздел предварительной агрегирования метрик на основе журналов и предварительно агрегированных метрик в приложении Аналитика.

  3. Выберите метрики в области навигации . Страница метрик предоставляет раскрывающееся меню и параметры для определения диаграмм в этой процедуре. Для всех диаграмм задайте пространствоимен метрик в azure.applicationinsights.

    Снимок экрана: страница портал Azure Аналитика приложений Аналитика метрик с выделенным меню пространства имен метрик и выделенным параметром Azure-applicationinsights.

  4. Задайте для метрики значение resilience4j_circuitbreaker_buffered_calls, а затем задайте для агрегированиязначение Avg.

    Снимок экрана: страница портал Azure приложения Аналитика метрик, на котором показана диаграмма с буферными вызовами разбиения канала и средней агрегированием.

  5. Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg.

    Снимок экрана: страница портал Azure Аналитика приложений Аналитика метрик, на котором показана диаграмма с вызовами разбиения каналов и средней агрегированием.

  6. Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg. Выберите "Добавить фильтр" и задайте для параметра "Имя" значение "Задержка".

    Снимок экрана: страница Аналитика метрик приложения портал Azure, на котором показана диаграмма с вызовами разбиения цепи, средним агрегированием и фильтром задержки.

  7. Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg. Выберите "Применить разделение" и задайте для типа "Разделить".

    Снимок экрана: страница

  8. Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg. Выберите "Добавить метрику" и задайте для метрики значение resilience4j_circuitbreaker_buffered_calls, а затем установите для агрегирования значение Avg. Нажмите кнопку "Добавить метрику" еще раз и задайте для метрикизначение resilience4j_circuitbreaker_slow_calls, а затем установите для параметра "Агрегирование" значение Avg.

    Снимок экрана: портал Azure страница

  1. В экземпляре Azure Spring Apps выберите приложение Аналитика в области навигации, а затем выберите Аналитика приложения по умолчанию на странице.

    Снимок экрана: портал Azure страница Аналитика приложения Azure Spring Apps с выделенным экземпляром приложения Аналитика по умолчанию.

    Примечание.

    Если Аналитика приложения по умолчанию нет, можно включить агент Java in-Process. Дополнительные сведения см. в разделе "Управление приложением" Аналитика с помощью раздела портал Azure "Использование агента приложения Аналитика Java в процессе" в Azure Spring Apps.

  2. Включите коллекцию измерений для метрик устойчивости 4j. Дополнительные сведения см. в разделе "Измерения пользовательских метрик" и раздел предварительной агрегирования метрик на основе журналов и предварительно агрегированных метрик в приложении Аналитика.

  3. Выберите метрики в области навигации . Страница метрик предоставляет раскрывающееся меню и параметры для определения диаграмм в этой процедуре. Для всех диаграмм задайте пространствоимен метрик в azure.applicationinsights.

    Снимок экрана: страница портал Azure Аналитика приложения Аналитика метрик с выделенным меню пространства имен метрик и выделенным azure.applicationinsights.

  4. Задайте для метрики значение resilience4j_circuitbreaker_buffered_calls, а затем задайте для агрегированиязначение Avg.

    Снимок экрана: страница портал Azure приложения Аналитика метрик, на котором показана диаграмма с буферными вызовами разбиения канала и средней агрегированием.

  5. Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg.

    Снимок экрана: страница портал Azure Аналитика приложений Аналитика метрик, на котором показана диаграмма с вызовами разбиения каналов и средней агрегированием.

  6. Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg. Выберите "Добавить фильтр" и задайте для параметра "Имя" значение "Задержка".

    Снимок экрана: страница портал Azure Аналитика приложения Аналитика метрик, на котором показана диаграмма с вызовами разбиения цепи, средним агрегированием и фильтром задержки.

  7. Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg. Выберите "Применить разделение" и задайте для типа "Разделить".

    Снимок экрана: страница

  8. Задайте для метрики значение resilience4j_circuitbreaker_calls, а затем задайте для агрегированиязначение Avg. Выберите "Добавить метрику" и задайте для метрики значение resilience4j_circuitbreaker_buffered_calls, а затем установите для агрегирования значение Avg. Нажмите кнопку "Добавить метрику" еще раз и задайте для метрикизначение resilience4j_circuitbreaker_slow_calls, а затем установите для параметра "Агрегирование" значение Avg.

    Снимок экрана: портал Azure страница

Следующие шаги