Поделиться через


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

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

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

  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 выберите Application Insights в области навигации и выберите Application Insights на странице.

    Снимок экрана: портал Azure, на котором показана страница Azure Spring Apps Application Insights с выделенной областью Application Insights.

    Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

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

    Снимок экрана: портал Azure, на котором показана страница метрик Application Insights с диаграммой, описанной на этом шаге.

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

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

    Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

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

    Снимок экрана: портал Azure, на котором показана страница метрик Application Insights с диаграммой, описанной на этом шаге.

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