Konfiguration der adaptiven Probenahme - AWS X-Ray

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.

Konfiguration der adaptiven Probenahme

Das Fehlen kritischer Spuren bei Anomaliespitzen kann die Ursachenanalyse erschweren. Die Aufrechterhaltung hoher Probenraten ist jedoch teuer. Die adaptive Röntgenprobenentnahme bietet einen vollständigen Überblick über Anomalien und kontrolliert die Kosten während des normalen Betriebs. Bei der adaptiven Abtastung legen Sie eine maximale Abtastrate fest, und X-Ray passt sich automatisch innerhalb dieser Grenze an. X-Ray berechnet den minimalen Boost, der zur Erfassung von Fehlerspuren erforderlich ist. Wenn Ihre Basisrate genügend Daten erfasst, erfolgt kein Boost. Sie zahlen nur für zusätzliche Probenahmen, wenn sie benötigt werden.

Vorteile der adaptiven Probenahme:

  • Vollständige Transparenz bei Vorfällen — Verschaffen Sie sich vollständige Nachverfolgbarkeit von Vorfällen ohne manuelles Eingreifen. X-Ray passt die Abtastraten automatisch an, um Fehlerspuren zu erfassen, und kehrt dann zu normalen Raten zurück.

  • Sichtbarkeit der Ursache — Erkennen Sie stets die Ursache von Problemen. X-Ray erfasst kritische Fehlerdaten, auch wenn keine vollständige Spurenprobenahme ausgelöst wird.

  • Kosten optimieren — Kurzfristige Probenahmen (bis zu 1 Minute) und automatische Abklingzeiten verhindern eine Überprobennahme. Sie zahlen nur für die Daten, die Sie zur Problemdiagnose benötigen.

Unterstützte Plattformen SDKs und Plattformen

Unterstütztes SDK — Adaptive Sampling erfordert die neueste Version des ADOT SDK.

Unterstützte Sprache — Java (Version v2.11.5 oder höher)

Ihre Anwendung muss mit dem unterstützten ADOT SDK instrumentiert und entweder zusammen mit dem Amazon CloudWatch Agent oder dem OpenTelemetry Collector ausgeführt werden.

Amazon EC2, Amazon ECS und Amazon EKS sind beispielsweise gängige Plattformen, auf denen AWS Application Signals Anleitungen zur Aktivierung des ADOT SDK und Amazon CloudWatch Agent bereitstellt.

Wählen Sie Ihren adaptiven Sampling-Ansatz

Adaptives Sampling unterstützt zwei Ansätze: Sampling Boost und Anomaly Span Capture. Diese können unabhängig voneinander angewendet oder miteinander kombiniert werden.

Steigerung der Probenahme

Adaptive Sampling Boost basiert auf Sampling-Regeln und funktioniert mit dem bestehenden Kopf-basierten Röntgen-Sampling-Modell. Bei der Stichprobenerhebung werden Entscheidungen über die Stichprobenerhebung beim Stammdienst getroffen und das Sampling-Flag anschließend an alle Dienste in der Aufrufkette weitergegeben.

  • Regelbasiertes Boosten — Boosting ist immer an eine bestimmte Röntgen-Sampling-Regel gebunden. Jede Regel kann ihre eigene maximale Boost-Rate und ihr eigenes Abkühlverhalten definieren.

  • Kopf-basiertes Sampling — Entscheidungen zur Probenahme werden beim Root-Service getroffen, und das Sampling-Flag wird nachgelagert an alle Services in der Aufrufkette weitergegeben.

  • Anomaliegesteuert — X-Ray verwendet das SDK, um Anomaliestatistiken zu melden. Wenn X-Ray Anomalien wie Fehler oder hohe Latenz erkennt, verwendet es diese Statistiken, um eine angemessene Boost-Rate (bis zum konfigurierten Maximum) zu berechnen.

Meldung von Anomalien

Jeder Anwendungsdienst in der Aufrufkette kann über das erforderliche SDK Anomaliestatistiken ausgeben:

  • Root-Dienst — Muss auf einem unterstützten SDK und einer unterstützten Plattform ausgeführt werden, um den Sampling-Boost zu aktivieren. Wenn der Root-Dienst nicht unterstützt wird, erfolgt kein Boost.

  • Downstream-Dienste — Downstream-Dienste melden nur Anomalien; sie können keine Stichprobenentscheidungen treffen. Wenn auf einem nachgelagerten Dienst ein unterstütztes SDK ausgeführt wird, können festgestellte Anomalien einen Anstieg der Probenahme auslösen. Wenn ein nachgelagerter Dienst nicht unterstützt wird (z. B. wenn ein älteres SDK ausgeführt wird), lösen Anomalien bei diesem Dienst keinen Boost aus. Diese Dienste können den Kontext immer noch flussabwärts weitergeben, wenn sie der Standardweiterleitung des Kontextes folgen (z. B. W3C-Trace-Kontext und Baggage). Dadurch wird sichergestellt, dass die SDKs in weiteren nachgelagerten Diensten unterstützten Dienste Anomalien melden können, die einen Boost auslösen.

Erhöhen Sie den Zeitplan und den Umfang

  • Triggerverzögerung — Sie können davon ausgehen, dass ein Sampling-Boost bereits 10 Sekunden nach der Erkennung einer Anomalie durch X-Ray einsetzt.

  • Boost-Periode — Nachdem X-Ray einen Boost ausgelöst hat, hält er bis zu 1 Minute an, bevor er wieder zur Basis-Samplingrate zurückkehrt.

  • Boost-Abkühlung — Nach einem Boost löst X-Ray keinen weiteren Boost für dieselbe Regel aus, bis das Abkühlfenster abgelaufen ist.

    Wenn du zum Beispiel cooldown auf 10 Minuten festlegst und ein Boost endet, kann bis zum nächsten 10-Minuten-Fenster kein neuer Boost ausgelöst werden.

    Sonderfall: Wenn du den Wert cooldown auf 1 Minute festlegst und ein Boost selbst bis zu 1 Minute andauern kann, können Boosts effektiv kontinuierlich ausgelöst werden, wenn die Anomalie weiterhin besteht.

Anmerkung

Verwenden Sie unterstützte Plattformen SDKs und Plattformen für Ihren Root-Service. Sampling Boost funktioniert nur mit unterstützten SDKs Plattformen. Sampling Boost hat zwar eine hohe Wahrscheinlichkeit, Spuren von Anomalien zu erfassen, es kann jedoch sein, dass nicht alle Spuren von Anomalien erfasst werden.

Erhöhen Sie die Sichtbarkeit

Wenn eine Sampling-Regel mit adaptivem Sampling-Boost konfiguriert ist, gibt X-Ray automatisch ausgelieferte Metriken aus, mit denen Sie die Boost-Aktivität überwachen können.

  • Name der MetrikSamplingRate

  • DimensionRuleName (auf den tatsächlichen Regelnamen gesetzt)

Jede Regel, für die diese SamplingRateBoost Option aktiviert ist, veröffentlicht ihre effektive Samplingrate, einschließlich der Basisrate und aller temporären Boosts. Das ermöglicht Ihnen Folgendes:

  • Verfolge, wann Boosts ausgelöst werden

  • Überwachen Sie die effektive Stichprobenrate für jede Regel

  • Korrelieren Sie Boosts mit Anwendungsanomalien (wie Fehlerspitzen oder Latenzereignissen)

Sie können diese Metriken in Amazon CloudWatch Metrics unter dem Namespace AWS/X-Ray einsehen. Der Metrikwert ist eine Gleitkommazahl zwischen 0 und 1, die die effektive Stichprobenrate darstellt.

Konfigurieren Sie den Sampling-Boost mithilfe der Regeln für die X-Ray

Sie können die adaptive Probenahme direkt in Ihren bestehenden Regeln für die Röntgenabtastung aktivieren, indem Sie ein neues SamplingRateBoost Feld hinzufügen. Weitere Informationen finden Sie unter Sampling-Regeln anpassen. Dies bietet eine zentrale Möglichkeit, adaptives Sampling zu ermöglichen, ohne den Anwendungscode zu ändern oder die Anwendungsbereitstellung anzuwenden. Wenn Sie adaptives Sampling aktivieren, erhöht X-Ray automatisch die Abtastung bei Anomalien wie Fehlerspitzen oder Latenzausreißern und hält gleichzeitig die Abtastraten innerhalb des konfigurierten Maximums. SamplingRateBoostkann auf jede benutzerdefinierte Stichprobenregel mit Ausnahme der Stichprobenregel angewendet werden. Default

Das SamplingRateBoost Feld definiert die Obergrenze und das Verhalten bei anomaliebedingter Probenahme.

"SamplingRateBoost": { "MaxRate": 0.25, "CooldownWindowMinutes": 10 }

Der MaxRate definiert die maximale Abtastrate, mit der X-Ray Anomalien erkennt. Der Wertebereich ist 0.0 bis. 1.0 "MaxRate": 0.25Ermöglicht es beispielsweise, während eines Zeitfensters mit Anomalien die Anzahl der Anfragen anhand von Stichproben um bis zu 25% zu erhöhen. X-Ray bestimmt je nach Anomalieaktivität die angemessene Rate zwischen Ihrem Ausgangswert und dem Maximum.

Das CooldownWindowMinutes definiert ein Zeitfenster (in Minuten), in dem nur eine Erhöhung der Abtastrate ausgelöst werden kann. Nachdem ein Boost erfolgt ist, sind bis zum nächsten Fenster keine weiteren Boosts mehr zulässig. Der Wertetyp ist eine Ganzzahl (Minuten).

Beispielregel mit adaptiver Stichprobe

{ "RuleName": "MyAdaptiveRule", "Priority": 1, "ReservoirSize": 1, "FixedRate": 0.05, "ServiceName": "*", "ServiceType": "*", "Host": "*", "HTTPMethod": "*", "URLPath": "*", "SamplingRateBoost": { "MaxRate": 0.25, "CooldownWindowMinutes": 10 } }

In diesem Beispiel beträgt die Ausgangsstichprobe 5% (FixedRate: 0.05). Bei Anomalien kann die Probenahme durch X-Ray um bis zu 25% erhöht werden ()MaxRate: 0.25. Boost nur einmal alle 10 Minuten.

Konfiguration des Zustands von Anomalien

Wenn keine Konfiguration für Anomaliebedingungen angegeben ist, verwendet das ADOT SDK HTTP 5xx-Fehlercodes als Standardbedingung für Anomalien, um den Sampling-Boost auszulösen.

Sie können Anomaliebedingungen auch lokal im unterstützten ADOT SDK mithilfe von Umgebungsvariablen fein abstimmen. Weitere Informationen finden Sie unter Lokale SDK-Konfiguration.

Anomalie erstreckt sich über die Erfassung

Durch die Erfassung von Anomaliebereichen wird sichergestellt, dass kritische Bereiche, die Anomalien darstellen, immer aufgezeichnet werden, auch wenn nicht die gesamte Spur erfasst wird. Diese Funktion ergänzt die Steigerung der Probenahme, indem sie sich auf die Erfassung der Anomalie selbst konzentriert, anstatt die Probenahme für future Spuren zu erhöhen.

Wenn das ADOT SDK eine Anomalie erkennt, gibt es diese Spanne sofort aus, unabhängig von der Entscheidung für die Probenahme. Da das SDK nur Spans ausgibt, die sich auf die Anomalie beziehen, handelt es sich bei diesen Traces um Teil-Traces, nicht um vollständige Transaktionen. end-to-end

Sobald das ADOT SDK eine Spanne mit Anomalien erkennt, versucht es, so viele Spans wie möglich aus derselben Trace auszusenden. Alle im Rahmen dieser Funktion ausgegebenen Spans sind mit dem Attribut, gekennzeichnet. aws.trace.flag.sampled = 0 Auf diese Weise können Sie bei der Transaktionssuche und -analyse auf einfache Weise partielle Spuren (Erfassung von Anomalien) von vollständigen Spuren (normale Probenahme) unterscheiden.

Wir empfehlen, Transaction Search zu integrieren, um partielle Traces anzeigen und abfragen zu können. Das folgende Beispiel zeigt eine Serviceseite in der Application Signals Console. ServiceC ist mit der Erfassung von Anomalie-Spannen konfiguriert und ist Teil einer Anrufkette, bei der der Sampling-Boost angewendet wird. Diese Konfiguration generiert sowohl vollständige als auch teilweise Traces. Sie können das aws.trace.flag.sampled Attribut verwenden, um zwischen Trace-Typen zu unterscheiden.

Anomalie erstreckt sich über die gesamte Erfassung

Die Erfassung von Anomaliespannen kann nur über den aktiviert oder angepasst werden. Lokale SDK-Konfiguration

Lokale SDK-Konfiguration

Sie können Funktionen für adaptives Sampling im ADOT SDK konfigurieren, indem Sie eine YAML-Konfiguration über eine Umgebungsvariable bereitstellen. Die lokale Konfiguration bietet eine detaillierte Kontrolle über Anomaliebedingungen und Schwellenwerte.

Dies ist für die Erfassung von Anomaliebereichen und optional für die Anpassung der Bedingungen für den Probenahmeanstieg erforderlich. Im Folgenden finden Sie ein Beispiel für die Konfiguration:

version: 1.0 anomalyConditions: - errorCodeRegex: "^5\\d\\d$" usage: both - operations: - "/api" errorCodeRegex: "^429|5\\d\\d$" highLatencyMs: 300 usage: sampling-boost - highLatencyMs: 1000 usage: anomaly-span-capture anomalyCaptureLimit: anomalyTracesPerSecond: 1

Die Felddefinitionen sind unten aufgeführt:

  • version— Schemaversion für die Konfigurationsdatei

  • anomalyConditions— Definiert die Bedingungen, unter denen Anomalien erkannt werden, und wie sie verwendet werden

    • errorCodeRegex— Regulärer Ausdruck, der definiert, welche HTTP-Statuscodes als Anomalien betrachtet werden

    • operations— Liste der Operationen oder Endpunkte, für die die Bedingung gilt

    • highLatencyMs— Latenzschwellenwert (in Millisekunden), bei dessen Überschreitung Zeitspannen als Anomalien behandelt werden

    • usage— Definiert, für welches Feature die Bedingung gilt:

      • both— Gilt für Sampling-Boost und Erfassung von Anomalie-Spannen (Standardeinstellung, wenn keine Verwendung angegeben ist)

      • sampling-boost— Wird nur zum Auslösen von Sampling-Boosts verwendet

      • anomaly-span-capture— Wird nur für die Erfassung von Anomaliebereichen verwendet

  • anomalyCaptureLimit— Definiert Grenzwerte dafür, wie viele Spuren mit Anomaliespannen ausgegeben werden.

    anomalyTracesPerSecond— Maximale Anzahl von Traces, die pro Sekunde erfasst werden, um eine übermäßige Spanne zu verhindern (der Standardwert ist 1, falls nicht anomalyCaptureLimit vorhanden).

Anmerkung
  • AnomalyConditionsüberschreibt die standardmäßige Anomaliebedingung für Sampling-Boost (HTTP 5xx). Wenn Sie die Standardbedingung beibehalten möchten, während Sie die lokale Konfiguration verwenden, müssen Sie sie explizit in jedes Element von aufnehmen. AnomalyConditions

  • Für jedes anomalyConditions Element:

    • Wenn das operations Feld weggelassen wird, gilt die Bedingung für alle Operationen (Service Level)

    • Wenn das operations Feld zwar vorhanden, aber auf eine leere Liste gesetzt ist, gilt die Bedingung für „Keine Operationen“, sodass dieses Element nicht aktiviert ist

    • Wenn errorCodeRegex sowohl als auch weggelassen highLatencyMs werden, gibt es für die Bedingung keine zu bewertenden Anomaliekriterien, sodass dieses Element nicht berücksichtigt werden kann

  • Logische Beziehungen:

    • Zwischen den Elementen in anomalyConditions der Datei ist die Beziehung ODER.

    • Innerhalb eines einzelnen Elements werden mehrere Felder (z. B. errorCodeRegex undhighLatencyMs) mit UND kombiniert.

      Zum Beispiel:

      errorCodeRegex: "^429|5\\d\\d$" highLatencyMs: 300

      Diese Bedingung bedeutet, dass der Statuscode 429 oder 5xx UND einer Latenz von ≥ 300 ms entspricht.

Wenden Sie die lokale Konfiguration auf das ADOT SDK an

Sie können die lokale Konfiguration auf das ADOT SDK anwenden, indem Sie die Umgebungsvariable festlegen. AWS_XRAY_ADAPTIVE_SAMPLING_CONFIG Der Wert muss ein gültiges YAML-Dokument sein (inline oder verschachtelt).

Beispielsweise legen Amazon EC2 und Amazon ECS die Umgebungsvariable direkt fest:

AWS_XRAY_ADAPTIVE_SAMPLING_CONFIG="{version: 1.0, anomalyConditions: [{errorCodeRegex: \"^500$\", usage: \"sampling-boost\"}, {errorCodeRegex: \"^501$\", usage: \"anomaly-trace-capture\"}], anomalyCaptureLimit: {anomalyTracesPerSecond: 10}}"

Definieren Sie für Amazon EKS die Umgebungsvariable in der Pod-Spezifikation als verschachteltes YAML:

apiVersion: v1 kind: Pod metadata: name: adot-sample spec: containers: - name: adot-app image: my-app:latest env: - name: AWS_XRAY_ADAPTIVE_SAMPLING_CONFIG value: | version: 1.0 anomalyConditions: - errorCodeRegex: "^500$" usage: sampling-boost - errorCodeRegex: "^501$" usage: anomaly-trace-capture anomalyCaptureLimit: anomalyTracesPerSecond: 10