Dataproc-Job- und -Clusterlogs können in Cloud Logging angesehen, durchsucht, gefiltert und archiviert werden.
Informationen zu den Kosten finden Sie unter Preise für die Operations-Suite von Google Cloud.
Unter Aufbewahrungsdauer von Logs finden Sie Informationen zur Logging-Aufbewahrung.
Unter Logausschlüsse finden Sie Informationen zum Deaktivieren aller Logs oder Ausschließen von Logs vom Logging.
Unter Übersicht: Routing und Speicher erfahren Sie, wie Sie Logs von Logging an Cloud Storage, BigQuery oder Pub/Sub weiterleiten.
Protokollierungsebenen
Standardmäßig verwendet Dataproc eine Protokollierungsebenevon WARN
für Job-Treiberprogramme. Diese Einstellung kann bei Verwendung der Befehlszeile angepasst werden, sodass Sie einen Job mit der Option --driver-log-levels
einreichen können.
Das spezielle root
-Paket steuert die Ebene des Root-Loggers. Beispiel:
gcloud dataproc jobs submit hadoop ...\
--driver-log-levels root=FATAL,com.example=INFO
Cloud Logging kann für jeden Job auf einer detaillierteren Ebene festgelegt werden. Um beispielsweise Probleme beim Lesen von Dateien aus Cloud Storage zu beheben, können Sie einen Job mit der Option --driver-log-levels
einreichen. Geben Sie dabei die Logebene DEBUG
so an:
gcloud dataproc jobs submit hadoop ...\
--driver-log-levels com.google.cloud.hadoop.gcsio=DEBUG
Protokollierungsebenen für Komponenten
Sie können die Führungs-Logging-Ebenen von Spark, Hadoop, Flink und anderen OSS-Komponenten für Clusterknoten mit einer Clusterinitialisierungsaktion festlegen, die die Datei .../log4j.properties
bearbeitet oder ersetzt (z. B. Apache Log4j 2).
Beispieldatei /etc/spark/conf/log4j.properties
:
# Set everything to be logged to the console. log4j.rootCategory=INFO, console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.target=System.err log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c: %m%n # Settings to quiet third party logs. log4j.logger.org.eclipse.jetty=WARN log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO # Reduce verbosity for other core classes. log4j.logger.org.apache.spark=WARN log4j.logger.org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter=WARN log4j.logger.org.apache.hadoop.conf.Configuration.deprecation=WARN log4j.logger.org.spark-project.jetty.server.handler.ContextHandler=WARN # Spark 2.0 specific output. log4j.logger.org.spark_project.jetty.server.handler.ContextHandler=WARN.
Eine weitere Möglichkeit zum Festlegen von Logebenen: Sie können Logebenen für viele OSS-Komponenten festlegen, wenn Sie einen Dataproc-Cluster mit <component-name>-log4j
-Clusterattributen erstellen.
Logs von Dataproc-Jobtreibern in Logging
Weitere Informationen zum Aktivieren von Dataproc-Jobtreiber-Logs in Logging finden Sie unter Dataproc-Jobausgabe und -logs.
Auf Joblogs in Logging zugreifen
Sie können auf Dataproc-Joblogs mit dem Log-Explorer, dem Befehl gcloud Logging oder der Logging API zugreifen.
Console
Dataproc-Jobtreiber und YARN-Containerlogs werden unter der Ressource Cloud Dataproc-Job aufgelistet.
Beispiel: Jobtreiber-Log nach Ausführung einer Log-Explorer-Abfrage mit der folgenden Auswahl:
- Ressource:
Cloud Dataproc Job
- Logname:
dataproc.job.driver
Beispiel: YARN-Containerlog nach Ausführung einer Log-Explorer-Abfrage mit der folgenden Auswahl:
- Ressource:
Cloud Dataproc Job
- Logname:
dataproc.job.yarn.container
gcloud
Sie können Joblogeinträge mit dem Befehl gcloud logging read lesen. Die Ressourcenargumente müssen in Anführungszeichen gesetzt werden („...”). Mit dem folgenden Befehl werden Clusterlabels verwendet, um die zurückgegebenen Logeinträge zu filtern.
gcloud logging read \ "resource.type=cloud_dataproc_job \ resource.labels.region=cluster-region \ resource.labels.job_id=my-job-id"
Beispielausgabe (unvollständig):
jsonPayload: class: org.apache.hadoop.hdfs.StateChange filename: hadoop-hdfs-namenode-test-dataproc-resize-cluster-20190410-38an-m-0.log ,,, logName: projects/project-id/logs/hadoop-hdfs-namenode --- jsonPayload: class: SecurityLogger.org.apache.hadoop.security.authorize.ServiceAuthorizationManager filename: cluster-name-dataproc-resize-cluster-20190410-38an-m-0.log ... logName: projects/google.com:hadoop-cloud-dev/logs/hadoop-hdfs-namenode
REST API
Sie können mit der Logging REST API Logeinträge auflisten (siehe entries.list).
Dataproc-Cluster-Logs in Logging
Dataproc exportiert die folgenden Apache Hadoop-, Spark-, Hive-, ZooKeeper- und andere Dataproc-Clusterlogs in Cloud Logging.
Logtyp | Logname | Beschreibung |
---|---|---|
Master-Daemon-Logs | hadoop-hdfs hadoop-hdfs-namenode hadoop-hdfs-secondary namenode hadoop-hdfs-zkfc hive-metastore hive-server2 mapred-mapred-historyserver yarn-yarn-resourcemanager yarn-yarn-timelineserver zookeeper |
Journalknoten HDFS-Nameknoten HDFS-sekundärer Nameknoten Zookeeper-Failover-Controller Hive-Metastore Hive-Server2 MapReduce-Jobverlaufsserver YARN-Ressourcenmanager YARN-Zeitachsenserver Zookeeper-Server |
Worker-Daemon-Logs |
Didoop-hdfs-datanode yarn-yarn-nodemanager |
HDFS-Datenknoten YARN-Knotenmanager |
Systemprotokolle |
Autoscaling google.qwiklabs.agent google.qwiklabs.startup |
Dataproc-Autoscaling-Log Dataproc-Agent-Protokoll Dataproc-Skript für Startskripts + Log zur Initialisierungsaktion |
Clusterlogs in Cloud Logging aufrufen
Sie können mit dem Log-Explorer, dem Befehl gcloud Logging oder der Logging API auf Dataproc-Clusterlogs zugreifen.
Console
Wählen Sie die folgende Abfrage aus, um Clusterlogs im Log-Explorer anzusehen:
- Ressource:
Cloud Dataproc Cluster
- Logname: log name
gcloud
Sie können Clusterlogeinträge mit dem Befehl gcloud logging read lesen. Die Ressourcenargumente müssen in Anführungszeichen gesetzt werden („...”). Mit dem folgenden Befehl werden Clusterlabels verwendet, um die zurückgegebenen Logeinträge zu filtern.
gcloud logging read <<'EOF' "resource.type=cloud_dataproc_cluster resource.labels.region=cluster-region resource.labels.cluster_name=cluster-name resource.labels.cluster_uuid=cluster-uuid" EOF
Beispielausgabe (unvollständig):
jsonPayload: class: org.apache.hadoop.yarn.server.resourcemanager.RMAuditLogger filename: yarn-yarn-resourcemanager-cluster-name-m.log ... logName: projects/project-id/logs/yarn-yarn-resourcemanager --- jsonPayload: class: org.apache.hadoop.yarn.server.resourcemanager.RMAuditLogger filename: yarn-yarn-resourcemanager-component-gateway-cluster-m.log ... logName: projects/project-name/logs/yarn-yarn-resourcemanager
REST API
Sie können mit der Logging REST API Logeinträge auflisten (siehe entries.list).
Berechtigungen
Zum Schreiben von Logs in Logging muss das Dataproc-VM-Dienstkonto die IAM-Rolle logging.logWriter
haben. Das Standard-Dataproc-Dienstkonto hat diese Rolle. Wenn Sie ein benutzerdefiniertes Dienstkonto verwenden, müssen Sie dem Dienstkonto diese Rolle zuweisen.