Direkt zum Inhalt

Wie reduziere ich die Anzahl der Protokolle, die mein AWS Glue-Job generiert?

Lesedauer: 3 Minute
0

Mein AWS Glue-Job generiert zu viele Protokolle in Amazon CloudWatch. Ich möchte die Anzahl der generierten Protokolle reduzieren.

Kurzbeschreibung

AWS Glue Spark Extract/Transform/Load (ETL)-Jobs generieren eine Vielzahl von Protokollen, die du verwenden kannst, um interne Fehler zu überwachen und fehlgeschlagene Jobs zu diagnostizieren. Du kannst die Anzahl der Protokolle, die AWS Glue-Jobs auf ihren Instances generieren, nicht kontrollieren, aber du kannst die Ausführlichkeit der Protokolle anpassen.

Verwende die folgenden Methoden, um die Ausführlichkeit des Protokolls anzupassen:

  • Aktiviere die Standardfiltereinstellung für die kontinuierliche Protokollierung.
  • Verwende die Spark-Kontextmethode setLogLevel.
  • Verwende eine benutzerdefinierte log4j.properties-Datei.

Lösung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Standardfiltereinstellung für die kontinuierliche Protokollierung aktivieren

Wenn du die kontinuierliche Protokollierung für deinen Job aktiviert hast, aktiviere den Standardfilter für die Option Protokollfilterung.

Um diesen Filter zu aktivieren, füge mithilfe der AWS-CLI die folgenden Jobparameter hinzu:

'--enable-continuous-cloudwatch-log': 'true''--enable-continuous-log-filter': 'true'

Hinweis: Die kontinuierliche Protokollierung von AWS Glue ist nur in AWS Glue 4.0 und früher verfügbar.

Spark-Kontextmethode setLogLevel verwenden

Du kannst die setLogLevel-Methode von pyspark.context.SparkContext verwenden, um die Protokollierungsstufe für deinen Job festzulegen. Gültigen Protokollierungsstufen sind ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE und WARN. Weitere Informationen findest du unter setLogLevel auf der Apache Spark-Website.

Um die Spark-Kontextmethode zu importieren und die Protokollierungsstufe festzulegen, füge deinem AWS Glue-Job den folgenden Code hinzu:

from pyspark.context import SparkContext
sc = SparkContext()
sc.setLogLevel("new-log-level")

Hinweis: Ersetze new-log-level durch deine neue Protokollierungsstufe. Dieser Code wirkt sich auf das Verhalten des Treiberprotokolls aus, ändert jedoch nicht die Executor-Protokolle.

Weitere Informationen findest du unter Konfigurieren der Protokollierung auf der Apache Spark-Website.

Benutzerdefinierte log4j.properties-Datei verwenden

AWS Glue 3.0 verwendet Log4j 1 für die Protokollierung des Verhaltens und du kannst dieses Verhalten mit der Datei log4j.properties anpassen. AWS Glue 4.0 verwendet Log4j 2 für die Protokollierung des Verhaltens und du kannst dieses Verhalten mit der Datei log4j2.properties anpassen. Weitere Informationen zu Log4j 2 findest du unter Konfigurationseigenschaften auf der Apache Logging Services-Website.

Hinweis: Wenn du eine benutzerdefinierte log4j.properties- oder log4j2.properties-Konfigurationsdatei anwendest, deaktiviert AWS Glue die kontinuierliche Protokollierung. Außerdem sind benutzerdefinierte Log4j-Eigenschaften nur in AWS Glue 4.0 und früheren Versionen verfügbar.

Du kannst deine Protokollierungseinstellungen in die Datei log4j2.properties aufnehmen. Anschließend kannst du die Datei auf Amazon Simple Storage Service (Amazon S3) hochladen und die Datei im AWS Glue-Job verwenden.

Gehe wie folgt vor, um eine benutzerdefinierte Konfigurationsdatei in AWS Glue 4.0 zu verwenden:

  1. Erstelle eine Datei mit dem Namen log4j2.properties, um die Root-Logger-Ebene als Fehler festzulegen.
    Beispiel für eine log4j2.properties-Datei:

    rootLogger.level = error
    rootLogger.appenderRef.stdout.ref = STDOUT
    
    appender.console.type = Console
    appender.console.name = STDOUT
    appender.console.target = SYSTEM_ERR
    appender.console.layout.type = PatternLayout
    appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %p [%t] %c{2} (%F:%M(%L)): %m%n
  2. Lade die Datei log4j2.properties auf Amazon S3 hoch und kopiere die S3-URI der Datei.

  3. Füge im AWS Glue-Job die folgenden Parameter hinzu:

    --extra-files, s3://[objectpath]/log4j2.properties

    Hinweis: Ersetze s3://[objectpath]/log4j.properties durch die S3-URI, die du im vorherigen Schritt verwendet hast.

  4. Speichere den AWS Glue-Job und führe ihn aus.

  5. Überprüfe den zugehörigen Protokollstream in der Protokollgruppe /aws-glue/jobs/error.

Ähnliche Informationen

Überwachung mit Amazon CloudWatch

AWS OFFICIALAktualisiert vor 7 Monaten