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.
Veröffentlichen Sie Amazon EMR-Protokolle in CloudWatch Logs
-Übersicht
Amazon EMR on EC2 bietet eine native Integration mit Amazon CloudWatch Logs, sodass Sie Cluster-Protokolle direkt an CloudWatch diese senden können. Diese Funktion vereinfacht die Protokollverwaltung und bietet zentralen Zugriff auf Ihre EMR-Cluster-Protokolle zur Überwachung, Fehlerbehebung und Analyse.
Wenn die CloudWatch Protokollierung aktiviert ist, können Sie automatisch Protokolle aus Ihren EMR-Clustern erfassen und an CloudWatch Protokollgruppen streamen. Dazu gehören Protokolle zur Schrittausführung, Spark-Treiberprotokolle und Spark-Executor-Protokolle, sodass Sie einen umfassenden Einblick in Ihre Clustervorgänge und das Anwendungsverhalten erhalten.
Die CloudWatch Protokollierungsfunktion ist ab Amazon EMR Version 7.11.0 verfügbar und wird bei der Erstellung Ihres Clusters über den MonitoringConfiguration Parameter konfiguriert. Nach der Aktivierung werden die Protokolle bei ihrer Generierung automatisch gestreamt, sodass über die Konsole oder API nahezu in Echtzeit auf Protokolldaten zugegriffen werden kann. CloudWatch CloudWatch
Voraussetzungen
Bevor Sie die CloudWatch Protokollierung für Ihren EMR-Cluster aktivieren, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
-
Amazon EMR-Version: Ihr Cluster muss Amazon EMR Version 7.11.0 oder höher verwenden.
-
CloudWatch Agentenanwendung: Der Amazon CloudWatch Agent muss auf Ihrem Cluster installiert sein.
-
IAM-Berechtigungen: Das EC2 Instance-Profil für Ihren Cluster muss über die erforderlichen CloudWatch Logs-Berechtigungen verfügen.
-
VPC-Endpunkte (für private Subnetze): Wenn sich Ihr Cluster in einem privaten Subnetz befindet, müssen Sie VPC-Endpunkte für Logs konfigurieren. CloudWatch
Berechtigungen
Der CloudWatch Agent benötigt spezielle AWS Identity and Access Management(IAM-) Berechtigungen, um Protokollgruppen zu erstellen, Protokollstreams zu erstellen und Protokollereignisse in Logs zu schreiben. CloudWatch Diese Berechtigungen müssen an das EC2 Amazon-Instance-Profil angehängt werden, das von Ihrem EMR-Cluster verwendet wird.
Erforderliche IAM-Richtlinie
Fügen Sie Ihrem EC2 Instance-Profil für Amazon EMR die folgende Richtlinie hinzu, um die erforderlichen Berechtigungen zu gewähren:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:PutRetentionPolicy", "logs:DescribeLogStreams", "logs:DescribeLogGroups", "logs:CreateLogStream", "logs:CreateLogGroup" ], "Resource": "*", "Sid": "AllowCWACloudWatchLogs" } ] }
Richtlinie anhängen
So fügen Sie diese Richtlinie Ihrem EC2 Instanzprofil für EMR hinzu:
-
Navigieren Sie zur IAM-Konsole.
-
Suchen Sie das Instance-Profil, das von Ihrem EMR-Cluster verwendet wird. Das ist in der Regel der Fall.
EMR_EC2_DefaultRole -
Erstellen Sie eine neue Inline-Richtlinie oder fügen Sie eine vom Kunden verwaltete Richtlinie mit den oben genannten Berechtigungen hinzu.
-
Speichern Sie die Richtlinienänderungen.
Weitere Informationen zu IAM-Rollen für Amazon EMR finden Sie unter Konfigurieren von IAM-Rollen für Amazon EMR-Berechtigungen für AWS Dienste und Ressourcen im Amazon EMR Management Guide.
CloudWatch Protokollierung konfigurieren
Sie können die CloudWatch Protokollierung aktivieren, wenn Sie einen neuen EMR-Cluster über die AWS Management Console erstellen AWS CLI, oder AWS SDKs. Die Konfiguration wird über den MonitoringConfiguration Parameter angegeben.
Verwenden der AWS Managementkonsole
So erstellen Sie einen Cluster mit CloudWatch Protokollierung von der Konsole aus:
-
Navigieren Sie zur AWS EMR-Konsole
. -
Wählen Sie Cluster erstellen.
-
Wählen Sie unter Name und Anwendungen eine Amazon EMR-Version von 7.11.0 oder höher aus.
-
Wählen Sie unter Anwendungspaket die Anwendungen aus, die Sie installieren möchten, und stellen Sie sicher, dass Amazon CloudWatch Agent in Ihrer Auswahl enthalten ist.
-
Wählen Sie unter Cluster-Protokolle die Option Cluster-spezifische Protokolle auf Amazon veröffentlichen aus. CloudWatch
-
(Optional) Konfigurieren Sie die folgenden Einstellungen:
-
Name der Protokollgruppe — Benutzerdefinierter Protokollgruppenname. Der Standardwert ist
/aws/emr/{cluster_id}. -
Logstream-Präfix — Präfix für Log-Stream-Namen Die Standardeinstellung ist
empty. -
CloudWatch KMS-Schlüssel — KMS-Schlüssel-ARN für die Protokollverschlüsselung (optional).
-
Protokolltypen — Wählen Sie aus, welche Protokolltypen erfasst werden sollen (Standard: Step und Spark-Treiber)
-
-
Vervollständigen Sie die verbleibenden Cluster-Konfigurationseinstellungen.
-
Wählen Sie Cluster erstellen.
Nachdem der Cluster erstellt wurde, können Sie auf der Seite mit den CloudWatch EMR-Clusterdetails unter Clusterverwaltung → Protokollziel in Amazon CloudWatch auf den Link Logs zugreifen.
Verwenden Sie den AWS CLI
Sie können die CloudWatch Protokollierung AWS CLI mit dem create-cluster Befehl aktivieren. Der CloudWatch Agent muss im --applications Parameter enthalten sein, und die Protokollierung wird über den --monitoring-configuration Parameter konfiguriert.
Beispiel: Standardkonfiguration
EMR erfasst automatisch nur Schrittprotokolle und Spark-Treiberprotokolle und sendet sie an die Standard-Protokollgruppe.
aws emr create-cluster \ --name "EMR cluster with CloudWatch Logs" \ --release-label emr-7.11.0 \ --applications Name=Spark Name=AmazonCloudWatchAgent \ --instance-type m7g.2xlarge \ --instance-count 3 \ --use-default-roles \ --monitoring-configuration '{ "CloudWatchLogConfiguration": { "Enabled": true } }'
Bei Verwendung der Standardkonfiguration:
-
Name der Protokollgruppe:
/aws/emr/{cluster_id}(wo automatisch durch Ihre Cluster-ID ersetzt{cluster_id}wird). -
Protokollstream-Präfix: Leer (kein Präfix).
-
Protokolltypen:
STEP_LOGSundSPARK_DRIVERaktiviert, wobei jeweilsSTDOUTsowohl als auch erfasstSTDERRwerden. -
Verschlüsselung: Keine vom Kunden verwalteten Schlüssel (verwendet standardmäßig CloudWatch serverseitige Verschlüsselung)
Beispiel: Benutzerdefinierte Konfiguration
Dieses Beispiel zeigt eine benutzerdefinierte Konfiguration mit bestimmten Protokollgruppennamen, KMS-Verschlüsselung und ausgewählten Protokolltypen.
aws emr create-cluster \ --name "EMR cluster with custom CloudWatch Logs" \ --release-label emr-7.11.0 \ --applications Name=Spark Name=AmazonCloudWatchAgent \ --instance-type m7g.2xlarge \ --instance-count 3 \ --use-default-roles \ --monitoring-configuration '{ "CloudWatchLogConfiguration": { "Enabled": true, "LogGroupName": "/my-company/emr/production", "LogStreamNamePrefix": "cluster-prod", "EncryptionKeyArn": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012", "LogTypes": { "STEP_LOGS": ["STDOUT", "STDERR"], "SPARK_DRIVER": ["STDOUT", "STDERR"], "SPARK_EXECUTOR": ["STDERR", "STDOUT"] } } }'
Diese Konfiguration:
-
Erstellt Protokolle in einer benutzerdefinierten Protokollgruppe
/my-company/emr/production. -
Stellt allen Log-Stream-Namen das Präfix.
cluster-prod -
Verschlüsselt Protokolle mit dem angegebenen KMS-Schlüssel.
-
Erfasst alle Protokolltypen — Schrittprotokolle, Spark-Treiberprotokolle und Spark-Executor-Protokolle.
Weitere Informationen zur Verwendung von AWS CLI mit Amazon EMR finden Sie in der AWS CLI Befehlsreferenz für EMR.
Konfigurationsreferenz
CloudWatchLogConfiguration Parameter
Das CloudWatchLogConfigurationv Objekt unterstützt die folgenden Parameter:
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Enabled |
Boolesch | Ja | Auf einstellen, true um die CloudWatch Protokollierung zu aktivieren. Auf deaktivieren false setzen. |
LogGroupName |
Zeichenfolge | Nein | Der Name der CloudWatch Protokollgruppe. Standard: /aws/emr/{cluster_id} |
LogStreamNamePrefix |
Zeichenfolge | Nein | Präfix für Log-Stream-Namen. Standard: Leere Zeichenfolge |
EncryptionKeyArn |
Zeichenfolge | Nein | ARN des KMS-Schlüssels für die Protokollverschlüsselung. Wenn nicht angegeben, werden die Protokolle CloudWatch serverseitig verschlüsselt. |
LogTypes |
Objekt | Nein | Gibt an, welche Protokolltypen erfasst werden sollen. Standard: STEP_LOGS und SPARK_DRIVER Typen mit STDOUT und STDERR. |
Typen von Protokollen
Amazon EMR unterstützt drei Protokolltypen, von denen jeder sowohl Standardausgabe- als auch Standardfehlerströme erfasst:
| Protokolltyp | Description | Verfügbare Streams |
|---|---|---|
STEP_LOGS |
EMR-Schrittausführungsprotokolle, einschließlich Step-Controller-Logs | STDOUT, STDERR |
SPARK_DRIVER |
Apache Spark-Treiberprotokolle von Spark-Anwendungen | STDOUT, STDERR |
SPARK_EXECUTOR |
Apache Spark-Executor-Protokolle von Worker-Knoten | STDOUT, STDERR |
Konfiguration der Standard-Protokolltypen
Wenn Sie den LogTypes Parameter nicht angeben, verwendet EMR die folgende Standardkonfiguration:
"LogTypes": { "STEP_LOGS": ["STDOUT", "STDERR"], "SPARK_DRIVER": ["STDOUT", "STDERR"] }
Konfiguration der benutzerdefinierten Protokolltypen
Sie können anpassen, welche Protokolltypen erfasst werden sollen, indem Sie den LogTypes Parameter explizit angeben. Um beispielsweise nur Schrittprotokolle zu erfassen:
"LogTypes": { "STEP_LOGS": ["STDOUT", "STDERR"] }
Oder um nur Standardfehler von Spark-Treibern zu erfassen:
"LogTypes": { "SPARK_DRIVER": ["STDERR"] }
Benennung von Protokollgruppen und Streams
CloudWatch organisiert Logs in Log-Gruppen und Log-Streams:
-
Protokollgruppe: Eine Sammlung von Protokollstreams, die dieselben Einstellungen für Aufbewahrung, Überwachung und Zugriffskontrolle verwenden.
-
Standardname:
/aws/emr/{cluster_id} -
Benutzerdefinierter Name: Jeder gültige CloudWatch Protokollgruppenname, den Sie angeben.
-
-
Log Stream: Eine Folge von Protokollereignissen aus einer einzigen Quelle:
-
Benennungsmuster:
-
Schrittprotokolle:
{prefix}/steps/{step_id}/{file_name}. -
Spark-Treiber- und Executor-Protokolle:
{prefix}/applications/{application_id}/{container_id}/{file_name}
-
-
Beispiele:
-
/steps/s-ABCDEFG123456/stdout -
cluster-prod/steps/s-ABCDEFG123456/stderr -
/applications/application_1234567890_0001/container_1234567890_0001_01_000001/stdout
-
-
Protokolle verschlüsseln mit AWS KMS
Sie können Ihre CloudWatch Protokolle im Ruhezustand mit AWS Key Management Service (KMS) verschlüsseln. Um die Verschlüsselung zu aktivieren:
-
Erstellen oder identifizieren Sie einen KMS-Schlüssel in derselben AWS Region wie Ihr EMR-Cluster.
-
Stellen Sie sicher, dass die KMS-Schlüsselrichtlinie dem CloudWatch Logs-Dienst die Verwendung des Schlüssels ermöglicht.
-
Fügen Sie den
EncryptionKeyArnParameter zu Ihrem hinzuCloudWatchLogConfiguration.
Ausführliche Informationen zum Verschlüsseln von CloudWatch Protokolldaten finden Sie unter Verschlüsseln von Protokolldaten in CloudWatch Logs using. AWS Key Management Service
Beispiel mit KMS-Verschlüsselung
{ "CloudWatchLogConfiguration": { "Enabled": true, "EncryptionKeyArn": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } }
Logs anzeigen CloudWatch
Wenn Ihr Cluster mit aktivierter CloudWatch Protokollierung ausgeführt wird, können Sie Ihre Protokolle über die CloudWatch Konsole oder API anzeigen und analysieren.
Von der EMR-Konsole aus auf Protokolle zugreifen
Am schnellsten können Sie direkt von der EMR-Konsole aus auf Ihre Cluster-Logs zugreifen:
-
Navigieren Sie zur Amazon-EMR-Konsole.
-
Wählen Sie Ihren Cluster aus der Clusterliste aus.
-
Suchen Sie auf der Seite mit den Cluster-Details den Abschnitt Clusterverwaltung.
-
Klicken Sie auf den CloudWatch Link Ziel in Amazon protokollieren.
Über diesen Link gelangen Sie direkt zur CloudWatch Logs-Konsole, die nach der Protokollgruppe Ihres Clusters gefiltert wurde.
Von der CloudWatch Konsole aus auf Logs zugreifen
So navigieren Sie manuell zu Ihren Logs in CloudWatch:
-
Öffnen Sie die CloudWatch -Konsole
. -
Wählen Sie im Navigationsbereich Protokollgruppen aus.
-
Suchen Sie Ihre Protokollgruppe (Standard:
/aws/emr/{cluster_id}oder Ihren benutzerdefinierten Protokollgruppennamen) -
Wählen Sie die Protokollgruppe aus, um die verfügbaren Log-Streams anzuzeigen.
-
Wählen Sie einen Protokollstream aus, um die zugehörigen Protokollereignisse anzuzeigen.
Weitere Informationen zur Arbeit mit CloudWatch Logs finden Sie im Amazon CloudWatch Logs-Benutzerhandbuch.
Überlegungen
CloudWatch Verhalten der Agenten
Der Amazon CloudWatch Agent bietet sowohl Metriken als auch Protokollierungsfunktionen:
-
Wenn Sie den CloudWatch Agenten alleine (ohne
MonitoringConfiguration) aktivieren, werden nur CloudWatch Metriken an veröffentlicht CloudWatch. Es werden keine Protokolle gesendet. -
Für die Aktivierung der CloudWatch Protokollierung sind sowohl die CloudWatch Agent-Anwendung als auch der
MonitoringConfigurationParameter with erforderlichCloudWatchLogConfiguration. Dadurch werden Metriken und Protokollierung zusammen aktiviert.
Nur die CloudWatch Protokollierung aktivieren ( CloudWatch Metriken deaktivieren)
Wenn Sie die CloudWatch Protokollierung aktivieren, aber die Funktion zur Erfassung von Metriken deaktivieren möchten, können Sie den CloudWatch Agenten so konfigurieren, dass der Export von Metriken beendet wird. Fügen Sie Ihrer Clusterkonfiguration die folgende Klassifizierung hinzu:
[ { "Classification": "emr-metrics", "Properties": {}, "Configurations": [ { "Classification": "emr-system-metrics", "Properties": {}, "Configurations": [] } ] } ]
Weitere Informationen zu CloudWatch Metriken finden Sie unter Metriken mit Amazon überwachen CloudWatch.
Bekannte Beschränkungen
- Datenpunkte von Metriken bei Log-Uploads:
-
Wenn die CloudWatch Protokollierung aktiv ist, können Sie in Zeiten hoher Protokollaktivität gelegentlich Lücken in den CloudWatch Metrikdaten feststellen, insbesondere bei der schrittweisen Übermittlung. Dies liegt daran, dass der EMR-Instanzcontroller den CloudWatch Agenten neu startet, um neue Protokollkonfigurationen anzuwenden, wenn Schritte gesendet werden, wodurch die Erfassung von Metriken vorübergehend unterbrochen wird. Dies hat keinen Einfluss auf die Protokollzustellung oder die Cluster-Funktionalität.
Anforderungen an private Subnetze
Um CloudWatch Protokolle in Logs für einen EMR-Cluster in einem privaten Subnetz zu veröffentlichen, erstellen Sie den VPC-Endpunkt CloudWatch Logs und verknüpfen Sie ihn mit der VPC Ihres Clusters.
Weitere Informationen zu CloudWatch Logs-Endpunkten finden Sie unter Amazon CloudWatch Logs-Endpunkte und Kontingente im AWS Allgemeinen Referenzhandbuch.
Kostenüberlegungen
CloudWatch Die Gebühren für Logs basieren auf:
-
Datenaufnahme: Volumen der aufgenommenen Protokolldaten CloudWatch
-
Speicherung: Menge der gespeicherten Protokolldaten, basierend auf Ihren Aufbewahrungseinstellungen
-
Datenanalyse: Abfragen werden mit CloudWatch Logs Insights ausgeführt
So senken Sie die Kosten:
-
Legen Sie die entsprechenden Aufbewahrungsfristen für Ihre Protokollgruppen fest.
-
Verwenden Sie selektive Protokolltypen, um nur die Protokolle zu erfassen, die Sie benötigen.
-
Erwägen Sie die Verwendung der Amazon S3 S3-Protokollierung für die langfristige Speicherung von Protokollen zu geringeren Kosten.
Aktuelle Preisinformationen finden Sie unter CloudWatch Amazon-Preise.
Weitere Ressourcen
-
Metriken mit Amazon überwachen CloudWatch — Informationen zur Erfassung von CloudWatch Kennzahlen
-
IAM-Rollen für Amazon EMR konfigurieren — IAM-Rollenkonfiguration für EMR-Cluster
-
Amazon CloudWatch Logs-Benutzerhandbuch — Vollständiger Leitfaden zu den CloudWatch Logs-Funktionen
-
AWS CLI Befehlsreferenz für EMR — CLI-Referenzdokumentation