CloudWatch 솔루션: Amazon EC2의 JVM 워크로드 - Amazon CloudWatch

CloudWatch 솔루션: Amazon EC2의 JVM 워크로드

이 솔루션을 사용하면 EC2 인스턴스에서 실행되는 JVM 애플리케이션용 CloudWatch 에이전트를 사용하여 즉시 사용 가능한 지표 컬렉션을 구성할 수 있습니다. 또한, 미리 구성된 CloudWatch 대시보드를 설정하는 데 도움이 됩니다. CloudWatch 관찰성 솔루션에서 모든 CloudWatch 관찰성 솔루션에 대한 일반 정보를 참조하세요.

요구 사항

이 솔루션 관련 조건은 다음과 같습니다.

이점

이 솔루션은 JVM 모니터링을 제공함으로써 다음 사용 사례에 관한 유용한 인사이트를 제공합니다.

  • JVM 힙 및 힙 이외 메모리 사용량을 모니터링합니다.

  • 동시성 문제에 대한 스레드와 클래스 로드를 분석합니다.

  • 폐영역 회수를 추적하여 메모리 누수를 식별합니다.

  • 동일한 계정의 솔루션을 통해 구성된 다양한 JVM 애플리케이션을 서로 전환합니다.

솔루션의 가장 중요한 장점으로는 다음과 같은 것들이 있습니다.

  • CloudWatch 에이전트 구성을 사용하여 JVM의 지표 수집을 자동화함으로써 수동 계측 소요를 없앱니다.

  • JVM 지표에 대해 미리 구성된 통합 CloudWatch 대시보드를 제공합니다. 대시보드는 솔루션을 사용하여 구성된 새 JVM EC2 인스턴스의 지표을 자동으로 처리하며, 이는 해당 대시보드를 처음 생성할 때 해당 지표이 존재하지 않더라도 마찬가지입니다. 또한 지표을 논리적 애플리케이션으로 그룹화하여 더 쉽게 초점을 맞추고 관리할 수 있습니다.

다음 이미지는 해당 솔루션의 대시보드 예시입니다.

JVM 대시보드의 예

비용

이 솔루션은 사용자 계정에 리소스를 생성하여 사용합니다. 표준 사용에 대한 요금이 부과되며, 다음 항목들이 포함됩니다.

  • CloudWatch 에이전트가 수집한 지표은 사용자 지정 지표으로 청구됩니다. 이 솔루션에서 사용하는 지표 수는 EC2 호스트 수에 따라 달라집니다.

    • 솔루션에 구성된 각각의 JVM 호스트는 총 18개의 지표과 함께, 지표 수가 호스트의 경로 수에 따라 달라지는 지표(disk_used_percent) 하나를 더해 게시합니다.

  • 사용자 지정 단일 대시보드

  • 지표을 게시하기 위해 CloudWatch 에이전트가 요청한 API 작업입니다. 이 솔루션의 기본 구성을 사용하면 CloudWatch 에이전트가 각각의 EC2 호스트마다 PutMetricData를 1분에 한 번씩 호출합니다. 즉, 각각의 EC2 호스트에 대해 30일 이내에 PutMetricData API30*24*60=43,200가 호출됩니다.

CloudWatch 요금에 대한 자세한 내용은 Amazon CloudWatch 요금을 참조하세요.

요금 계산기는 이 솔루션 사용에 대한 대략적인 월별 비용을 추정하는 데 도움이 될 수 있습니다.

요금 계산기를 사용하여 솔루션 월별 비용을 추정하려면
  1. Amazon CloudWatch 요금 계산기를 엽니다.

  2. 리전 선택에서 솔루션을 배포하려는 리전을 선택합니다.

  3. 지표 섹션의 지표 수(18 + average number of disk paths per EC2 host) * number of EC2 instances configured for this solution을(를) 입력합니다.

  4. API 섹션의 API 요청 수43200 * number of EC2 instances configured for this solution을(를) 입력합니다.

    기본적으로 CloudWatch 에이전트는 각각의 EC2 호스트마다 PutMetricData 작업을 1분당 하나씩 수행합니다.

  5. 대시보드 및 경보 섹션의 대시보드 수1을(를) 입력합니다.

  6. 요금 계산기 하단에서 월별 예상 비용을 확인할 수 있습니다.

이 솔루션에 대한 CloudWatch 에이전트 구성

CloudWatch 에이전트는 서버와 컨테이너화된 환경에서 지속적이고 자율적으로 실행되는 소프트웨어입니다. 인프라와 애플리케이션에서 지표, 로그, 트레이스를 수집하여 CloudWatch와 X-Ray로 전송합니다.

CloudWatch에 대한 자세한 내용은 CloudWatch 에이전트를 사용하여 지표, 로그, 추적 수집을(를) 참조하세요.

이 솔루션의 에이전트 구성에서는 솔루션의 기본 지표을 수집합니다. CloudWatch 에이전트는 대시보드가 기본적으로 표시하는 것보다 더 많은 JVM 지표을 수집하도록 구성할 수 있습니다. 수집할 수 있는 모든 JVM 지표 목록은 JVM 지표 수집 섹션을 참조하세요. CloudWatch 에이전트 구성에 대한 일반적인 내용은 CloudWatch 에이전트가 수집하는 지표을(를) 참조하세요.

JVM 애플리케이션용 JMX 포트 노출

CloudWatch 에이전트는 JMX를 사용하여 JVM 프로세스와 관련된 지표을 수집합니다. 이 작업을 수행하려면 JVM 애플리케이션에서 JMX 포트를 노출해야 합니다. JMX 포트 노출 지침은 JVM 애플리케이션에 사용 중인 워크로드 유형에 따라 다릅니다. 이 지침을 찾으려면 애플리케이션 설명서를 참조하세요.

일반적으로 모니터링 및 관리용 JMX 포트를 활성화하려면 JVM 애플리케이션에 시스템 속성을 다음과 같이 설정합니다. 반드시 사용하지 않는 포트 번호를 지정해야 합니다. 다음 예제에서는 인증되지 않은 JMX를 설정합니다. 보안 정책/요건에 따라 암호 인증으로 JMX를 활성화하거나 원격 액세스용 SSL을 활성화해야 하는 경우 JMX 설명서를 참조하여 필요한 속성을 설정합니다.

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=port-number -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

애플리케이션의 시작 스크립트 및 구성 파일을 검토하여 이러한 인수를 추가할 수 있는 가장 좋은 위치를 찾습니다. 명령줄에서 .jar 파일을 실행했을 때의 명령은 다음과 같은 형태일 수 있습니다. 여기서 pet-search.jar는 애플리케이션 jar의 이름입니다.

$ java -jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false pet-search.jar

이 솔루션의 에이전트 구성

에이전트가 수집한 지표은 에이전트 구성에 정의되어 있습니다. 이 솔루션은 솔루션 대시보드에 적합한 차원에 권장 지표을 수집하는 에이전트 구성을 제공합니다.

솔루션 배포 단계는 뒷부분의 솔루션 에이전트 배포에 설명되어 있습니다. 다음 정보는 환경에 맞게 에이전트 구성을 사용자 지정하는 방법을 이해하는 데 도움이 됩니다.

환경에 맞게 다음 에이전트 구성의 일부를 사용자 지정해야 합니다.

  • JMX 포트 번호는 이 설명서의 이전 섹션에서 구성한 포트 번호입니다. 해당 번호는 구성의 endpoint 줄에 있습니다.

  • ProcessGroupName- ProcessGroupName 차원에 의미 있는 이름을 제공합니다. 이름에는 동일한 애플리케이션 또는 프로세스를 실행하는 EC2 인스턴스에 대한 클러스터나 애플리케이션 또는 서비스 그룹화가 표시되어야 합니다. 이를 통해 동일한 JVM 프로세스 그룹에 속한 인스턴스의 지표를 그룹화함으로써 솔루션 대시보드에서 클러스터, 애플리케이션, 서비스 성능에 대한 통합된 보기를 제공할 수 있습니다.

예를 들어, 동일 계정에 Java 애플리케이션이 두 개(하나는 order-processing 애플리케이션, 나머지는 inventory-management 애플리케이션) 실행 중인 경우라면 개별 인스턴스의 에이전트 구성에 따라 ProcessGroupName 차원을 설정해야 합니다.

  • order-processing 애플리케이션 인스턴스에는 ProcessGroupName=order-processing과(와) 같이 설정합니다.

  • inventory-management 애플리케이션 인스턴스에는 ProcessGroupName=inventory-management과(와) 같이 설정합니다.

이러한 지침을 따르면 솔루션 대시보드가 ProcessGroupName 차원에 따라 지표를 자동으로 그룹화합니다. 대시보드에는 특정 프로세스 그룹의 지표을 선택하고 볼 수 있는 드롭다운 옵션이 포함되어 있으므로 개별 프로세스 그룹의 성능을 각각 모니터링할 수 있습니다.

JVM 호스트용 에이전트 구성

Java 애플리케이션이 배포된 EC2 인스턴스에 다음 CloudWatch 에이전트 구성을 사용합니다. 구성은 뒷부분의 2단계: Systems Manager Parameter Store에 권장 에이전트 구성 파일을 저장에 설명된 대로 SSM의 Parameter Store에 파라미터로 저장됩니다.

ProcessGroupName을 프로세스 그룹의 이름으로 바꿉니다. 포트 번호를 Java 애플리케이션의 JMX 포트로 바꿉니다. JMX가 암호 인증 또는 원격 액세스용 SSL을 통해 활성화된 경우, 필요에 따라 에이전트 구성에서 TLS 또는 권한 부여를 설정하는 방법에 대한 자세한 내용을 보려면 Java Management Extensions(JMX) 지표 수집 섹션을 참조하세요.

이 구성(JMX 블록 외부에 표시된 구성)에 표시된 EC2 지표은는 Linux 및 macOS 인스턴스에서만 작동합니다. Windows 인스턴스를 사용하는 경우 구성에서 이러한 지표을 생략하도록 선택할 수 있습니다. Windows 인스턴스에서 수집한 지표에 관해서는 Windows Server 인스턴스의 CloudWatch 에이전트가 수집하는 지표에서 자세한 내용을 참조하세요.

{ "metrics": { "namespace": "CWAgent", "append_dimensions": { "InstanceId": "${aws:InstanceId}" }, "metrics_collected": { "jmx": [ { "endpoint": "localhost:port-number", "jvm": { "measurement": [ "jvm.classes.loaded", "jvm.gc.collections.count", "jvm.gc.collections.elapsed", "jvm.memory.heap.committed", "jvm.memory.heap.max", "jvm.memory.heap.used", "jvm.memory.nonheap.committed", "jvm.memory.nonheap.max", "jvm.memory.nonheap.used", "jvm.threads.count" ] }, "append_dimensions": { "ProcessGroupName": "ProcessGroupName" } } ], "disk": { "measurement": [ "used_percent" ] }, "mem": { "measurement": [ "used_percent" ] }, "swap": { "measurement": [ "used_percent" ] }, "netstat": { "measurement": [ "tcp_established", "tcp_time_wait" ] } } } }

솔루션 에이전트 배포

사용 사례에 따라 CloudWatch 에이전트를 설치하는 방법에는 여러 가지가 있습니다. 이 솔루션에는 Systems Manager를 사용하는 것이 좋습니다. Systems Manager는 콘솔 환경을 제공하며 단일 AWS 계정 내에 관리형 서버 플릿을 더 쉽게 관리할 수 있습니다. 이 섹션의 내용은 Systems Manager를 사용하며, 기존 구성으로 CloudWatch 에이전트를 실행하지 않는 경우에 적용할 수 있습니다. CloudWatch 에이전트가 실행 중인지 확인에 나열된 단계에 따라 CloudWatch 에이전트가 실행 중인지 확인할 수 있습니다.

워크로드가 배포된 EC2 호스트에서 이미 CloudWatch 에이전트를 실행 중이며 에이전트 구성을 관리 중이라면 이 섹션의 내용을 건너뛰어 기존 배포 메커니즘에 따라 구성을 업데이트할 수 있습니다. JVM의 에이전트 구성을 기존 에이전트 구성과 병합한 다음에 병합된 구성을 배포해야 합니다. Systems Manager를 사용하여 CloudWatch 에이전트의 구성을 저장하고 관리하는 경우, 해당 구성을 기존 파라미터 값에 병합할 수 있습니다. 자세한 내용은 CloudWatch 에이전트 구성 파일 관리를 참조하세요.

참고

Systems Manager를 사용하여 다음 CloudWatch 에이전트 구성을 배포하면 EC2 인스턴스의 기존 CloudWatch 에이전트 구성을 대체하거나 덮어씁니다. 이 구성은 고유한 환경 또는 사용 사례에 맞춰 수정할 수 있습니다. 이 솔루션에 정의된 지표은 권장 대시보드에 필요한 최소 항목입니다.

이 배포 프로세스는 다음 단계를 통해 이루어집니다.

  • 1단계: 대상 EC2 인스턴스에 필요한 IAM 권한이 있는지 확인합니다.

  • 2단계: Systems Manager Parameter Store에 권장 에이전트 구성 파일을 저장합니다.

  • 3단계: AWS CloudFormation 스택을 사용하여 하나 이상의 EC2 인스턴스에 CloudWatch 에이전트를 설치합니다.

  • 4단계: 에이전트 설정이 올바르게 구성되었는지 확인합니다.

1단계: 대상 EC2 인스턴스에 필요한 IAM 권한이 있는지 확인

Systems Manager가 CloudWatch 에이전트를 설치하고 구성할 수 있도록 권한을 부여해야 합니다. 또한, CloudWatch 에이전트가 EC2 인스턴스에서 CloudWatch로 원격 측정을 게시할 수 있는 권한을 부여해야 합니다. 인스턴스에 연결된 IAM 역할에 CloudWatchAgentServerPolicyAmazonSSMManagedInstanceCore IAM 정책이 연결되어 있는지 확인합니다.

2단계: Systems Manager Parameter Store에 권장 에이전트 구성 파일을 저장

Parameter Store는 구성 파라미터를 안전하게 저장하고 관리하여 EC2 인스턴스에 CloudWatch 에이전트 설치하는 작업을 간소화하므로 하드 코딩 값이 필요 없습니다. 이를 통해 보다 안전하고 유연한 배포 프로세스를 보장하며 중앙 집중식 관리를 가능하게 하는 동시에 다양한 인스턴스에서 구성을 더 쉽게 업데이트할 수 있습니다.

다음 단계에 따라 권장 CloudWatch 에이전트 구성 파일을 Parameter Store에 파라미터로 저장합니다.

CloudWatch 에이전트 구성 파일을 파라미터로 생성하려면
  1. AWS Systems Manager 콘솔(https://console.aws.amazon.com/systems-manager/)을 엽니다.

  2. 탐색 창에서 애플리케이션 관리Parameter Store를 선택합니다.

  3. 다음 단계에 따라 새 구성 파라미터를 생성합니다.

    1. 파라미터 생성(Create parameter)을 선택합니다.

    2. 이름 상자에 이후 단계에서 CloudWatch 에이전트 구성 파일을 참조하는 데 사용할 이름을 입력합니다. 예를 들어 AmazonCloudWatch-JVM-Configuration입니다.

    3. (선택 사항) Description 상자에 파라미터 설명을 입력합니다.

    4. 파라미터 계층에서 표준을 선택합니다.

    5. Type(유형)에서 문자열을 선택합니다.

    6. 데이터 유형에는 텍스트를 선택합니다.

    7. 상자에 JVM 호스트용 에이전트 구성에 목록으로 표시된 해당 JSON 블록을 붙여넣습니다. 설명에 따라 그룹화 차원 값과 포트 번호를 사용자 지정해야 합니다.

    8. 파라미터 생성(Create parameter)을 선택합니다.

3단계: CloudWatch 에이전트를 설치하고 AWS CloudFormation 템플릿을 사용하여 구성을 적용

AWS CloudFormation을(를) 사용하여 에이전트를 설치하고 이를 이전 단계에서 생성한 CloudWatch 에이전트 구성을 사용하도록 구성할 수 있습니다.

이 솔루션의 CloudWatch 에이전트를 설치하고 구성하려면
  1. https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json 링크를 사용하여 AWS CloudFormation 빠른 스택 생성 마법사를 엽니다.

  2. 콘솔에서 선택한 리전이 JVM 워크로드가 실행 중인 리전인지 확인합니다.

  3. 스택 이름에 스택의 이름을 CWAgentInstallationStack 등과 같이 입력합니다.

  4. 파라미터 섹션에는 다음과 같이 지정합니다.

    1. CloudWatchAgentConfigSSM에는 이전에 생성한 에이전트 구성의 Systems Manager 파라미터 이름을 AmazonCloudWatch-JVM-Configuration 등과 같이 입력합니다.

    2. 대상 인스턴스를 선택할 때 사용할 수 있는 두 가지 옵션이 있습니다.

      1. InstanceIds에는 이 구성으로 CloudWatch 에이전트를 설치하려는 인스턴스 ID에서 쉼표로 구분된 인스턴스 ID 목록을 지정합니다. 단일 인스턴스나 여러 인스턴스를 목록 지정할 수 있습니다.

      2. 대규모 배포 시에는 TagKey와 해당 TagValue를 지정하여 해당 태그와 값을 사용하는 모든 EC2 인스턴스를 대상으로 지정할 수 있습니다. TagKey를 지정하는 경우 관련된 TagValue를 지정해야 합니다. (Auto Scaling 그룹에서는 TagKeyaws:autoscaling:groupName처럼 지정하고 Auto Scaling 그룹 내의 모든 인스턴스에 배포할 TagValue의 Auto Scaling 그룹 이름을 지정합니다.)

        InstanceIdsTagKeys 파라미터를 모두 지정하면 InstanceIds가 우선시되어 태그는 무시됩니다.

  5. 설정을 검토한 다음 스택 생성을 선택합니다.

템플릿 파일을 먼저 편집하여 사용자 지정하려면 스택 생성 마법사에서 템플릿 파일 업로드 옵션을 선택하여 편집된 템플릿을 업로드합니다. 자세한 내용은 AWS CloudFormation 콘솔에서 스택 생성 단원을 참조하세요. https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json 링크를 사용하여 템플릿을 다운로드할 수 있습니다.

참고

이 단계가 완료되면 이 Systems Manager 파라미터는 대상 인스턴스에서 실행되는 CloudWatch 에이전트와 연결됩니다. 이는 다음을 의미합니다.

  1. Systems Manager 파라미터가 삭제되면 에이전트가 중지됩니다.

  2. Systems Manager 파라미터를 편집하면 기본값인 30일로 예약된 빈도로 에이전트에 구성 변경 사항이 자동으로 적용됩니다.

  3. 이 Systems Manager 파라미터에 변경 사항을 즉시 적용하려면 이 단계를 다시 실행해야 합니다. 자세한 내용은 Systems Manager에서 연결 작업을 참조하세요.

4단계: 에이전트 설정이 올바르게 구성되었는지 확인

CloudWatch 에이전트가 실행 중인지 확인에 나열된 단계에 따라 CloudWatch 에이전트가 설치되었는지 확인할 수 있습니다. CloudWatch 에이전트가 설치되어 실행되지 않는 경우 모든 항목을 올바르게 설정했는지 확인합니다.

모든 것이 올바르게 설정된 경우 CloudWatch에 게시되는 JVM 지표이 표시됩니다. CloudWatch 콘솔을 확인하여 게시되고 있는지 확인할 수 있습니다.

JVM 지표이 CloudWatch에 게시되고 있는지 확인하려면
  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. 지표, 전체 지표을 선택합니다.

  3. 솔루션을 배포한 리전을 선택하고 사용자 지정 네임스페이스, CWAgent를 선택합니다.

  4. jvm.memory.heap.used과(와) 같이 JVM 호스트용 에이전트 구성에 언급된 지표을 검색합니다. 해당 지표에 대한 결과가 표시되면 지표은 CloudWatch에 게시 중입니다.

JVM 솔루션 대시보드 생성

이 솔루션에서 제공하는 대시보드는 서버의 기본 Java Virtual Machine(JVM) 관련 지표을 제공합니다. 모든 인스턴스에서 지표을 집계하고 제시하여 JVM의 개요를 제공하고 전반적인 상태 및 운영 상태에 대한 개략적인 요약을 제공합니다. 또한, 대시보드에는 지표별 상위 기여자(지표 위젯당 상위 10개)의 세부 정보가 표시됩니다. 이를 통해 관찰된 지표에 크게 기여하는 인스턴스나 이상치를 빠르게 식별할 수 있습니다.

솔루션 대시보드에는 EC2 지표이 표시되지 않습니다. EC2 지표을 보려면 EC2 자동 대시보드를 사용하여 EC2 벤딩 지표을 확인하고 EC2 콘솔 대시보드를 사용하여 CloudWatch 에이전트에서 수집한 EC2 지표을 확인해야 합니다. AWS 서비스의 자동 대시보드에 대한 자세한 내용은 단일 AWS 서비스에 대한 CloudWatch 대시보드 보기을(를) 참조하세요.

대시보드를 생성하기 위해 사용할 수 있는 옵션은 다음과 같습니다.

  • CloudWatch 콘솔을 사용하여 대시보드를 생성합니다.

  • AWS CloudFormation 콘솔을 사용하여 대시보드를 배포합니다.

  • AWS CloudFormation 인프라를 코드로 다운로드하여 지속적 통합(CI) 자동화에 통합합니다.

CloudWatch 콘솔을 사용하여 대시보드를 생성하면 실제 생성 및 청구 전에 대시보드를 미리 볼 수 있습니다.

참고

이 솔루션에서 AWS CloudFormation(으)로 생성된 대시보드에는 솔루션이 배포된 리전의 지표이 표시됩니다. JVM 지표이 게시되는 리전에서 AWS CloudFormation 스택을 생성해야 합니다.

CloudWatch 에이전트 지표이 CWAgent 이외의 네임스페이스에 게시되는 경우(예를 들어 사용자 지정 네임스페이스를 제공한 경우) CloudFormation 구성을 변경하여 사용 중인 사용자 지정 네임스페이스로 CWAgent을(를) 바꿔야 합니다.

CloudWatch 콘솔을 통해 대시보드를 생성하려면
참고

현재 솔루션 대시보드는 최신 Java 버전의 기본 수집기인 G1 Garbage Collector에 대해서만 폐영역 회수 관련 지표를 표시합니다. 다른 폐영역 회수 알고리즘을 사용할 경우, 폐영역 회수와 관련된 위젯이 비어 있습니다. 그러나 대시보드 CloudFormation 템플릿을 변경하고, 적절한 폐영역 회수 유형을 폐영역 회수 관련 지표의 이름 차원에 적용하면 이러한 위젯을 사용자 지정할 수 있습니다. 예를 들어 병렬 폐영역 회수를 사용할 경우, name=\"G1 Young Generation\"을 폐영역 회수 수 지표 jvm.gc.collections.countname=\"Parallel GC\"로 변경합니다.

  1. https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=JvmOnEc2&referrer=os-catalog 링크를 사용하여 CloudWatch 클라우드의 대시보드 생성을 엽니다.

  2. 콘솔에서 선택한 리전이 JVM 워크로드가 실행 중인 리전인지 확인합니다.

  3. 대시보드의 이름을 입력하고 대시보드 생성을 선택합니다.

    이 대시보드를 다른 리전의 비슷한 대시보드와 쉽게 구분하려면 JVMDashboard-us-east-1처럼 대시보드 이름에 리전 이름을 포함하는 것이 좋습니다.

  4. 대시보드를 미리 보고 저장을 선택하여 대시보드를 생성합니다.

AWS CloudFormation을(를) 통해 대시보드를 생성하려면
  1. https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/JVM_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json 링크를 사용하여 AWS CloudFormation 빠른 스택 생성 마법사를 엽니다.

  2. 콘솔에서 선택한 리전이 JVM 워크로드가 실행 중인 리전인지 확인합니다.

  3. 스택 이름에 스택의 이름을 JVMDashboardStack 등과 같이 입력합니다.

  4. 파라미터 섹션에서 DashboardName 파라미터 아래에 대시보드 이름을 지정합니다.

    이 대시보드를 다른 리전의 비슷한 대시보드와 쉽게 구분하려면 JVMDashboard-us-east-1처럼 대시보드 이름에 리전 이름을 포함하는 것이 좋습니다.

  5. 기능 및 변환에서 변환에 대한 액세스 기능을 확인합니다. CloudFormation은 IAM 리소스를 추가하지 않습니다.

  6. 설정을 검토한 다음 스택 생성을 선택합니다.

  7. 스택 상태가 CREATE_COMPLETE가 되면, 생성된 스택에서 리소스 탭을 선택한 다음 물리적 ID의 링크를 선택하여 대시보드로 이동합니다. 콘솔의 왼쪽 탐색 창에서 대시보드를 선택하고 사용자 지정 대시보드에서 대시보드 이름을 찾아 CloudWatch 콘솔의 대시보드에 액세스할 수도 있습니다.

템플릿 파일을 편집하여 범용으로 사용자 지정하려면 스택 생성 마법사템플릿 파일 업로드 옵션을 사용하여 편집된 템플릿을 업로드하면 됩니다. 자세한 내용은 AWS CloudFormation 콘솔에서 스택 생성 단원을 참조하세요. https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/JVM_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json 링크를 사용하여 템플릿을 다운로드할 수 있습니다.

참고

현재 솔루션 대시보드는 최신 Java 버전의 기본 수집기인 G1 Garbage Collector에 대해서만 폐영역 회수 관련 지표를 표시합니다. 다른 폐영역 회수 알고리즘을 사용할 경우, 폐영역 회수와 관련된 위젯이 비어 있습니다. 그러나 대시보드 CloudFormation 템플릿을 변경하고, 적절한 폐영역 회수 유형을 폐영역 회수 관련 지표의 이름 차원에 적용하면 이러한 위젯을 사용자 지정할 수 있습니다. 예를 들어 병렬 폐영역 회수를 사용할 경우, name=\"G1 Young Generation\"을 폐영역 회수 수 지표 jvm.gc.collections.countname=\"Parallel GC\"로 변경합니다.

JVM 대시보드 시작하기

새 JVM 대시보드로 시도해 볼 수 있는 작업들 가운데는 다음과 같은 것이 있습니다. 이들 작업을 통해 대시보드가 올바르게 작동하는지 확인하고 이를 사용하여 JVM 프로세스 그룹 모니터링과 관련된 몇 가지 실습 경험을 제공할 수 있습니다. 이들 작업을 직접 실행해 보면 대시보드 탐색 및 시각화된 지표 해석에 익숙해질 수 있습니다.

프로세스 그룹 선택

JVM 프로세스 그룹 이름 드롭다운 목록을 사용하여 모니터링할 프로세스 그룹을 선택합니다. 대시보드는 선택한 프로세스 그룹 관련 지표을 표시하도록 자동으로 업데이트됩니다. Java 애플리케이션 또는 환경이 여러 개인 경우, 개별 애플리케이션이나 환경이 별도의 프로세스 그룹으로 표시될 수 있습니다. 적절한 프로세스 그룹을 선택하면 분석하려는 애플리케이션 또는 환경과 관련된 지표을 볼 수 있습니다.

메모리 사용량 검토

대시보드 개요 섹션에서 힙 메모리 사용량 백분율힙 메모리 이외 사용량 백분율 위젯을 찾습니다. 이렇게 하면 선택한 프로세스 그룹의 모든 JVM에서 사용되는 힙 메모리와 힙 이외 메모리의 백분율이 표시됩니다. 백분율 값이 높다는 것은 성능 문제 또는 OutOfMemoryError 예외로 이어질 수 있는 잠재적 메모리 압력을 의미합니다. 호스트별 메모리 사용량에서 호스트별 힙 사용량으로 드릴다운하여 사용량이 많은 호스트를 확인할 수도 있습니다.

로드한 스레드 및 클래스 분석

호스트가 로드한 스레드 및 클래스 섹션에서 상위 10개 스레드 수상위 10개 로드 클래스 위젯을 찾습니다. 다른 것들에 비해 스레드 또는 클래스 수치가 비정상적으로 높은 JVM을 찾습니다. 스레드 값이 너무 높다는 것은 스레드 누출 또는 동시 실행 정도가 과도하다는 의미일 수 있고, 로드한 클래스가 많다는 것은 잠재적인 클래스 로더 누출 또는 비효율적인 동적 클래스 생성을 의미하는 것일 수 있습니다.

폐영역 회수 문제 식별

폐영역 회수 섹션에서 Young, Concurrent, Mixed와 같은 다양한 폐영역 회수 유형에 대해 분당 폐영역 회수 호출 상위 10개폐영역 회수 지속시간 상위 10개 위젯을 찾습니다. 다른 것들에 비해 비정상적으로 컬렉션이 많거나 컬렉션 지속시간이 긴 JVM을 찾습니다. 이는 구성 문제 또는 메모리 누수가 있다는 의미일 수 있습니다.