CloudWatch 애플리케이션 맵을 사용하여 애플리케이션 토폴로지 보기 및 작업 상태 모니터링 - Amazon CloudWatch

CloudWatch 애플리케이션 맵을 사용하여 애플리케이션 토폴로지 보기 및 작업 상태 모니터링

참고

CloudWatch 애플리케이션 맵은 서비스 맵을 대체합니다. AWS X-Ray 트레이스를 기반으로 애플리케이션의 맵을 보려면 X-Ray 트레이스 맵을 엽니다. CloudWatch 콘솔의 왼쪽 탐색 창의 X-Ray 섹션에서 기록 맵을 선택합니다.

Application Signals에 대해 애플리케이션을 사용 설정하면 애플리케이션 맵에 그룹을 나타내는 노드가 표시됩니다. 그런 다음, 이러한 그룹을 드릴다운하여 서비스와 해당 서비스의 종속성을 확인할 수 있습니다. 애플리케이션 맵을 사용하여 애플리케이션 클라이언트, Synthetics 카나리, 서비스 및 종속성의 토폴로지를 확인하고 작업 상태를 모니터링합니다. 애플리케이션 맵을 보려면 CloudWatch 콘솔을 열고 왼쪽 탐색 창의 Application Signals 섹션에서 애플리케이션 맵을 선택합니다.

Application Signals에 대해 애플리케이션을 사용 설정한 후 애플리케이션 맵을 사용하면 애플리케이션의 작업 상태를 더 쉽게 모니터링할 수 있습니다.

  • 클라이언트, canary, 서비스 및 종속성 노드 간의 연결을 보면 애플리케이션 토폴로지와 실행 흐름을 이해하는 데 도움이 됩니다. 이는 서비스 운영자가 개발 팀이 아닌 경우 특히 유용합니다.

  • 서비스 수준 목표(SLO)를 충족하거나 충족하지 못하는 서비스를 확인하세요. 서비스가 SLO를 충족하지 못하는 경우 다운스트림 서비스 또는 종속성이 문제의 원인인지 또는 여러 업스트림 서비스에 영향을 미치는지 빠르게 식별할 수 있습니다.

  • 개별 클라이언트, Synthetics canary, 서비스 또는 종속성 노드를 선택하여 관련 지표를 확인합니다. 서비스 세부 정보 페이지에서는 작업, 종속성, Synthetics canary 및 클라이언트 페이지에 대한 자세한 정보를 표시합니다.

  • 애플리케이션 맵을 필터링하고 확대 또는 축소하면 더 쉽게 애플리케이션 토폴로지의 일부분을 중점적으로 살펴보거나 전체 맵을 볼 수 있습니다. 필터 텍스트 상자에서 속성을 하나 이상 선택하여 필터를 생성합니다. 각 속성을 선택하면 필터 기준이 안내됩니다. 필터 텍스트 상자 아래에 전체 필터가 표시됩니다. 언제든지 필터 지우기를 선택하여 필터를 제거할 수 있습니다.

  • 단일 통합 애플리케이션 맵에서 여러 AWS 계정의 서비스를 모니터링합니다. 서로 다른 계정의 여러 서비스가 계정 정보를 통해 명확하게 식별되므로, 분산 애플리케이션을 통합하여 관찰할 수 있습니다.

  • 애플리케이션에서 아직 계측되지 않은 서비스를 식별합니다. Application Signals는 아직 계측되지 않은 서비스를 자동으로 감지하고 표시하므로, 완전한 관찰성 적용 범위를 실현하는 데 도움이 됩니다. 계측되지 않은 서비스는 맵에서 시각적으로 구별되기 때문에 계측 작업의 우선순위를 정하는 데 유용합니다.

  • 서비스를 그룹화하고 필터링하여 워크플로와 일치하는 사용자 지정 보기를 생성합니다. 이렇게 조직화하면 가장 자주 사용하는 서비스를 빠르게 찾고 액세스하는 데 도움이 됩니다.

  • 필터링된 보기와 그룹화된 보기를 저장하면 자주 사용하는 구성으로 빠르게 돌아갈 수 있습니다.

애플리케이션 맵 살펴보기

애플리케이션 맵으로 이동하면 관련 서비스별로 그룹화된 서비스가 기본적으로 표시됩니다. 관련 서비스는 종속성을 기반으로 서비스를 그룹화합니다. 예를 들어 서비스 A가 서비스 C를 직접 호출하는 서비스 B를 직접 호출하면 이러한 서비스는 서비스 A 아래에 그룹화됩니다. 각 그룹의 모든 서비스에 대한 SLI 상태, 지표, 서비스 개수를 볼 수 있습니다.

관련 서비스별로 그룹화된 CloudWatch 기본 애플리케이션 맵.

각 노드 종류와 노드 간 엣지(연결)을 탐색하는 방법에 대한 자세한 내용을 보려면 탭을 선택합니다.

동적 그룹화 및 필터링

그룹화 기준 드롭다운을 클릭하여 다양한 그룹화 옵션을 사용할 수 있습니다. 기본적으로 애플리케이션 맵은 2가지 그룹화를 제공합니다.

  • 관련 서비스 - 종속성을 기반으로 서비스를 그룹화합니다.

  • 환경 - 환경을 기준으로 서비스를 그룹화합니다.

자체 사용자 지정 그룹을 정의하려면 그룹 관리를 클릭하여 사용자 지정 그룹을 정의한 다음, 서비스에 태그를 지정하거나 그룹 키로 OTEL 리소스 속성을 추가합니다.

참고

OTEL 리소스 속성을 통해 그룹화를 사용하려면 CloudWatch 에이전트 버전이 v1.300056.0 이상이어야 합니다.

사용자 지정 그룹화 패널 생성

Application Signals의 기본 그룹화 기능은 다운스트림 종속성에 따라 서비스를 자동으로 구성합니다. 시스템에서는 서비스 종속성 그래프를 분석하고, 루트 노드(업스트림 종속성이 없는 서비스)가 그룹 이름으로 설정되는 그룹을 생성합니다. 이 루트 서비스를 직접적으로 또는 간접적으로 사용하는 모든 서비스는 자동으로 그룹에 포함됩니다. 예를 들어 서비스 A가 서비스 B를 직접 호출하여 결과적으로 서비스 C도 직접 호출하게 될 경우, 이러한 3가지 서비스는 모두 종속성 체인의 루트이므로 서비스 A와 함께 그룹 이름으로 그룹화됩니다. 이 자동 그룹화 메커니즘은 실제 런타임 상호 작용 및 종속성을 기반으로 관련 서비스를 시각화하고 관리할 수 있는 자연스러운 방법을 제공합니다.

그룹 작업 및 인사이트

각 그룹에 대해 다음과 같은 작업을 수행할 수 있습니다.

  • 더 보기를 클릭하여 그룹의 지표 차트, 마지막 변경 이벤트 2개, 마지막 배포 시간을 봅니다.

    애플리케이션 맵에서 그룹에 대한 더 많은 드로어 보기
  • 대시보드 보기를 클릭하여 그룹의 지표 대시보드, 변경 이벤트 테이블, 서비스 목록을 봅니다.

    그룹의 애플리케이션 대시보드 보기
    지표 그래프와 함께 그룹의 애플리케이션 대시보드 보기

왼쪽 표시줄에서 그룹 및 필터를 사용하여 배포 시간, SLI 상태 또는 컴퓨팅 플랫폼 유형이 포함된 서비스가 있는 그룹을 필터링할 수 있습니다.

애플리케이션 대시보드에서 서비스 그룹화 및 필터링

계정별로 필터링하여 교차 계정 관찰성 설정의 특정 AWS 계정에서 서비스를 볼 수도 있습니다.

애플리케이션 대시보드에서 계정별로 서비스 필터링

검색 및 필터 막대를 사용하여 특정 서비스 환경 또는 종속성이 포함된 이름 또는 검색 그룹별로 그룹을 검색할 수 있습니다. 계정 ID를 기준으로 필터링하면 특정 계정의 서비스를 중점적으로 살펴볼 수 있습니다.

애플리케이션 맵에서 서비스 검색 및 필터링

사용자 지정 그룹 구성

사용자 지정 그룹화를 사용하면 비즈니스 요구 사항 및 운영 우선순위에 따라 서비스를 논리적으로 구성할 수 있습니다. 이 기능을 사용하면 특정 요구 사항에 따라 우선순위가 있는 정의된 보기를 열람 및 저장하고, 팀 소유권을 기반으로 그룹을 생성하며, 중요한 비즈니스 트랜잭션에 필요한 서비스 그룹을 조합할 수 있습니다.

사용자 지정 그룹 이름(UI에 표시되는 그룹 이름) 및 해당하는 그룹 키 이름을 생성합니다. Application Signals UI에서 또는 PutGroupingConfiguration API를 사용하여 이 단계를 완료합니다.

그룹 키 이름은 서비스에 대한 AWS 태그 키 또는 OTEL 리소스 속성일 수 있습니다. 태그와 OTEL 리소스 속성 중에서 결정할 때는 컴퓨팅 플랫폼을 고려하세요.

  • 단일 서비스 플랫폼(예: Lambda 또는 Auto Scaling 그룹)의 경우 - AWS 태그 사용

  • 다중 서비스 플랫폼(예: Amazon EKS 클러스터)의 경우 - 더 세분화된 그룹화를 위해 OTEL 리소스 속성 사용

AWS 태그 추가

사용자 지정 그룹 키가 포함된 AWS 태그를 Amazon EKS 클러스터에 키와 값으로 추가합니다. 하나의 Amazon EKS 클러스터에서 여러 개의 서비스가 실행 중인 경우, 모든 서비스는 동일한 사용자 지정 그룹 키로 태그가 지정됩니다. 예를 들어 Amazon EKS 클러스터 A에서 서비스 1, 서비스 2, 서비스 3이 실행 중인 경우 Team X라는 키가 있는 AWS 태그를 클러스터에 추가하면 3가지 서비스가 모두 Team X에 추가됩니다. Team X에 특정 서비스만 추가하려면 아래와 같이 서비스에 대해 OTEL 리소스 속성을 추가합니다.

OTEL 리소스 속성 추가

OTEL 리소스 속성을 추가하려면 아래 구성을 참조하세요.

일반 구성

사용자 지정 그룹 키-값 페어를 사용하여 애플리케이션에서 OTEL_RESOURCE_ATTRIBUTES 환경 변수를 구성합니다. 키는 & 아래에 나열되며 aws.application_signals.metric_resource_keys 기호로 구분됩니다.

일례로 Application=PetClinicOwner=Test를 사용하여 사용자 지정 그룹을 생성하려면 다음 예제를 사용합니다.

OTEL_RESOURCE_ATTRIBUTES=Application=PetClinic,Owner=Test,aws.application_signals.metric_resource_keys=Application&Owner

플랫폼별 구성

다음은 배포 사양입니다.

Amazon EKS 및 네이티브 kubernetes

apiVersion: apps/v1 kind: Deployment metadata: ... spec: replicas: 1 ... template: spec: containers: - name: your-app image: your-app-image env: ... - name: OTEL_RESOURCE_ATTRIBUTES value: Application=PetClinic,Owner=Test,aws.application_signals.metric_resource_keys=Application&Owner

Amazon EC2

애플리케이션 시작 스크립트를 OTEL_RESOURCE_ATTRIBUTES에 추가합니다. 전체 예제는 OTEL_RESOURCE_ATTRIBUTES 추가 섹션을 참조하세요.

... OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME,Application=PetClinic,Owner=Test,aws.application_signals.metric_resource_keys=Application&Owner" \ java -jar $MY_JAVA_APP.jar

Amazon ECS

OTEL_RESOURCE_ATTRIBUTES를 TaskDefinition에 추가합니다. 전체 예제는 Amazon ECS에서 활성화 섹션을 참조하세요.

{ "name": "my-app", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$YOUR_SVC_NAME,Application=PetClinic,Owner=Test,aws.application_signals.metric_resource_keys=Applicationmanagement portalOwner" }, ... ] }

Lambda

OTEL_RESOURCE_ATTRIBUTES를 Lambda 환경 변수에 추가합니다.

OTEL_RESOURCE_ATTRIBUTES="Application=PetClinic,Owner=Test,aws.application_signals.metric_resource_keys=Application&Owner"

그룹 내에서 서비스 보기

그룹에서 서비스 및 해당 서비스의 종속성을 보려면 그룹 이름을 클릭합니다. 이렇게 하면 그룹 내부의 서비스 맵이 표시됩니다. 각 서비스 노드에는 SLI 상태, 지표, 플랫폼 세부 정보가 표시됩니다. SLI 침해가 발생한 서비스는 쉽게 식별할 수 있도록 강조 표시됩니다.

그룹 내의 CloudWatch 애플리케이션 맵 서비스.

계측되지 않은 서비스는 눈에 잘 띄는 시각적 지표(예: 파선 테두리 또는 다른 색상)와 함께 표시되므로 계측된 서비스와 구별할 수 있습니다. 계측 지침 및 설정 설명서 링크를 보려면 계측되지 않은 서비스 노드 위로 마우스를 올리세요.

애플리케이션 맵에서 계측되지 않은 서비스를 기준으로 필터링

모든 카나리, RUM 클라이언트, AWS 서비스 노드는 기본적으로 축소된 상태로 표시됩니다. 이 그룹의 서비스가 이 그룹에 속하지 않은 서비스를 직접적으로 호출할 경우, 해당 서비스는 기본적으로 축소되어 표시됩니다.

카나리 노드는 애플리케이션 맵에서 그룹으로 축소되어 표시됩니다.

그래도 맵이 너무 커서 효과적으로 조사할 수 없는 경우, 중첩 그룹을 적용하면 조사 범위를 좁힐 수 있습니다. 예를 들어 사업부별로 서비스를 그룹화한 후에도 그룹에 서비스가 너무 많다면 그룹화 기준 드롭다운을 통해 을 선택하여 중첩 그룹화 구조를 생성합니다.

애플리케이션 맵의 중첩 그룹화

서비스 인사이트 및 세부 정보

또한 이 페이지에서 검색 창 옆에 있는 보기 저장을 클릭하면 보기를 저장할 수 있으므로, 다음에 동일한 그룹화 및 필터링을 다시 적용할 필요가 없습니다.

그룹화 구성 저장

서비스 노드에서 더 보기를 클릭하여 서비스 감사, 이벤트 변경, SLI 상태, 지표 그래프를 봅니다.

CloudWatch 애플리케이션 맵 서비스 인사이트.

서비스 작업 및 기타 서비스 세부 정보를 보려면 대시보드 보기를 클릭하여 서비스 개요 페이지로 이동합니다.

CloudWatch 애플리케이션 맵 서비스 개요.

또는 '엣지'를 클릭하여 서비스의 특정한 종속성 직접 호출에 대한 지표를 볼 수 있습니다.

CloudWatch 애플리케이션 맵 노드 엣지 드로어

변경 이벤트

Application Signals의 CloudTrail 이벤트 자동 처리를 통해 애플리케이션 전체에서 변경 이벤트를 추적할 수 있습니다. 서비스 및 해당 서비스의 종속성에 대한 구성 이벤트와 배포 이벤트를 모니터링하면 운영 분석 및 문제 해결을 위한 즉각적인 컨텍스트가 제공됩니다. 변경 이벤트 감지 기능은 CloudWatch 콘솔 또는 StartDiscovery API를 통한 서비스 검색 활성화와 함께 활성화됩니다. EKS 서비스의 경우 배포 감지를 사용하려면 EKS 서비스를 Application Signals 계측 SDK로 계측해야 합니다. Application Signals는 배포 시간과 성능 변화의 상관관계를 자동으로 분석하므로, 최근 배포가 서비스 문제에 영향을 미쳤는지 빠르게 식별하는 데 도움이 됩니다. 추가 구성 또는 설정 요구 사항 없이도 변경 이벤트 기록 및 서비스 전반의 영향을 확인할 수 있습니다.

감사 결과

Application Signals의 감사 결과를 통해 중요한 인사이트를 발견할 수 있습니다. 이 서비스는 애플리케이션을 분석하여 중요한 관찰 결과 및 잠재적 문제를 보고하므로, 근본 원인 분석을 간소화합니다. 이러한 자동화된 조사 결과는 관련 트레이스를 통합하기 때문에 여러 번 클릭하여 탐색하지 않아도 됩니다. 감사 시스템은 작업 팀이 문제와 근본 원인을 빠르게 식별하도록 지원하므로 문제 해결 속도를 단축할 수 있습니다.

애플리케이션 맵의 교차 계정 관찰성

Application Signals는 교차 계정 관찰성을 지원하므로, 단일한 통합 애플리케이션 맵에서 여러 AWS 계정에 분산된 서비스를 모니터링하고 시각화할 수 있습니다. 이 기능은 AWS 모범 사례에 따라 다중 계정 아키텍처를 사용하는 조직에서 필수로 사용해야 합니다.

주요 기능:

  • 통합 보기: 단일 애플리케이션 맵에서 여러 AWS 계정의 서비스를 볼 수 있으므로, 분산 애플리케이션 아키텍처를 전체적으로 파악할 수 있습니다.

  • 계정 식별: 각 서비스 노드에서 계정 ID 및 리전을 명확하게 표시하므로, 서비스 소유권과 위치를 쉽게 식별할 수 있습니다.

  • 중앙 집중식 모니터링: 단일 모니터링 계정에서 모든 연결된 계정의 서비스 상태, 성능, SLO 상태를 모니터링할 수 있습니다.

  • 교차 계정 필터링: 계정 ID별로 서비스를 필터링 및 그룹화하여 특정 계정을 중점적으로 살펴보거나 교차 계정의 상호 작용을 확인할 수 있습니다.

작동 방식:

Application Signals에서는 AWS Organizations 및 교차 계정 공유를 사용하여 다중 계정에서 관찰성을 사용 설정합니다. 교차 계정 관찰성을 설정하려면 CloudWatch 크로스 계정 관찰성 섹션을 참조하세요.

View your application services

서비스(계측됨)

애플리케이션 맵에서 애플리케이션 서비스와 해당 SLO 및 서비스 수준 지표(SLI)의 상태를 볼 수 있습니다. 서비스에 대한 SLO를 생성하지 않은 경우 서비스 노드 아래 SLO 생성 버튼을 선택합니다.

애플리케이션 맵에 모든 서비스가 표시됩니다. 또한 다음 이미지와 같이 서비스를 사용하는 고객 및 canary와 서비스에서 호출하는 종속성도 보여줍니다.

정상 및 비정상 서비스를 표시하는 CloudWatch 애플리케이션 맵.

서비스 노드를 선택하면 다음과 같은 자세한 서비스 정보가 표시된 창이 열립니다.

  • 총 오류율 및 장애 발생률입니다.

  • 상태가 healthy 또는 unhealthy인 SLI 및 SLO의 수.

  • SLO에 대한 자세한 내용을 확인할 수 있는 옵션.

  • Amazon EKS에서 호스팅되는 서비스의 Cluster, Namespace, Workload 또는 Amazon ECS나 Amazon EC2에서 호스팅되는 서비스의 환경. Amazon EKS 호스팅 서비스의 경우 링크를 선택하여 CloudWatch Container Insights를 열 수 있습니다.

  • AccountId 및 리전.

  • 최근 변경 이벤트 및 마지막 배포 시간을 보여주는 변경 섹션입니다.

  • 자동화된 감사 결과 및 권장 사항을 제공하는 운영 감사 탭입니다.

  • 가용성, 지연 시간, 장애, 오류에 대한 서비스 지표 차트입니다.

서비스 노드와 다운스트림 서비스 또는 종속성 노드 간의 엣지나 연결을 선택합니다. 그러면 이미지 예제와 같이 장애 발생률, 지연 시간 및 오류율을 기준으로 상위 경로를 포함하는 창이 열립니다. 창에서 있는 아무 링크나 선택하여 서비스 세부 정보 페이지를 열고 선택한 서비스 또는 종속성에 대한 세부 정보를 확인합니다.

CloudWatch 애플리케이션 맵 서비스 엣지

엣지 노드를 선택하면 다음과 같은 자세한 서비스 정보가 표시된 창이 열립니다.

  • 총 요청 수, 지연 시간, 오류율, 장애 발생률

  • 장애 발생률 기준 상위 경로

  • 지연 시간 기준 상위 경로

  • 오류율 기준 상위 경로

서비스(계측되지 않음)

계측되지 않은 서비스는 Application Signals로 구성되지 않은 경우에도 Application Map에 표시됩니다. 이러한 서비스는 Resource Explorer를 통해 애플리케이션 이름과 태그를 사용하여 자동으로 검색됩니다. 시스템은 사용자의 AWS 계정에서 최대 3,000개의 리소스를 자동으로 감지할 수 있습니다.

계측되지 않은 서비스 노드를 선택하면 다음과 같은 정보가 표시되는 창이 열립니다.

  • 서비스 이름 및 식별 정보

  • 서비스가 감지된 AccountId 및 리전

  • 계측 상태 및 지침

  • 설정 지침을 제공하는 콜투액션 버튼인 'Application Signals 활성화'

  • 컴퓨팅 플랫폼 유형(감지 가능한 경우)

계측되지 않은 서비스는 다음과 같은 이점을 제공합니다.

  • 관찰성 적용 범위의 격차 파악

  • 아키텍처 내 위치에 따라 다음에 계측할 서비스의 우선순위 지정

  • 전체 계측을 수행하기 전에 전체 애플리케이션 토폴로지 숙지

  • 조직 전체의 계측 롤아웃 계획 수립

참고

계측되지 않은 서비스는 지표 또는 추적을 능동적으로 전송하지 않으므로, 제한적인 원격 분석 데이터가 표시됩니다.

CloudWatch 애플리케이션 맵 계측 필터
View dependencies

애플리케이션 종속성은 이를 직접적으로 호출하는 서비스에 연결된 애플리케이션 맵에 표시됩니다.

종속성 노드를 선택하여 오류율 및 장애 발생률이 표시되고 요청, 가용성, 지연 시간, 오류율, 장애 발생률에 대한 지표 차트가 포함된 창을 엽니다.

종속성 노드가 서비스 또는 리소스인 경우, 요청된 시간 범위에 대한 변경 이벤트가 창에 표시됩니다.

확장 가능한 AWS 서비스 종속성 노드를 표시하는 CloudWatch 애플리케이션 맵.
View clients

CloudWatch RUM 웹 클라이언트에 대한 X-Ray 추적 기능을 켠 후 해당 클라이언트가 직접적으로 호출하는 서비스에 연결된 애플리케이션 맵에 표시됩니다.

클라이언트 노드를 선택하여 자세한 클라이언트 정보를 표시하는 창을 엽니다.

  • 페이지 로드, 평균 로드 시간, 오류, 평균 웹 바이탈에 대한 지표

  • 오류 분석을 보여주는 그래프

  • CloudWatch RUM에 클라이언트 세부 정보를 표시하는 링크

확장 가능한 클라이언트 노드를 표시하는 CloudWatch 애플리케이션 맵.

대시보드 보기를 선택하여 카나리 세부 정보를 엽니다.

View synthetics canaries

애플리케이션 맵에서 카나리를 보려면 CloudWatch Synthetics 카나리에 대해 X-Ray 추적을 켭니다. 사용 설정되면 카나리가 애플리케이션 맵에서 직접 호출된 서비스에 연결된 것으로 표시됩니다.

카나리는 기본적으로 확장 가능한 단일 아이콘으로 함께 그룹화됩니다. 카나리의 세부 정보 창에는 지표, 트레이스, 상태 정보가 표시됩니다.

다음 이미지와 같이 canary 노드를 선택하여 자세한 canary 정보를 표시하는 창을 엽니다.

확장 가능한 Synthetics 카나리 노드를 표시하는 CloudWatch 애플리케이션 맵.

대시보드 보기를 선택하여 카나리 세부 정보를 엽니다.