Warum kann ich die Amazon-CloudWatch-Metriken für meinen AWS-Glue-ETL-Auftrag nicht sehen, auch wenn ich Auftrag-Metriken aktiviert habe?

Letzte Aktualisierung: 20.08.2021

Ich habe die Option aktiviert, Job-Metriken für meinen AWS-Glue-Auftrag zum Extrahieren, Transformieren und Laden (ETL) erstellt. Ich kann jedoch die Job-Metriken in Amazon CloudWatch nicht sehen.

Kurzbeschreibung

AWS-Glue sendet alle 30 Sekunden Metriken an CloudWatch, und das CloudWatch-Konsolen-Dashboard ist so konfiguriert, dass diese Metriken jede Minute angezeigt werden. Die AWS-Glue-Metriken stellen Delta-Werte aus zuvor gemeldeten Werten dar. Das Metrik-Dashboard aggregiert die 30-Sekunden-Werte, um einen Wert für die letzte Minute zu erhalten. Die Job-Metriken für Ihren Job werden mit der Initialisierung eines GlueContext im Job-Skript aktiviert. Die Metriken werden erst am Ende einer Apache-Spark-Aufgabe aktualisiert. Die Job-Metriken stellen die Gesamtwerte für alle abgeschlossenen Spark-Aufgaben dar.

Lösung

Erhöhen Sie die Laufzeit Ihres AWS-Glue-Jobs: Die CloudWatch-Metriken werden alle 30 Sekunden gemeldet. Wenn die Laufzeit Ihres Jobs weniger als 30 Sekunden beträgt, werden die Job-Metriken nicht an CloudWatch gesendet. AWS-Glue verwendet die Metriken von Spark, und Spark verwendet die DropWizard-Metrikbibliothek zur Veröffentlichung von Metriken. Um die AWS-Glue-Metriken abzurufen, muss Ihr Job mindestens 30 Sekunden lang ausgeführt werden. Wenn Sie Ihren Job aktualisieren, um mehr Daten zu verarbeiten, kann dies dazu beitragen, die Laufzeit Ihres Jobs zu verlängern. Sie können jedoch eine temporäre Umgehung verwenden, um die Job-Metriken zu sehen. Sie können die Laufzeit Ihres AWS-Glue-Jobs erhöhen, indem Sie die Funktion time.sleep () in Ihren Job einbeziehen. Sie können time.sleep () am Anfang oder Ende des Codes basierend auf Ihrem Anwendungsfall Ihres Jobs einbeziehen.

Wichtig: Die Verwendung der Funktion time.sleep () ist keine bewährte Methode für die Codierung.

Für Python:

import time
time.sleep(30)

Für Scala:

Thread.sleep(30)

Stellen Sie sicher, dass der Job die Spark-Aufgaben abgeschlossen hat: Job-Metriken werden gemeldet, nachdem die Spark-Aufgaben abgeschlossen sind. Überprüfen und bestätigen Sie daher, dass die Spark-Aufgaben für Ihren Job abgeschlossen sind und der Job nicht fehlgeschlagen ist.

Stellen Sie sicher, dass der GlueContext im Job-Skript initialisiert wird: Die GlueContext-Klasse in Ihrem Job-Skript ermöglicht das Schreiben von Metriken in CloudWatch. Wenn Sie ein benutzerdefiniertes Skript verwenden, das nur einen DataFrame und keinen DynamicFrame verwendet, wird die GlueContext-Klasse möglicherweise nicht initialisiert. Dies kann dazu führen, dass die Metriken nicht in CloudWatch geschrieben werden. Wenn Sie ein benutzerdefiniertes Skript verwenden, aktualisieren Sie unbedingt Ihren Job, um die GlueContext-Klasse zu initialisieren.

Stellen Sie sicher, dass die AWS-Glue-IAM-Rolle über die erforderliche Berechtigung verfügt: Überprüfen und bestätigen Sie, dass die IAM-Rolle, die mit dem ETL-Job verbunden ist, über die Berechtigung CloudWatch:PutMetricData verfügt, Metriken in CloudWatch zu erstellen. Wenn Sie eine benutzerdefinierte Rolle verwenden, stellen Sie sicher, dass die Rolle die Berechtigung hat, die Job-Metriken in CloudWatch zu schreiben.
Hinweis: Es ist eine bewährte Methode, die verwaltete AWS-Richtlinie AWSGlueServiceRole zur Verwaltung von Berechtigungen zu verwenden.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?