Conversión de objetos Event de la API de telemetría de Lambda en OpenTelemetry Spans - AWS Lambda

Conversión de objetos Event de la API de telemetría de Lambda en OpenTelemetry Spans

El esquema de la API de telemetría AWS Lambda es semánticamente compatible con OpenTelemetry (OTel). Esto significa que puede convertir sus objetos Event de la API de telemetría AWS Lambda en OpenTelemetry (OTel) Spans. Al realizar la conversión, no debe asignar un solo objeto de Event a un solo OTel Span. En su lugar, debe presentar los tres eventos relacionados con una fase del ciclo de vida en un solo OTel Span. Por ejemplo, los eventos start, runtimeDone y runtimeReport representan una sola invocación de función. Presente estos tres eventos como un solo OTel Span.

Puede convertir sus eventos mediante Span Events o Child Spans (agrupados). Las tablas de esta página describen las asignaciones entre las propiedades del esquema de la API de telemetría y las propiedades de OTel Span para ambos enfoques. Para obtener más información sobre OTel Spans, consulte Span en la página de la API de seguimiento del sitio web de OpenTelemetry Docs.

Mapeo de OTel Spans con Span Events

En las siguientes tablas, e representa el evento que proviene del origen de telemetría.

Mapeo de los eventos *Start

OpenTelemetry Esquema de la API de telemetría de Lambda

Span.Name

Su extensión genera este valor en función del campo type.

Span.StartTime

Utilice e.time.

Span.EndTime

N/D, porque el evento aún no se ha completado.

Span.Kind

Configurado en Server.

Span.Status

Configurado en Unset.

Span.TraceId

Analice el encabezado AWS X-Ray que se encuentra en e.tracing.value y, a continuación, use el valor TraceId.

Span.ParentId

Analice el encabezado X-Ray que se encuentra en e.tracing.value y, a continuación, use el valor Parent.

Span.SpanId

Utilice e.tracing.spanId si está disponible. De lo contrario, genere un nuevo SpanId.

Span.SpanContext.TraceState

N/D para un contexto de seguimiento de X-Ray.

Span.SpanContext.TraceFlags

Analice el encabezado X-Ray que se encuentra en e.tracing.value y, a continuación, use el valor Sampled.

Span.Attributes

Su extensión puede agregar aquí cualquier valor personalizado.

Mapeo de los eventos *RuntimeDone

OpenTelemetry Esquema de la API de telemetría de Lambda

Span.Name

Su extensión genera el valor en función del campo type.

Span.StartTime

Utilice e.time desde el evento coincidente *Start.

Para otras opciones, consulte e.time - e.metrics.durationMs.

Span.EndTime

N/D, porque el evento aún no se ha completado.

Span.Kind

Configurado en Server.

Span.Status

S ie.status no es igual a success, entonces configúrelo en Error.

De lo contrario, establézcala en Ok.

Span.Events[]

Utilice e.spans[].

Span.Events[i].Name

Utilice e.spans[i].name.

Span.Events[i].Time

Utilice e.spans[i].start.

Span.TraceId

Analice el encabezado AWS X-Ray que se encuentra en e.tracing.value y, a continuación, use el valor TraceId.

Span.ParentId

Analice el encabezado X-Ray que se encuentra en e.tracing.value y, a continuación, use el valor Parent.

Span.SpanId

Use el mismo SpanId del evento *Start. Si no está disponible, entonces utilice e.tracing.spanId o genere un nuevo SpanId.

Span.SpanContext.TraceState

N/D para un contexto de seguimiento de X-Ray.

Span.SpanContext.TraceFlags

Analice el encabezado X-Ray que se encuentra en e.tracing.value y, a continuación, use el valor Sampled.

Span.Attributes

Su extensión puede agregar aquí cualquier valor personalizado.

Mapeo de los eventos *Report

OpenTelemetry Esquema de la API de telemetría de Lambda

Span.Name

Su extensión genera el valor en función del campo type.

Span.StartTime

Utilice e.time desde el evento coincidente *Start.

Para otras opciones, consulte e.time - e.metrics.durationMs.

Span.EndTime

Utilice e.time.

Span.Kind

Configurado en Server.

Span.Status

Usa el mismo valor que el evento *RuntimeDone.

Span.TraceId

Analice el encabezado AWS X-Ray que se encuentra en e.tracing.value y, a continuación, use el valor TraceId.

Span.ParentId

Analice el encabezado X-Ray que se encuentra en e.tracing.value y, a continuación, use el valor Parent.

Span.SpanId

Use el mismo SpanId del evento *Start. Si no está disponible, entonces utilice e.tracing.spanId o genere un nuevo SpanId.

Span.SpanContext.TraceState

N/D para un contexto de seguimiento de X-Ray.

Span.SpanContext.TraceFlags

Analice el encabezado X-Ray que se encuentra en e.tracing.value y, a continuación, use el valor Sampled.

Span.Attributes

Su extensión puede agregar aquí cualquier valor personalizado.

Mapeo de OTel Spans con Child Spans

En la siguiente tabla se describe cómo convertir los eventos de la API de telemetría de Lambda en OTel Spans con Child Spans (agrupados) para los Spans *RuntimeDone. Para las asignaciones de *Start y *Report, consulte las tablas en Mapeo de OTel Spans con Span Events, ya que son las mismas para Child Spans. En esta tabla, e representa el evento que proviene del origen de telemetría.

Mapeo de los eventos *RuntimeDone

OpenTelemetry Esquema de la API de telemetría de Lambda

Span.Name

Su extensión genera el valor en función del campo type.

Span.StartTime

Utilice e.time desde el evento coincidente *Start.

Para otras opciones, consulte e.time - e.metrics.durationMs.

Span.EndTime

N/D, porque el evento aún no se ha completado.

Span.Kind

Configurado en Server.

Span.Status

S ie.status no es igual a success, entonces configúrelo en Error.

De lo contrario, establézcala en Ok.

Span.TraceId

Analice el encabezado AWS X-Ray que se encuentra en e.tracing.value y, a continuación, use el valor TraceId.

Span.ParentId

Analice el encabezado X-Ray que se encuentra en e.tracing.value y, a continuación, use el valor Parent.

Span.SpanId

Use el mismo SpanId del evento *Start. Si no está disponible, entonces utilice e.tracing.spanId o genere un nuevo SpanId.

Span.SpanContext.TraceState

N/D para un contexto de seguimiento de X-Ray.

Span.SpanContext.TraceFlags

Analice el encabezado X-Ray que se encuentra en e.tracing.value y, a continuación, use el valor Sampled.

Span.Attributes

Su extensión puede agregar aquí cualquier valor personalizado.

ChildSpan[i].Name

Utilice e.spans[i].name.

ChildSpan[i].StartTime

Utilice e.spans[i].start.

ChildSpan[i].EndTime

Utilice e.spans[i].start + e.spans[i].durations.

ChildSpan[i].Kind

Igual que el Span.Kind principal.

ChildSpan[i].Status

Igual que el Span.Status principal.

ChildSpan[i].TraceId

Igual que el Span.TraceId principal.

ChildSpan[i].ParentId

Utilice el Span.SpanId principal.

ChildSpan[i].SpanId

Genere una nueva SpanId.

ChildSpan[i].SpanContext.TraceState

N/D para un contexto de seguimiento de X-Ray.

ChildSpan[i].SpanContext.TraceFlags

Igual que el Span.SpanContext.TraceFlags principal.