Dataproc-Logs

Dataproc-Job- und -Clusterlogs können in Cloud Logging angesehen, durchsucht, gefiltert und archiviert werden.

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.

Weitere Informationen