Konvertieren von Event-Objekte der Lambda-Telemetrie-API in OpenTelemetry-Spans - AWS Lambda

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konvertieren von Event-Objekte der Lambda-Telemetrie-API in OpenTelemetry-Spans

Das AWS Lambda-Telemetrie-API-Schema ist semantisch kompatibel mit OpenTelemetry (OTel). Das bedeutet, dass Sie Ihre AWS Lambda-Telemetrie-API Event-Objekte zu OpenTelemetry (OTel)-Spans konvertieren können. Beim Konvertieren sollten Sie kein einzelnes Event-Objekt einem einzelnen OTel Span zuordnen. Stattdessen sollten Sie alle drei Ereignisse, die sich auf eine Lebenszyklusphase beziehen, in einem einzigen OTel-Span darstellen. Die start, runtimeDone, und runtimeReport-Ereignisse repräsentieren beispielsweise einen einzelnen Funktionsaufruf. Stellen Sie alle drei Ereignisse als einen einzigen OTel-Span dar.

Sie können Ihre Ereignisse mithilfe von Span-Ereignissen oder untergeordneten (verschachtelten) Spans konvertieren. Die Tabellen auf dieser Seite beschreiben die Zuordnungen zwischen Telemetrie-API-Schemaeigenschaften und OTel-Span-Eigenschaften für beide Ansätze. Weitere Informationen zu OTel Spans finden Sie unter Span auf der Seite Ablaufverfolgungs-API auf der OpenTelemetry-Docs-Website.

Zuordnung zu OTel Spans mit Span-Ereignissen

In den folgenden Tabellen stellt e das Ereignis dar, das von der Telemetrie-Quelle stammt.

Zuordnung der *Start-Ereignisse

OpenTelemetry Schema der Lambda-Telemetrie-API

Span.Name

Ihre Erweiterung generiert diesen Wert basierend auf dem type-Feld.

Span.StartTime

Verwenden Sie e.time.

Span.EndTime

Nicht zutreffend, da das Ereignis noch nicht abgeschlossen ist.

Span.Kind

Setzen Sie auf Server.

Span.Status

Setzen Sie auf Unset.

Span.TraceId

Analysieren Sie den AWS X-Ray-Header, der in e.tracing.value gefunden wurde, und verwenden Sie dann den TraceId-Wert.

Span.ParentId

Analysieren Sie den X-Ray-Header, der in e.tracing.value gefunden wurde, und verwenden Sie dann den Parent-Wert.

Span.SpanId

Verwenden Sie e.tracing.spanId, falls verfügbar. Generieren Sie andernfalls eine neue SpanId.

Span.SpanContext.TraceState

Nicht zutreffend für einen X-Ray-Ablaufverfolgungskontext.

Span.SpanContext.TraceFlags

Analysieren Sie den X-Ray-Header, der in e.tracing.value gefunden wurde, und verwenden Sie dann den Sampled-Wert.

Span.Attributes

Ihre Erweiterung kann hier beliebige benutzerdefinierte Werte hinzufügen.

Zuordnung der *RuntimeDone-Ereignisse

OpenTelemetry Schema der Lambda-Telemetrie-API

Span.Name

Ihre Erweiterung generiert den Wert basierend auf dem type-Feld.

Span.StartTime

Verwenden Sie e.time aus dem übereinstimmenden *Start-Ereignis.

Als alternative Vorgehensweise verwenden Sie e.time - e.metrics.durationMs.

Span.EndTime

Nicht zutreffend, da das Ereignis noch nicht abgeschlossen ist.

Span.Kind

Setzen Sie auf Server.

Span.Status

Wenn e.status nicht gleich success ist, dann Wert auf Error festlegen.

Ansonsten auf festlegen Ok.

Span.Events[]

Verwenden Sie e.spans[].

Span.Events[i].Name

Verwenden Sie e.spans[i].name.

Span.Events[i].Time

Verwenden Sie e.spans[i].start.

Span.TraceId

Analysieren Sie den AWS X-Ray-Header, der in e.tracing.value gefunden wurde, und verwenden Sie dann den TraceId-Wert.

Span.ParentId

Analysieren Sie den X-Ray-Header, der in e.tracing.value gefunden wurde, und verwenden Sie dann den Parent-Wert.

Span.SpanId

Verwenden Sie dieselbe SpanId aus dem *Start-Ereignis. Falls nicht verfügbar, verwenden Sie e.tracing.spanId oder generieren Sie eine neue SpanId.

Span.SpanContext.TraceState

Nicht zutreffend für einen X-Ray-Ablaufverfolgungskontext.

Span.SpanContext.TraceFlags

Analysieren Sie den X-Ray-Header, der in e.tracing.value gefunden wurde, und verwenden Sie dann den Sampled-Wert.

Span.Attributes

Ihre Erweiterung kann hier beliebige benutzerdefinierte Werte hinzufügen.

Zuordnung der *Report-Ereignisse

OpenTelemetry Schema der Lambda-Telemetrie-API

Span.Name

Ihre Erweiterung generiert den Wert basierend auf dem type-Feld.

Span.StartTime

Verwenden Sie e.time aus dem übereinstimmenden *Start-Ereignis.

Als alternative Vorgehensweise verwenden Sie e.time - e.metrics.durationMs.

Span.EndTime

Verwenden Sie e.time.

Span.Kind

Setzen Sie auf Server.

Span.Status

Verwenden Sie den gleichen Wert wie das *RuntimeDone-Ereignis.

Span.TraceId

Analysieren Sie den AWS X-Ray-Header, der in e.tracing.value gefunden wurde, und verwenden Sie dann den TraceId-Wert.

Span.ParentId

Analysieren Sie den X-Ray-Header, der in e.tracing.value gefunden wurde, und verwenden Sie dann den Parent-Wert.

Span.SpanId

Verwenden Sie dieselbe SpanId aus dem *Start-Ereignis. Falls nicht verfügbar, verwenden Sie e.tracing.spanId oder generieren Sie eine neue SpanId.

Span.SpanContext.TraceState

Nicht zutreffend für einen X-Ray-Ablaufverfolgungskontext.

Span.SpanContext.TraceFlags

Analysieren Sie den X-Ray-Header, der in e.tracing.value gefunden wurde, und verwenden Sie dann den Sampled-Wert.

Span.Attributes

Ihre Erweiterung kann hier beliebige benutzerdefinierte Werte hinzufügen.

Zuordnung zu OTel-Spans mit untergeordneten Spans

Die folgende Tabelle beschreibt, wie Lambda-Telemetrie-API-Ereignisse in OTel-Spans mit untergeordneten (verschachtelten) Spans für *RuntimeDone-Spans konvertiert werden. Informationen zu *Start- und *Report-Zuordnungen finden Sie in den Tabellen in Zuordnung zu OTel Spans mit Span-Ereignissen, da diese für untergeordnete Spans identisch sind. In dieser Tabelle stellt e das Ereignis dar, das von der Telemetrie-Quelle stammt.

Zuordnung der *RuntimeDone-Ereignisse

OpenTelemetry Schema der Lambda-Telemetrie-API

Span.Name

Ihre Erweiterung generiert den Wert basierend auf dem type-Feld.

Span.StartTime

Verwenden Sie e.time aus dem übereinstimmenden *Start-Ereignis.

Als alternative Vorgehensweise verwenden Sie e.time - e.metrics.durationMs.

Span.EndTime

Nicht zutreffend, da das Ereignis noch nicht abgeschlossen ist.

Span.Kind

Setzen Sie auf Server.

Span.Status

Wenn e.status nicht gleich success ist, dann Wert auf Error festlegen.

Ansonsten auf festlegen Ok.

Span.TraceId

Analysieren Sie den AWS X-Ray-Header, der in e.tracing.value gefunden wurde, und verwenden Sie dann den TraceId-Wert.

Span.ParentId

Analysieren Sie den X-Ray-Header, der in e.tracing.value gefunden wurde, und verwenden Sie dann den Parent-Wert.

Span.SpanId

Verwenden Sie dieselbe SpanId aus dem *Start-Ereignis. Falls nicht verfügbar, verwenden Sie e.tracing.spanId oder generieren Sie eine neue SpanId.

Span.SpanContext.TraceState

Nicht zutreffend für einen X-Ray-Ablaufverfolgungskontext.

Span.SpanContext.TraceFlags

Analysieren Sie den X-Ray-Header, der in e.tracing.value gefunden wurde, und verwenden Sie dann den Sampled-Wert.

Span.Attributes

Ihre Erweiterung kann hier beliebige benutzerdefinierte Werte hinzufügen.

ChildSpan[i].Name

Verwenden Sie e.spans[i].name.

ChildSpan[i].StartTime

Verwenden Sie e.spans[i].start.

ChildSpan[i].EndTime

Verwenden Sie e.spans[i].start + e.spans[i].durations.

ChildSpan[i].Kind

Wie bei übergeordnetem Span.Kind.

ChildSpan[i].Status

Wie bei übergeordnetem Span.Status.

ChildSpan[i].TraceId

Wie bei übergeordnetem Span.TraceId.

ChildSpan[i].ParentId

Verwenden Sie die übergeordnete Span.SpanId.

ChildSpan[i].SpanId

Generieren Sie eine neue SpanId.

ChildSpan[i].SpanContext.TraceState

Nicht zutreffend für einen X-Ray-Ablaufverfolgungskontext.

ChildSpan[i].SpanContext.TraceFlags

Wie bei übergeordnetem Span.SpanContext.TraceFlags.