In diesem Dokument wird das Konzept der Stichprobenerhebung vorgestellt. Dabei wird berücksichtigt, Daten für einen Span werden an Cloud Trace gesendet. Wenn Daten für einen Span an Cloud Trace gesendet werden, wird dieser Span gemustert. Wenn Daten für jeden Span in einem Trace aufgezeichnet wurden, ist der Trace vollständig. In den Protokollen fehlen jedoch häufig Spans, da jede instrumentierte Komponente in einem verteilten Tracing-System unabhängig entscheidet, ob die verarbeitete Span aufgezeichnet werden soll oder nicht.
Jede Komponente trifft zwar selbst die Entscheidung, ob die verarbeitete Spanne Stichprobenerhebungen unterzogen wird, diese Entscheidung kann aber von der Stichprobenerhebungsentscheidung des übergeordneten Elements beeinflusst werden. Angenommen, jede Komponente hat eine Regel, die besagt, "wenn für den übergeordneten Span eine Stichprobe erstellt wurde, dann den aktuellen Span abtasten; Andernfalls 50% der Spans testen“. In diesem Szenario gilt Folgendes:
- Der Haupt-Span bestimmt, ob für alle Spans im Trace Stichproben erhoben werden.
- Wenn die Stammspanne erfasst wird, werden alle Spans im Trace erfasst. Dementsprechend wird der Trace abgeschlossen ist.
Komponenten können ihre Stichprobenentscheidung an das untergeordnete Element weitergeben, indem sie den Kontext verwenden.
Zum Beispiel im World Wide Web Consortium (W3C)
traceparent
-Header,
Mit dem Flag sampled
wird die Stichprobenentscheidung des übergeordneten Elements gespeichert.
Verwechseln Sie die Stichprobenerhebung nicht mit der Weitergabe von Kontext. Die Stichprobenerhebung gibt an, ob eine Komponente Daten zu einer Spanne erfasst. Kontextweitergabe bezieht sich darauf, ob Informationen zum Span, z. B. die Span-ID, an untergeordnete Komponenten übergeben wird.
Stichprobenerhebungsstrategien
Stichprobenentscheidungen können entweder kopf- oder spezifisch erfolgen. Bei kopfbasierten Stichproben wird die Stichprobenentscheidung getroffen, wenn die Anfrage die von der Komponente empfangen wird, die den Span verarbeitet. Bei der endebasierten Stichprobenerhebung wird die Stichprobenentscheidung erst getroffen, wenn der gesamte Trace verfügbar ist.
Möglicherweise stoßen Sie auf den Ausdruck „100% Stichprobe“. in der Dokumentation für verteilte Tracing-Systeme. Dieser Begriff kann sich auf einen Trace oder eine Komponente beziehen. Wenn dieser Wert auf einen Trace angewendet wird, bedeutet das, dass alle span erfasst wurden, was auch bedeutet, dass der Trace vollständig ist. Wenn diese Option auf eine Komponente angewendet wird, wird jede verarbeitete Spanne von der Komponente erfasst.
Kopfbasierte Stichprobenerhebung
Kopfbasierte Sampler sind in der Regel so konfiguriert, dass immer Spannen oder eine probabilistische Stichprobenstrategie verwendet werden:
Bei Konfigurationen vom Typ always sample werden alle Komponenten, die Spans verarbeiten und Trace-Daten schreiben können, von den Spans, die sie verarbeiten, abgetastet. Im Idealfall sind alle Traces vollständig, und haben so die nötigen Informationen, um Fehler zu beheben. Diese Art der Konfiguration kann dazu führen, dass Kontingente überschritten werden, oder Ihre Speicherkostenlimits.
Bei der Wahrscheinlichkeitsstichprobennahme werden nicht alle Spannen ausgewählt. Das tatsächliche Verhalten dieses Ansatzes an der Implementierung der Komponente. Bei einigen Implementierungen haben alle Spans dieselbe Wahrscheinlichkeit, ausgewählt zu werden. Bei anderen ist die Stichprobenentscheidung Das übergeordnete Element beeinflusst, ob ein Span erfasst wird.
Traces enthalten möglicherweise nicht alle Spans. Das kann auf die Verwendung von probabilistischer Stichprobenerhebung, auf das Kontingent oder auf Komponenten zurückzuführen sein, die eine Anfrage verarbeiten, aber die Spanne nicht stichprobenartig auswerten.
Schwanzstichprobenung
Cloud Trace unterstützt keine tail-basierten Stichproben. Stichprobennahme Entscheidungen müssen in den Komponenten getroffen werden, die Daten an Cloud Trace senden.
Wenn Sie eine tail-basierte Stichprobennahme verwenden möchten, Server, der Ablaufverfolgungsinformationen empfängt, die Daten an Cloud Trace nach einer Stichprobenentscheidung Sie können beispielsweise den OpenTelemetry Collector mit dem Tail Sampling Processor verwenden, um eine Entscheidung für die verzögerte Stichprobenerhebung zu treffen.
Wenn Sie die Stichprobenerhebung nach dem Ende der Datenerhebung verwenden möchten, beachten Sie Folgendes:
- Sie müssen alle Spans in einem Trace speichern, bevor Sie eine Entscheidung zur Stichprobenerhebung treffen. Daher benötigen Sie möglicherweise viel temporäre Speicherkapazität, oder anderen Aufwand verursachen.
- Im Allgemeinen müssen alle Komponenten, die Spans für den Trace generieren können, koordiniert werden. Normalerweise leiten Entwickler, die OpenTelemetry verwenden, alle SPANs mit derselben Trace-ID an denselben Collector weiter.
Stichprobenerhebung und Google Cloud-Dienste
Für jeden Google Cloud-Dienst werden eigene Stichprobenentscheidungen getroffen und nicht alle Google Cloud-Dienste werden stichprobenartig untersucht. Das heißt, ein Dienst sendet möglicherweise zu Cloud Trace übertragen.
Wenn die Stichprobenerhebung von einem Google Cloud-Dienst unterstützt wird, implementiert dieser Dienst in der Regel Folgendes:
- Eine Standard-Abtastrate.
- Ein Mechanismus, der anhand der Stichprobenentscheidung des übergeordneten Elements darauf hinweist, ob eine Beispiel für den Span.
- Maximale Abtastrate.
Wenn ein Google Cloud-Dienst die Stichprobenerhebung unterstützen soll, Verwenden Sie den Google Issue Tracker.
Nächste Schritte
Eine Erläuterung dazu, wie Sie eine Stichprobenstrategie nach Span-Namen auswählen, finden Sie unter Jaeger-Remote-Stichprobenerhebung.
Wir empfehlen Ihnen, die folgende Open-Source-Dokumentation zu lesen, um zu ermitteln, welcher Stichprobenmethode für Ihre in der Entwicklung befindlichen und bereitgestellten Anwendungen am besten geeignet ist:
Dokumentation zu Google Cloud-Diensten: