

# 사용자 지정 속성 추가
<a name="CloudWatch-Transaction-Search-add-custom-attributes"></a>

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

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

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

**참고**  
 다른 언어로 사용자 지정 속성 또는 스팬 이벤트를 추가하는 방법에 대한 자세한 내용은 **OpenTelemetry 웹 사이트의 [Language APIs and SDKS](https://opentelemetry.io/docs/languages/)를 참조하세요.

## 사용자 지정 속성
<a name="w2aac28c21c19c11"></a>

 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");
    }
}
```

 이러한 속성이 스팬에 추가되면 [트랜잭션 검색 시각적 편집기](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Transaction-Search-search-analyze-spans.html)에서 이를 검색 및 분석할 수 있습니다.

## 스팬 이벤트
<a name="w2aac28c21c19c13"></a>

 스팬 이벤트는 일반적으로 스팬 기간 동안의 중요한 한 시점을 나타내는 데 사용됩니다. 예외 사항은 자동 계측을 통해 스팬 이벤트로서 자동 캡처되지만, 결제 상태 또는 장바구니 중단 같은 사용자 지정 비즈니스 이벤트를 추가할 수도 있습니다. 자세한 내용은 OpenTelemetry 웹 사이트의 [Span events](https://opentelemetry.io/docs/concepts/signals/traces/#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 에이전트의 사전 조건
<a name="w2aac28c21c19c13b9"></a>

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

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

 이러한 이벤트를 추가하면 [트랜잭션 검색 시각적 편집기](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Transaction-Search-search-analyze-spans.html)에서 해당 이벤트를 사용할 수 있습니다.

## CloudWatch Logs 쿼리
<a name="w2aac28c21c19c15"></a>

 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`
```