Die Korrelation von Ablaufverfolgung zu Protokollen aktivieren
Sie können die Korrelation von Ablaufverfolgung zu Protokollen in Application Signals aktivieren. Dadurch werden automatisch Ablaufverfolgungs-IDs und Span-IDs in die entsprechenden Anwendungsprotokolle eingefügt. Wenn Sie dann eine Ablaufverfolgungs-Detailseite in der Application-Signals-Konsole öffnen, werden die entsprechenden Protokolleinträge (falls vorhanden), die mit der aktuellen Ablaufverfolgung korrelieren, automatisch unten auf der Seite angezeigt.
Angenommen, Sie bemerken z. B. eine Spitze im Latenzdiagramm. Sie können den Punkt im Diagramm auswählen, an dem die Diagnoseinformationen für diesen Zeitpunkt geladen werden sollen. Anschließend wählen Sie die entsprechende Ablaufverfolgung aus, um weitere Informationen zu erhalten. Wenn Sie sich die Ablaufverfolgungsinformationen ansehen, können Sie nach unten scrollen, um die mit der Ablaufverfolgung verknüpften Protokolle zu sehen. Diese Protokolle können Muster oder Fehlercodes aufdecken, die mit den Problemen zusammenhängen, die die Latenzspitze verursacht haben.
Um eine Korrelation der Ablaufverfolgungsprotokolle zu erreichen, nutzt Application Signals Folgendes:
Automatische Logger-MDC-Instrumentierung
für Java. Instrumentierung der OpenTelemetry-Protokollierung
für Python. Die automatischen Instrumentierungen Pino
, Winston oder Bunyan für Node.js.
Alle diese Instrumentierungen werden von der OpenTelemetry-Community bereitgestellt. Application Signals verwendet sie, um Ablaufverfolgungskontexte wie Ablaufverfolgungs-ID und Span-ID in Anwendungsprotokolle einzufügen. Um das zu aktivieren, müssen Sie Ihre Protokollierungskonfiguration manuell ändern, um die automatische Instrumentierung zu aktivieren.
Je nach Architektur, auf der Ihre Anwendung ausgeführt wird, müssen Sie möglicherweise zusätzlich zu den Schritten in diesem Abschnitt auch eine Umgebungsvariable festlegen, um die Korrelation der Ablaufverfolgungsprotokolle zu aktivieren.
Bei Amazon EKS sind keine weiteren Schritte erforderlich.
Auf Amazon ECS sind keine weiteren Schritte erforderlich.
In Amazon EC2 siehe Schritt 4 des Verfahrens unter Schritt 3: Ihre Anwendung instrumentieren und starten.
Nachdem Sie die Korrelation der Ablaufverfolgungsprotokolle aktiviert haben,
Beispiele zur Einrichtung der Korrelation von Ablaufverfolgungsprotokollen
Dieser Abschnitt enthält Beispiele für die Einrichtung der Korrelation von Ablaufverfolgungsprotokollen in verschiedenen Umgebungen.
Spring Boot für Java
Angenommen, Sie haben eine Spring-Boot-Anwendung in einem Ordner namens custom-app. Die Anwendungskonfiguration ist normalerweise eine YAML-Datei mit dem Namen custom-app/src/main/resources/application.yml, die wie folgt aussehen könnte:
spring: application: name: custom-app config: import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888/} ...
Um die Korrelation von Ablaufverfolgungsprotokollen zu aktivieren, fügen Sie die folgende Protokollierungskonfiguration hinzu.
spring: application: name: custom-app config: import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888/} ... logging: pattern: level: trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p
Logback für Java
Fügen Sie in der Protokollierungskonfiguration (z. B. logback.xml) den Ablaufverfolgungskontext trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p in pattern von Encoder ein. In der folgenden Konfiguration wird beispielsweise der Ablaufverfolgungskontext der Protokollnachricht vorangestellt.
<appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>app.log</file> <append>true</append> <encoder> <pattern>trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n</pattern> </encoder> </appender>
Weitere Informationen zu Encodern in Logback unter Encoders
Log4j2 für Java
Fügen Sie in der Protokollierungskonfiguration (z. B. log4j2.xml) den Ablaufverfolgungskontext trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p in PatternLayout ein. In der folgenden Konfiguration wird beispielsweise der Ablaufverfolgungskontext der Protokollnachricht vorangestellt.
<Appenders> <File name="FILE" fileName="app.log"> <PatternLayout pattern="trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n"/> </File> </Appenders>
Weitere Informationen zu Musterlayouts in Log4j2 finden Sie unter Muster-Layout
Log4j für Java
Fügen Sie in der Protokollierungskonfiguration (z. B. log4j.xml) den Ablaufverfolgungskontext trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p in PatternLayout ein. In der folgenden Konfiguration wird beispielsweise der Ablaufverfolgungskontext der Protokollnachricht vorangestellt.
<appender name="FILE" class="org.apache.log4j.FileAppender">; <param name="File" value="app.log"/>; <param name="Append" value="true"/>; <layout class="org.apache.log4j.PatternLayout">; <param name="ConversionPattern" value="trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n"/>; </layout>; </appender>;
Weitere Informationen zu Musterlayouts in Log4j finden Sie unter Klassen-Muster-Layout
Python
Stellen Sie die Umgebungsvariable OTEL_PYTHON_LOG_CORRELATION auf true ein, während Ihre Anwendung ausgeführt wird. Weitere Informationen finden Sie unter Aktivieren der Ablaufverfolgungskontext-Injektion
Node.js
Weitere Informationen zur Aktivierung der Ablaufverfolgungskontext-Injektion in Node.js für die Protokollierungsbibliotheken, die dies unterstützen, finden Sie in den NPM-Verwendungsdokumentationen der automatischen Instrumentationen Pino