Lambda Telemetry API Event 객체를 OpenTelemetry Span으로 변환
Lambda Telemetry API Event 객체를 OpenTelemetry Span으로 변환
AWS Lambda Telemetry API 스키마는 OpenTelemetry(OTel)와 의미적으로 호환됩니다. 즉 AWS Lambda Telemetry API Event 객체를 OpenTelemetry(OTel) Span으로 변환할 수 있습니다. 변환할 때 단일 Event 객체를 단일 OTel Span에 매핑해서는 안 됩니다.
본문
대신 수명주기 단계와 관련된 세 가지 이벤트를 모두 단일 OTel Span으로 나타내야 합니다. 예를 들어 start, runtimeDone, runtimeReport 이벤트는 단일 함수 호출을 나타냅니다. 이 세 이벤트를 모두 단일 OTel Span으로 제시하세요.
Span Events 또는 Child(중첩) Spans로 이벤트를 변환할 수 있습니다. 이 페이지의 표는 두 접근 방식 모두에 대해 Telemetry API 스키마 속성과 OTel Span 속성 사이의 매핑을 설명합니다. OTel Span에 대한 자세한 내용은 OpenTelemetry Docs 웹사이트의 Tracing API 페이지에서 'Span'을 참고하세요.
- Span Events로 OTel Span에 매핑
- Child Spans로 OTel Span에 매핑
Span Events로 OTel Span에 매핑
다음 표에서 e는 텔레메트리 소스에서 오는 이벤트를 나타냅니다.
*Start 이벤트 매핑
| OpenTelemetry | Lambda Telemetry API 스키마 |
|---|---|
| Span.Name | 확장이 type 필드를 기반으로 이 값을 생성합니다. |
| Span.StartTime | e.time을 사용합니다. |
| Span.EndTime | 해당 없음. 이벤트가 아직 완료되지 않았습니다. |
| Span.Kind | Server로 설정합니다. |
| Span.Status | Unset으로 설정합니다. |
| Span.TraceId | e.tracing.value에서 AWS X-Ray 헤더를 구문 분석한 뒤 TraceId 값을 사용합니다. |
| Span.ParentId | e.tracing.value에서 X-Ray 헤더를 구문 분석한 뒤 Parent 값을 사용합니다. |
| Span.SpanId | 가능하면 e.tracing.spanId를 사용합니다. 그렇지 않으면 새 SpanId를 생성합니다. |
| Span.SpanContext.TraceState | X-Ray 추적 컨텍스트에는 해당 없음. |
| Span.SpanContext.TraceFlags | e.tracing.value에서 X-Ray 헤더를 구문 분석한 뒤 Sampled 값을 사용합니다. |
| Span.Attributes | 확장은 여기에 사용자 지정 값을 추가할 수 있습니다. |
*RuntimeDone 이벤트 매핑
| OpenTelemetry | Lambda Telemetry API 스키마 |
|---|---|
| Span.Name | 확장이 type 필드를 기반으로 값을 생성합니다. |
| Span.StartTime | 일치하는 *Start 이벤트의 e.time을 사용합니다. 또는 e.time - e.metrics.durationMs를 사용합니다. |
| Span.EndTime | 해당 없음. 이벤트가 아직 완료되지 않았습니다. |
| Span.Kind | Server로 설정합니다. |
| Span.Status | e.status가 success가 아니면 Error로 설정합니다. 그렇지 않으면 Ok로 설정합니다. |
| Span.Events[] | e.spans[]를 사용합니다. |
| Span.Events[i].Name | e.spans[i].name을 사용합니다. |
| Span.Events[i].Time | e.spans[i].start를 사용합니다. |
| Span.TraceId | e.tracing.value에서 AWS X-Ray 헤더를 구문 분석한 뒤 TraceId 값을 사용합니다. |
| Span.ParentId | e.tracing.value에서 X-Ray 헤더를 구문 분석한 뒤 Parent 값을 사용합니다. |
| Span.SpanId | *Start 이벤트와 같은 SpanId를 사용합니다. 사용할 수 없으면 e.tracing.spanId를 사용하거나 새 SpanId를 생성합니다. |
| Span.SpanContext.TraceState | X-Ray 추적 컨텍스트에는 해당 없음. |
| Span.SpanContext.TraceFlags | e.tracing.value에서 X-Ray 헤더를 구문 분석한 뒤 Sampled 값을 사용합니다. |
| Span.Attributes | 확장은 여기에 사용자 지정 값을 추가할 수 있습니다. |
*Report 이벤트 매핑
| OpenTelemetry | Lambda Telemetry API 스키마 |
|---|---|
| Span.Name | 확장이 type 필드를 기반으로 값을 생성합니다. |
| Span.StartTime | 일치하는 *Start 이벤트의 e.time을 사용합니다. 또는 e.time - e.metrics.durationMs를 사용합니다. |
| Span.EndTime | e.time을 사용합니다. |
| Span.Kind | Server로 설정합니다. |
| Span.Status | *RuntimeDone 이벤트와 같은 값을 사용합니다. |
| Span.TraceId | e.tracing.value에서 AWS X-Ray 헤더를 구문 분석한 뒤 TraceId 값을 사용합니다. |
| Span.ParentId | e.tracing.value에서 X-Ray 헤더를 구문 분석한 뒤 Parent 값을 사용합니다. |
| Span.SpanId | *Start 이벤트와 같은 SpanId를 사용합니다. 사용할 수 없으면 e.tracing.spanId를 사용하거나 새 SpanId를 생성합니다. |
| Span.SpanContext.TraceState | X-Ray 추적 컨텍스트에는 해당 없음. |
| Span.SpanContext.TraceFlags | e.tracing.value에서 X-Ray 헤더를 구문 분석한 뒤 Sampled 값을 사용합니다. |
| Span.Attributes | 확장은 여기에 사용자 지정 값을 추가할 수 있습니다. |
Child Spans로 OTel Span에 매핑
다음 표는 *RuntimeDone Span에 대한 Child(중첩) Spans로 Lambda Telemetry API 이벤트를 변환하는 방법을 설명합니다. *Start 및 *Report 매핑은 Child Spans에도 동일하므로 'Span Events로 OTel Span에 매핑'의 표를 참고하세요. 이 표에서 e는 텔레메트리 소스에서 오는 이벤트를 나타냅니다.
*RuntimeDone 이벤트 매핑
| OpenTelemetry | Lambda Telemetry API 스키마 |
|---|---|
| Span.Name | 확장이 type 필드를 기반으로 값을 생성합니다. |
| Span.StartTime | 일치하는 *Start 이벤트의 e.time을 사용합니다. 또는 e.time - e.metrics.durationMs를 사용합니다. |
| Span.EndTime | 해당 없음. 이벤트가 아직 완료되지 않았습니다. |
| Span.Kind | Server로 설정합니다. |
| Span.Status | e.status가 success가 아니면 Error로 설정합니다. 그렇지 않으면 Ok로 설정합니다. |
| Span.TraceId | e.tracing.value에서 AWS X-Ray 헤더를 구문 분석한 뒤 TraceId 값을 사용합니다. |
| Span.ParentId | e.tracing.value에서 X-Ray 헤더를 구문 분석한 뒤 Parent 값을 사용합니다. |
| Span.SpanId | *Start 이벤트와 같은 SpanId를 사용합니다. 사용할 수 없으면 e.tracing.spanId를 사용하거나 새 SpanId를 생성합니다. |
| Span.SpanContext.TraceState | X-Ray 추적 컨텍스트에는 해당 없음. |
| Span.SpanContext.TraceFlags | e.tracing.value에서 X-Ray 헤더를 구문 분석한 뒤 Sampled 값을 사용합니다. |
| Span.Attributes | 확장은 여기에 사용자 지정 값을 추가할 수 있습니다. |
| ChildSpan[i].Name | e.spans[i].name을 사용합니다. |
| ChildSpan[i].StartTime | e.spans[i].start를 사용합니다. |
| ChildSpan[i].EndTime | e.spans[i].start + e.spans[i].durations를 사용합니다. |
| ChildSpan[i].Kind | 부모 Span.Kind와 같습니다. |
| ChildSpan[i].Status | 부모 Span.Status와 같습니다. |
| ChildSpan[i].TraceId | 부모 Span.TraceId와 같습니다. |
| ChildSpan[i].ParentId | 부모 Span.SpanId를 사용합니다. |
| ChildSpan[i].SpanId | 새 SpanId를 생성합니다. |
| ChildSpan[i].SpanContext.TraceState | X-Ray 추적 컨텍스트에는 해당 없음. |
| ChildSpan[i].SpanContext.TraceFlags | 부모 Span.SpanContext.TraceFlags와 같습니다. |