View a markdown version of this page

사용자 지정 속성 추가 - Amazon CloudWatch

사용자 지정 속성 추가

CloudWatch Application Signals는 OpenTelemetry를 사용하여 애플리케이션을 자동 계측하고 Java, Python 등과 같은 여러 언어 기반의 널리 사용되는 라이브러리에서 스팬을 수집합니다.

자동 계측은 데이터베이스 쿼리, HTTP 요청, 캐시 액세스, 외부 서비스 직접 호출 같은 정보를 캡처하므로, 이를 통해 애플리케이션 성능 문제를 해결할 수 있습니다.

사용자 지정 계측을 추가하여 비즈니스별 데이터 또는 캡처하려는 기타 정보로 범위를 보강할 수 있습니다. 이 데이터를 사용자 지정 속성 또는 스팬 이벤트로 기록하면 문제 해결 요구 사항에 맞는 인사이트를 제공할 수 있습니다.

참고

다른 언어로 사용자 지정 속성 또는 스팬 이벤트를 추가하는 방법에 대한 자세한 내용은 OpenTelemetry 웹 사이트의 Language APIs and SDKS를 참조하세요.

사용자 지정 속성

OpenTelemetry에서 지원하는 모든 언어로 비즈니스 관련 속성 또는 기타 속성을 스팬에 추가할 수 있습니다. 다음은 주문 ID와 고객 세부 정보를 스팬에 추가하는 Java 코드 조각입니다.

import io.opentelemetry.api.trace.Span; public class OrderProcessor { public void processOrder() { Span span = Span.current(); span.setAttribute("order.id", "123456"); span.setAttribute("customer.name", "John Doe"); span.setAttribute("customer.id", "4343dfdd"); // Your order processing logic here System.out.println("Order processed with custom attributes"); } }

이러한 속성이 스팬에 추가되면 트랜잭션 검색 시각적 편집기에서 이를 검색 및 분석할 수 있습니다.

스팬 이벤트

스팬 이벤트는 일반적으로 스팬 기간 동안의 중요한 한 시점을 나타내는 데 사용됩니다. 예외 사항은 자동 계측을 통해 스팬 이벤트로서 자동 캡처되지만, 결제 상태 또는 장바구니 중단 같은 사용자 지정 비즈니스 이벤트를 추가할 수도 있습니다. 자세한 내용은 OpenTelemetry 웹 사이트의 Span events를 참조하세요.

CloudWatch Application Signals 및 OpenTelemetry에서 지원하는 모든 언어로 스팬에 스팬 이벤트를 포함할 수 있습니다. 다음은 스팬에 사용자 지정 이벤트를 추가하는 Java 코드 조각입니다.

import io.opentelemetry.api.trace.Span; public class OrderProcessor { public void bookOrder() { Span span = Span.current(); // Add a booking started event span.addEvent("booking started"); // Add a payment succeeded event or failed event span.addEvent("booking failed"); } }

CloudWatch 에이전트의 사전 조건

CloudWatch 에이전트를 사용하여 X-Ray로 스팬 이벤트를 내보내는 경우 구성에서 `transit_spans_in_otlp_format` 플래그를 켜야 합니다.

{ "traces": { ... "transit_spans_in_otlp_format": true ... } }

이러한 이벤트를 추가하면 트랜잭션 검색 시각적 편집기에서 해당 이벤트를 사용할 수 있습니다.

CloudWatch Logs 쿼리

CloudWatch Logs에서 스팬 이벤트를 쿼리하여 고급 인사이트를 볼 수 있습니다. 다음 예제 쿼리 명령은 애플리케이션에서 발생하는 예외를 분석하는 방법을 보여줍니다.

fields jsonparse(@message) as js | unnest js.events into event | filter event.name = "exception" | display event.attributes.`exception.stacktrace`
fields jsonparse(@message) as js | unnest js.events into event | filter event.name = "exception" | stats count() by event.attributes.`exception.type`