Elastic APM Java 에이전트로 Spring Boot 앱을 모니터링하는 방법

참고 항목

Azure Spring Apps는 Azure Spring Cloud 서비스의 새 이름입니다. 서비스에 새 이름이 지정되었지만, 자산을 업데이트하는 동안 스크린샷, 비디오, 다이어그램과 같은 일부 위치에서는 당분간 이전 이름이 표시됩니다.

이 문서의 적용 대상: ✔️ 기본/표준 ❌ 엔터프라이즈

이 문서에서는 Elastic APM 에이전트를 사용하여 Azure Spring Apps에서 실행되는 Spring Boot 애플리케이션을 모니터링하는 방법을 설명합니다.

Elastic Observability Solution을 사용하면 다음과 같은 통합 가시성을 달성할 수 있습니다.

  • Elastic APM Java 에이전트를 사용하고 Azure Spring Apps에서 영구 스토리지를 사용하여 앱을 모니터링합니다.
  • 진단 설정을 사용하여 Azure Spring Apps 로그를 Elastic으로 제공합니다. 자세한 내용은 진단 설정을 사용하여 Elastic(ELK)으로 로그 분석을 참조하세요.

다음 동영상은 Elastic을 사용하는 Spring Boot 애플리케이션에 대한 통합 관찰 가능성을 소개합니다.


필수 조건

Spring Petclinic 애플리케이션 배포

이 문서에서는 Spring Petclinic 샘플을 사용하여 필요한 단계를 안내합니다. 다음 단계에서 샘플 애플리케이션을 배포합니다.

  1. Spring Boot 애플리케이션 배포 및 환경 변수 설정 섹션에 도달할 때까지 Azure Spring Apps 및 MySQL을 사용하여 Spring Boot 앱 배포의 단계를 따릅니다.

  2. 다음 명령과 함께 Azure CLI용 Azure Spring Apps 확장을 사용하여 Azure Spring Apps에서 실행할 애플리케이션을 만듭니다.

    az spring app create \
       --resource-group <your-resource-group-name> \
       --service <your-Azure-Spring-Apps-instance-name> \
       --name <your-app-name> \
       --is-public true
    

Azure Spring Apps에 대한 사용자 지정 영구 스토리지 사용

사용자 지정 영구 스토리지를 사용하도록 설정하려면 다음 단계를 따릅니다.

  1. Azure Spring Apps에서 고유한 영구 스토리지를 사용하도록 설정하는 방법의 단계를 따릅니다.

  2. 다음 Azure CLI 명령을 사용하여 Azure Spring Apps 앱에 대한 영구 스토리지를 추가합니다.

    az spring app append-persistent-storage \
       --resource-group <your-resource-group-name> \
       --service <your-Azure-Spring-Apps-instance-name> \
       --name <your-app-name> \
       --persistent-storage-type AzureFileVolume \
       --share-name <your-Azure-file-share-name> \
       --mount-path <unique-mount-path> \
       --storage-name <your-mounted-storage-name>
    

Elastic APM Java 에이전트 활성화

계속하기 전에 Elastic APM 서버 연결 정보가 필요합니다. 이 정보는 Azure에 Elastic을 배포했다고 가정합니다. 자세한 내용은 Microsoft Azure에서 Elastic을 배포 및 관리하는 방법을 참조하세요. 이 정보를 가져오려면 다음 단계를 따릅니다.

  1. Azure Portal에서 Elastic 배포의 개요 페이지로 이동한 다음 Elastic Cloud Deployment 관리를 선택합니다.

    Azure Portal Elasticsearch(Elastic Cloud) 페이지의 스크린샷.

  2. Elastic Cloud Console의 배포에서 APM 및 Fleet 섹션을 선택하여 Elastic APM 서버 엔드포인트와 비밀 토큰을 가져옵니다.

    엔드포인트 복사와 APM 서버 비밀 토큰이 강조 표시된 Elastic APM & Fleet 페이지의 스크린샷.

  3. Maven Central에서 Elastic APM Java 에이전트를 다운로드합니다.

    jar 다운로드가 강조 표시된 Maven Central의 스크린샷.

  4. 이전에 사용하도록 설정한 사용자 지정 영구 스토리지에 Elastic APM 에이전트를 업로드합니다. Azure Fileshare로 이동하고 업로드를 선택하여 에이전트 JAR 파일을 추가합니다.

    파일 공유 페이지의 파일 업로드 창을 보여 주는 Azure Portal의 스크린샷.

  5. Elastic APM 엔드포인트와 비밀 토큰이 있으면 다음 명령을 사용하여 애플리케이션을 배포할 때 Elastic APM Java 에이전트를 활성화합니다. 자리 표시자 <agent-location>은 Elastic APM Java 에이전트의 탑재된 스토리지 위치를 나타냅니다.

    az spring app deploy \
        --name <your-app-name> \
        --artifact-path <unique-path-to-your-app-jar-on-custom-storage> \
        --jvm-options='-javaagent:<elastic-agent-location>' \
        --env ELASTIC_APM_SERVICE_NAME=<your-app-name> \
              ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package-name>' \
              ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>' \
              ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
    

프로비저닝 자동화

Terraform, Bicep 또는 ARM 템플릿(Azure Resource Manager 템플릿)을 사용하여 프로비전 자동화 파이프라인을 실행할 수도 있습니다. 이 파이프라인은 사용자가 만들고 배포하는 모든 새 애플리케이션을 계측하고 모니터링하기 위한 완전한 자동 환경을 제공할 수 있습니다.

Terraform을 사용하여 프로비저닝 자동화

Terraform 템플릿에서 환경 변수를 구성하려면 템플릿에 다음 코드를 추가하고 <...> 자리 표시자를 고유한 값으로 바꿉니다. 자세한 내용은 활성 Azure Spring Apps 배포 관리를 참조하세요.

resource "azurerm_spring_cloud_java_deployment" "example" {
  ...
  jvm_options = "-javaagent:<elastic-agent-location>"
  ...
    environment_variables = {
      "ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
      "ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
      "ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
      "ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
  }
}

Bicep 파일을 사용하여 프로비전 자동화

Bicep 파일에서 환경 변수를 구성하려면 파일에 다음 코드를 추가하여 <...> 자리 표시자를 고유한 값으로 바꿉니다. 자세한 내용은 Microsoft.AppPlatform Spring/apps/deployments를 참조하세요.

deploymentSettings: {
  environmentVariables: {
    ELASTIC_APM_SERVICE_NAME='<your-app-name>',
    ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package>',
    ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>',
    ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
  },
  jvmOptions: '-javaagent:<elastic-agent-location>',
  ...
}

ARM 템플릿을 사용하여 프로비전 자동화

ARM 템플릿에서 환경 변수를 구성하려면 템플릿에 다음 코드를 추가하고 <...> 자리 표시자를 고유한 값으로 바꿉니다. 자세한 내용은 Microsoft.AppPlatform Spring/apps/deployments를 참조하세요.

"deploymentSettings": {
  "environmentVariables": {
    "ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
    "ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
    "ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
    "ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
  },
  "jvmOptions": "-javaagent:<elastic-agent-location>",
  ...
}

Elastic APM Java 에이전트 업그레이드

업그레이드를 계획하려면 Azure의 Elastic Cloud에 대한 업그레이드 버전 및 APM에 대한 중요 변경 내용을 참조하세요. APM 서버를 업그레이드한 후 사용자 지정 영구 스토리지에 Elastic APM Java 에이전트 JAR 파일을 업로드합니다. 그런 다음, 업그레이드된 Elastic APM Java 에이전트 JAR을 가리키는 업데이트된 JVM 옵션을 사용하여 앱을 다시 시작합니다.

Elastic APM으로 애플리케이션 및 메트릭 모니터링

다음 단계에서 애플리케이션 및 메트릭을 모니터링합니다.

  1. Azure Portal에서 Elastic 배포의 개요 페이지로 이동한 다음 Kibana 링크를 선택합니다.

    배포 URL Kibana 링크가 강조 표시된 Elasticsearch 페이지를 보여 주는 Azure Portal의 스크린샷.

  2. Kibana가 열리면 검색 창에서 APM을 검색한 다음 APM을 선택합니다.

    APM 검색 결과를 보여 주는 Elastic/Kibana의 스크린샷.

Kibana APM은 애플리케이션 모니터링 워크플로를 지원하기 위해 선별된 애플리케이션입니다. 여기에서 기간에 가장 큰 영향을 미치는 서비스의 요청/응답 시간, 처리량 및 트랜잭션과 같은 상위 수준 세부 정보를 볼 수 있습니다.

APM 서비스 개요 페이지를 보여 주는 Elastic/Kibana의 스크린샷.

특정 트랜잭션을 드릴다운하여 분산 추적과 같은 트랜잭션별 세부 정보를 이해할 수 있습니다.

APM 서비스 트랜잭션 페이지를 보여 주는 Elastic/Kibana의 스크린샷.

Elastic APM Java 에이전트는 또한 사용자가 문제 해결을 위해 Kibana 앱에서 사용할 수 있는 Azure Spring Apps 앱에서 JVM 메트릭을 캡처합니다.

APM 서비스 JVM 페이지를 보여 주는 Elastic/Kibana의 스크린샷.

Elastic 솔루션에 내장된 AI 엔진을 사용하여 Azure Spring Apps Services에서 변칙 검색을 사용하도록 설정하고 Teams 알림, JIRA 문제 만들기, 웹후크 기반 API 호출 등과 같은 적절한 작업을 선택할 수도 있습니다.

규칙 만들기 창이 표시되고 Actions이 강조 표시된 APM 서비스 페이지를 보여 주는 Elastic/Kibana의 스크린샷.

다음 단계