AppDynamics Java 에이전트를 사용하여 Spring Boot 앱을 모니터링하는 방법

참고 항목

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

이 문서의 적용 대상: ✔️ 표준 사용량 및 전용(미리 보기) ✔️기본/표준 ❌ 엔터프라이즈

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

AppDynamics Java 에이전트를 사용하여 다음을 수행할 수 있습니다.

  • 애플리케이션 모니터링
  • 환경 변수를 사용하여 AppDynamics Java 에이전트 구성
  • AppDynamics 대시보드에서 모든 모니터링 데이터 확인

다음 동영상에서는 AppDynamics Java In Process 에이전트를 소개합니다.


필수 조건

AppDynamics Java In Process 에이전트 활성화

전체 워크플로의 경우 다음을 수행해야 합니다.

  • Azure Spring Apps에서 AppDynamics Java In Process 에이전트를 활성화하여 애플리케이션 메트릭 데이터를 생성합니다.
  • AppDynamics 에이전트를 AppDynamics 컨트롤러에 연결하여 데이터를 수집하고 컨트롤러에서 시각화합니다.

Azure Spring Apps의 Spring Boot Apps에 양방향 화살표가 있고 AppDynamics 에이전트를 가리키는 화살표가 있는 AppDynamics 에이전트를 보여 주는 다이어그램

Azure CLI를 사용하여 AppDynamics 에이전트로 애플리케이션 활성화

Azure CLI를 통해 애플리케이션을 활성화하려면 다음 단계를 수행합니다.

  1. 리소스 그룹을 만듭니다.

  2. Azure Spring Apps 인스턴스를 만듭니다.

  3. 다음 명령을 사용하여 애플리케이션을 만듭니다. <...> 자리 표시자를 고유한 값으로 바꿉니다.

    az spring app create \
        --resource-group "<your-resource-group-name>" \
        --service "<your-Azure-Spring-Apps-instance-name>" \
        --name "<your-app-name>" \
        --is-public true
    
  4. 환경 변수를 사용하여 AppDynamics 에이전트로 배포를 만듭니다.

    az spring app deploy \
        --resource-group "<your-resource-group-name>" \
        --service "<your-Azure-Spring-Apps-instance-name>" \
        --name "<your-app-name>" \
        --artifact-path app.jar \
        --jvm-options="-javaagent:/opt/agents/appdynamics/java/javaagent.jar" \
        --env APPDYNAMICS_AGENT_APPLICATION_NAME=<your-app-name> \
              APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY=<your-agent-access-key> \
              APPDYNAMICS_AGENT_ACCOUNT_NAME=<your-agent-account-name> \
              APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME=true \
              APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX=<your-agent-node-name> \
              APPDYNAMICS_AGENT_TIER_NAME=<your-agent-tier-name> \
              APPDYNAMICS_CONTROLLER_HOST_NAME=<your-AppDynamics-controller-host-name> \
              APPDYNAMICS_CONTROLLER_SSL_ENABLED=true \
              APPDYNAMICS_CONTROLLER_PORT=443
    

Azure Spring Apps는 AppDynamics Java 에이전트를 /opt/agents/appdynamics/java/javaagent.jar 경로에 미리 설치합니다. 애플리케이션의 JVM 옵션에서 에이전트를 활성화한 다음, 환경 변수를 사용하여 에이전트를 구성할 수 있습니다. Java 에이전트를 사용하여 Azure Spring Apps 모니터링에서 이러한 변수 값을 찾을 수 있습니다. 이러한 변수가 AppDynamics UI에서 보고서를 보고 구성하는 데 어떻게 도움이 되는지에 대한 자세한 내용은 계층 및 노드를 참조하세요.

Azure Portal을 사용하여 AppDynamics 에이전트로 애플리케이션 활성화

Azure Portal을 통해 애플리케이션을 활성화하려면 다음 단계를 수행합니다.

  1. Azure Portal에서 Azure Spring Apps 인스턴스로 이동합니다.

  2. 탐색 창의 설정 섹션에서 을 선택합니다.

    Azure Spring Apps 인스턴스의 앱 페이지를 보여 주는 Azure Portal의 스크린샷.

  3. 앱을 선택한 다음, 탐색 창에서 구성을 선택합니다.

  4. 일반 설정 탭을 사용하여 JVM 옵션과 같은 값을 업데이트합니다.

    일반 설정 탭이 선택된 Azure Spring Apps 인스턴스의 앱에 대한 구성 페이지를 보여 주는 Azure Portal의 스크린샷

  5. 환경 변수를 선택하여 애플리케이션에서 사용하는 변수를 추가하거나 업데이트합니다.

    환경 변수 탭이 선택된 Azure Spring Apps 인스턴스의 앱에 대한 구성 페이지를 보여 주는 Azure Portal의 스크린샷.

프로비저닝 자동화

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

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

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

resource "azurerm_spring_cloud_java_deployment" "example" {
  ...
  jvm_options = "-javaagent:/opt/agents/appdynamics/java/javaagent.jar"
  ...
    environment_variables = {
      "APPDYNAMICS_AGENT_APPLICATION_NAME" : "<your-app-name>",
      "APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY" : "<your-agent-access-key>",
      "APPDYNAMICS_AGENT_ACCOUNT_NAME" : "<your-agent-account-name>",
      "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME" : "true",
      "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX" : "<your-agent-node-name>",
      "APPDYNAMICS_AGENT_TIER_NAME" : "<your-agent-tier-name>",
      "APPDYNAMICS_CONTROLLER_HOST_NAME" : "<your-AppDynamics-controller-host-name>",
      "APPDYNAMICS_CONTROLLER_SSL_ENABLED" : "true",
      "APPDYNAMICS_CONTROLLER_PORT" : "443"
  }
}

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

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

deploymentSettings: {
  environmentVariables: {
    APPDYNAMICS_AGENT_APPLICATION_NAME : '<your-app-name>'
    APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY : '<your-agent-access-key>'
    APPDYNAMICS_AGENT_ACCOUNT_NAME : '<your-agent-account-name>'
    APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME : 'true'
    APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX : '<your-agent-node-name>'
    APPDYNAMICS_AGENT_TIER_NAME : '<your-agent-tier-name>'
    APPDYNAMICS_CONTROLLER_HOST_NAME : '<your-AppDynamics-controller-host-name>'
    APPDYNAMICS_CONTROLLER_SSL_ENABLED : 'true'
    APPDYNAMICS_CONTROLLER_PORT : '443'
  }
  jvmOptions: '-javaagent:/opt/agents/appdynamics/java/javaagent.jar'
}

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

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

"deploymentSettings": {
  "environmentVariables": {
    "APPDYNAMICS_AGENT_APPLICATION_NAME" : "<your-app-name>",
    "APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY" : "<your-agent-access-key>",
    "APPDYNAMICS_AGENT_ACCOUNT_NAME" : "<your-agent-account-name>",
    "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME" : "true",
    "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX" : "<your-agent-node-name>",
    "APPDYNAMICS_AGENT_TIER_NAME" : "<your-agent-tier-name>",
    "APPDYNAMICS_CONTROLLER_HOST_NAME" : "<your-AppDynamics-controller-host-name>",
    "APPDYNAMICS_CONTROLLER_SSL_ENABLED" : "true",
    "APPDYNAMICS_CONTROLLER_PORT" : "443"
  },
  "jvmOptions": "-javaagent:/opt/agents/appdynamics/java/javaagent.jar",
  ...
}

AppDynamics 대시보드에서 보고서 검토

이 섹션에서는 AppDynamics의 다양한 보고서를 보여줍니다.

다음 스크린샷에서는 AppDynamics 대시보드의 앱 개요를 보여줍니다.

애플리케이션 페이지를 보여 주는 AppDynamics 스크린샷

애플리케이션 대시보드에는 예 애플리케이션을 사용하는 다음 스크린샷과 같이 각 앱에 대한 전체 정보가 표시됩니다.

  • api-gateway

    예제 api-gateway 앱에 대한 애플리케이션 대시보드를 보여 주는 AppDynamics 스크린샷

  • customers-service

    예제 customers-service 앱에 대한 애플리케이션 대시보드를 보여 주는 AppDynamics 스크린샷

다음 스크린샷에서는 데이터베이스 호출 대시보드에서 기본 정보를 가져오는 방법을 보여줍니다.

데이터베이스 호출 대시보드를 보여 주는 AppDynamics 스크린샷

다음 스크린샷과 같이 가장 느린 데이터베이스 호출에 대한 정보를 가져올 수도 있습니다.

가장 느린 데이터베이스 호출 페이지를 보여 주는 AppDynamics 스크린샷

가장 느린 데이터베이스 호출 페이지에서 액세스한 상관 관계 스냅샷 페이지를 보여 주는 AppDynamics 스크린샷

다음 스크린샷에서는 메모리 페이지의 섹션에 있는 메모리 사용량 분석을 보여줍니다.

메모리 페이지의 힙 섹션을 보여 주는 AppDynamics 스크린샷

이 스크린샷과 같이 가비지 수집 프로세스가 표시될 수도 있습니다.

메모리 페이지의 가비지 수집 섹션을 보여 주는 AppDynamics 스크린샷

다음 스크린샷에서는 느린 트랜잭션 페이지를 보여줍니다.

느린 트랜잭션 페이지를 보여 주는 AppDynamics 스크린샷

메트릭 브라우저 스크린샷과 같이 JVM에 더 많은 메트릭을 정의할 수 있습니다.

메트릭 브라우저를 보여 주는 AppDynamics 스크린샷

AppDynamics 에이전트 로그 보기

기본적으로 Azure Spring Apps는 AppDynamics 에이전트의 정보 수준 로그를 STDOUT에 출력합니다. 로그는 애플리케이션 로그와 혼합됩니다. 애플리케이션 로그에서 명시적 에이전트 버전을 확인할 수 있습니다.

다음 위치에서 AppDynamics 에이전트의 로그를 가져올 수도 있습니다.

  • Azure Spring Apps 로그
  • Azure Spring Apps Application Insights
  • Azure Spring Apps LogStream

AppDynamics 에이전트 업그레이드 알아보기

AppDynamics 에이전트는 정기적으로 JDK를 통해 업그레이드됩니다(분기별). 에이전트 업그레이드는 다음 시나리오에 영향을 줄 수 있습니다.

  • 업그레이드 전에 AppDynamics 에이전트를 사용하는 기존 애플리케이션은 변경되지 않지만 AppDynamics 에이전트의 새 버전을 사용하려면 다시 시작하거나 재배포해야 합니다.
  • 업그레이드 후에 생성된 애플리케이션에서는 AppDynamics 에이전트의 새 버전을 사용합니다.

가상 네트워크 삽입 인스턴스 아웃바운드 트래픽 구성

Azure Spring Apps의 가상 네트워크 삽입 인스턴스의 경우 AppDynamics 에이전트에서 아웃바운드 트래픽이 올바르게 구성되었는지 확인합니다. 자세한 내용은 SaaS 도메인 및 IP 범위가상 네트워크에서 Azure Spring Apps 실행에 대한 고객 책임을 참조하세요.

제한 사항 이해

AppDynamics 에이전트의 제한 사항을 이해하려면 Java 에이전트를 사용하여 Azure Spring Apps 모니터링을 참조하세요.

다음 단계

Azure Spring Apps에서 Application Insights Java In-Process 에이전트 사용