다음을 통해 공유


Micrometer로 Spring Cloud Resilience4J 회로 차단기 메트릭 수집(미리 보기)

참고 항목

기본, 표준엔터프라이즈 계획은 2025년 3월 중순부터 사용되지 않으며 3년의 은퇴 기간이 있습니다. Azure Container Apps로 전환하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps 사용 중지 공지 사항을 참조하세요.

표준 소비 및 전용 계획은 2024년 9월 30일부터 사용되지 않으며 6개월 후에 완전히 종료됩니다. Azure Container Apps로 전환하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps 표준 사용량 및 전용 계획을 Azure Container Apps로 마이그레이션을 참조 하세요.

이 문서는 기본/표준 ✅ 엔터프라이즈에✅ 적용됩니다.

이 문서에서는 Application Insights Java In Process 에이전트로 Spring Cloud Resilience4j 회로 차단기 메트릭을 수집하는 방법을 보여 줍니다. 이 기능을 사용하면 Micrometer를 통해 Application Insights에서 resilience4j 회로 차단기의 메트릭을 모니터링할 수 있습니다.

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 Apps 서비스 인스턴스를 만듭니다.

    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 Apps 서비스 인스턴스를 만듭니다.

    참고 항목

    구독을 사용하여 Azure Spring Apps의 Enterprise 플랜 인스턴스를 만든 적이 없는 경우 다음 명령을 실행해야 합니다.

    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를 사용해야 합니다. 이 API는 Spring Cloud 회로 차단기 스타터를 포함하는 경우 자동으로 생성되는 bean으로 구현됩니다. 자세한 내용은 Spring Cloud Circuit Breaker를 참조하세요.

  • 다음 2개의 종속성은 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}

Azure Portal에서 Resilence4j 메트릭 찾기

  1. Azure Spring Apps 인스턴스의 탐색 창에서 Application Insights를 선택한 다음, 페이지에서 Application Insights를 선택합니다.

    Application Insights가 강조 표시된 Azure Spring Apps Application Insights 페이지를 보여주는 Azure Portal의 스크린샷.

    참고 항목

    Application Insights를 사용하도록 설정하지 않으면 Java In-Process 에이전트를 사용하도록 설정할 수 있습니다. 자세한 내용은 Azure Spring Apps에서 Application Insights Java In-Process 에이전트 사용Azure Portal을 사용하여 Application Insights 관리 섹션을 참조하세요.

  2. resilience4j 메트릭에 차원 컬렉션을 사용하도록 설정합니다. 자세한 내용은 Azure Application Insights의 로그 기반 및 사전 집계 메트릭사용자 지정 메트릭 차원 및 사전 집계 섹션을 참조하세요.

  3. 탐색 창에서 메트릭을 선택합니다. 메트릭 페이지에서는 이 절차에서 차트를 정의하는 드롭다운 메뉴와 옵션을 제공합니다. 모든 차트에서 메트릭 네임스페이스azure.applicationinsights로 설정합니다.

    메트릭 네임스페이스 메뉴가 열려 있고 azure-applicationinsights 옵션이 강조 표시된 Azure Portal Application Insights 메트릭 페이지의 스크린샷.

  4. 메트릭resilience4j_circuitbreaker_buffered_calls로 설정한 다음, 집계평균으로 설정합니다.

    회로 차단기 버퍼링 호출 및 평균 집계가 포함된 차트를 보여주는 Azure Portal Application Insights 메트릭 페이지의 스크린샷.

  5. 메트릭resilience4j_circuitbreaker_calls로 설정한 다음, 집계평균으로 설정합니다.

    회로 차단기 호출 및 평균 집계가 있는 차트를 보여 주는 Azure Portal Application Insights 메트릭 페이지의 스크린샷.

  6. 메트릭resilience4j_circuitbreaker_calls로 설정한 다음, 집계평균으로 설정합니다. 필터 추가를 선택하고 이름Delay로 설정합니다.

    회로 차단기 호출, 평균 집계 및 지연 필터가 있는 차트를 보여 주는 Azure Portal Application Insights 메트릭 페이지의 스크린샷.

  7. 메트릭resilience4j_circuitbreaker_calls로 설정한 다음, 집계평균으로 설정합니다. 분할 적용을 선택하고 분할 기준종류로 설정합니다.

    회로 차단기 호출, 평균 집계 및 분할이 있는 차트를 보여 주는 Azure Portal Application Insights 메트릭 페이지의 스크린샷.

  8. 메트릭resilience4j_circuitbreaker_calls로 설정한 다음, 집계평균으로 설정합니다. 메트릭 추가를 선택하고 메트릭resilience4j_circuitbreaker_buffered_calls로 설정한 다음, 집계평균으로 설정합니다. 메트릭 추가를 다시 선택하고 메트릭resilience4j_circuitbreaker_slow_calls로 설정한 다음 집계평균으로 설정합니다.

    이 단계에서 설명한 차트가 있는 Application Insights 메트릭 페이지를 보여 주는 Azure Portal의 스크린샷.

  1. Azure Spring Apps 인스턴스의 탐색 창에서 Application Insights를 선택한 다음, 페이지에서 기본 Application Insights를 선택합니다.

    기본 Application Insights 인스턴스가 강조 표시된 Azure Spring Apps Application Insights 페이지를 보여주는 Azure Portal의 스크린샷.

    참고 항목

    사용할 수 있는 기본 Application Insights가 없는 경우 Java In-Process 에이전트를 사용하도록 설정할 수 있습니다. 자세한 내용은 Azure Spring Apps에서 Application Insights Java In-Process 에이전트 사용Azure Portal을 사용하여 Application Insights 관리 섹션을 참조하세요.

  2. resilience4j 메트릭에 차원 컬렉션을 사용하도록 설정합니다. 자세한 내용은 Azure Application Insights의 로그 기반 및 사전 집계 메트릭사용자 지정 메트릭 차원 및 사전 집계 섹션을 참조하세요.

  3. 탐색 창에서 메트릭을 선택합니다. 메트릭 페이지에서는 이 절차에서 차트를 정의하는 드롭다운 메뉴와 옵션을 제공합니다. 모든 차트에서 메트릭 네임스페이스azure.applicationinsights로 설정합니다.

    메트릭 네임스페이스 메뉴가 열려 있고 azure.applicationinsights가 강조 표시된 Azure Portal Application Insights 메트릭 페이지의 스크린샷.

  4. 메트릭resilience4j_circuitbreaker_buffered_calls로 설정한 다음, 집계평균으로 설정합니다.

    회로 차단기 버퍼링 호출 및 평균 집계가 포함된 차트를 보여주는 Azure Portal Application Insights 메트릭 페이지의 스크린샷.

  5. 메트릭resilience4j_circuitbreaker_calls로 설정한 다음, 집계평균으로 설정합니다.

    회로 차단기 호출 및 평균 집계가 있는 차트를 보여 주는 Azure Portal Application Insights 메트릭 페이지의 스크린샷.

  6. 메트릭resilience4j_circuitbreaker_calls로 설정한 다음, 집계평균으로 설정합니다. 필터 추가를 선택하고 이름Delay로 설정합니다.

    회로 차단기 호출, 평균 집계 및 지연 필터가 있는 차트를 보여 주는 Azure Portal Application Insights 메트릭 페이지의 스크린샷.

  7. 메트릭resilience4j_circuitbreaker_calls로 설정한 다음, 집계평균으로 설정합니다. 분할 적용을 선택하고 분할 기준종류로 설정합니다.

    회로 차단기 호출, 평균 집계 및 분할이 있는 차트를 보여 주는 Azure Portal Application Insights 메트릭 페이지의 스크린샷.

  8. 메트릭resilience4j_circuitbreaker_calls로 설정한 다음, 집계평균으로 설정합니다. 메트릭 추가를 선택하고 메트릭resilience4j_circuitbreaker_buffered_calls로 설정한 다음, 집계평균으로 설정합니다. 메트릭 추가를 다시 선택하고 메트릭resilience4j_circuitbreaker_slow_calls로 설정한 다음 집계평균으로 설정합니다.

    이 단계에서 설명한 차트가 있는 Application Insights 메트릭 페이지를 보여 주는 Azure Portal의 스크린샷.

다음 단계