Diagnostica dei cluster Dataproc

L'analisi delle informazioni di log e configurazione può essere utile per la risoluzione dei problemi di un cluster o di un job. Purtroppo, sono presenti molti file di log e configurazione e la raccolta di ciascuno per l'indagine può richiedere molto tempo. Per risolvere questo problema, i cluster Dataproc supportano uno speciale comando diagnose tramite l'interfaccia a riga di comando di Google Cloud. Questo comando raccoglie e archivia i log di sistema importanti, Spark/Hadoop e Dataproc, e carica l'archivio nel bucket Cloud Storage collegato al cluster.

Utilizzo del comando di diagnostica dell'interfaccia a riga di comando di Google Cloud

Puoi utilizzare il comando diagnose dell'interfaccia a riga di comando Google Cloud sui tuoi cluster Dataproc (vedi Dataproc e interfaccia a riga di comando di Google Cloud).

Dopo aver installato e configurato l'interfaccia a riga di comando gcloud, puoi eseguire il comando gcloud dataproc clusters diagnose sul tuo cluster come mostrato di seguito. Sostituisci cluster-name con il nome del cluster e region con l'area geografica del cluster, ad esempio, --region=us-central1.

gcloud dataproc clusters diagnose cluster-name \
    --region=region \
    ... other args ...

Il comando restituisce la posizione Cloud Storage del file di archivio contenente i dati (vedi Elementi inclusi nell'output del comando di diagnostica). Per informazioni su come accedere e copiare il file di archivio, consulta la sezione Condividere i dati raccolti dalla diagnostica.

Esegui lo script di diagnostica dal nodo master (facoltativo)

Il comando di diagnostica dell'interfaccia a riga di comando di Google Cloud può generare un errore se il cluster è in stato di errore e non può accettare attività di diagnostica dal server Dataproc. Per evitare questo problema, puoi accedere tramite SSH al nodo nodo master, scaricare lo script di diagnostica ed eseguire lo script localmente sul nodo master:

gcloud compute ssh hostname
gsutil cp gs://dataproc-diagnostic-scripts/diagnostic-script.sh .
sudo bash diagnostic-script.sh

Il tarball diagnostico verrà salvato in una directory temporanea locale. Se vuoi, puoi seguire le istruzioni nell'output comando per caricarlo in un bucket Cloud Storage e condividerlo con l'Assistenza Google.

Condivisione dei dati raccolti tramite la diagnostica

Puoi condividere l'archivio generato dal comando diagnose in due modi:

  1. Scarica il file da Cloud Storage, quindi condividi l'archivio scaricato.
  2. Cambia le autorizzazioni nell'archivio per consentire ad altri utenti o progetti Google Cloud Platform di accedere al file.

Ad esempio, il seguente comando aggiunge le autorizzazioni di lettura all'archivio di diagnostica in un test-project:

gsutil -m acl ch -g test-project:R path-to-archive

Elementi inclusi nell'output del comando di diagnostica

Il comando diagnose include i seguenti file di configurazione, log e output del cluster in un file di archivio. Il file di archivio viene inserito nel bucket Cloud Storage associato al tuo cluster Dataproc, come discusso in precedenza.

Riepilogo diagnostico

Lo script di diagnostica analizza automaticamente i dati raccolti e genera un valore summary.txt nella radice del tarball diagnostico. Il riepilogo fornisce una panoramica generale dello stato del cluster, tra cui YARN, HDFS, disco, networking e così via, oltre ad avvisi per avvisarti di potenziali problemi.

Informazioni su daemon e servizi

Comando eseguito Posizione nell'archivio
yarn node -list -all /system/yarn-nodes.log
hdfs dfsadmin -report -live -decommissioning /system/hdfs-nodes.log
hdfs dfs -du -h /system/hdfs-du.log
service --status-all /system/service.log
systemctl --type service /system/systemd-services.log
curl "http://${HOSTNAME}:8088/jmx" /metrics/resource_manager_jmx
curl "http://${HOSTNAME}:8088/ws/v1/cluster/apps" /metrics/yarn_app_info
curl "http://${HOSTNAME}:8088/ws/v1/cluster/nodes" /metrics/yarn_node_info
curl "http://${HOSTNAME}:9870/jmx" /metrics/namenode_jmx

Informazioni su JVM

Comando eseguito Posizione nell'archivio
jstack -l "${DATAPROC_AGENT_PID}" jstack/agent_${DATAPROC_AGENT_PID}.jstack
jstack -l "${PRESTO_PID}" jstack/agent_${PRESTO_PID}.jstack
jstack -l "${JOB_DRIVER_PID}" jstack/driver_${JOB_DRIVER_PID}.jstack
jinfo "${DATAPROC_AGENT_PID}" jinfo/agent_${DATAPROC_AGENT_PID}.jstack
jinfo "${PRESTO_PID}" jinfo/agent_${PRESTO_PID}.jstack
jinfo "${JOB_DRIVER_PID}" jinfo/agent_${JOB_DRIVER_PID}.jstack

Informazioni sul sistema Linux

Comando eseguito Posizione nell'archivio
df -h /system/df.log
ps aux /system/ps.log
free -m /system/free.log
netstat -anp /system/netstat.log
sysctl -a /system/sysctl.log
uptime /system/uptime.log
cat /proc/sys/fs/file-nr /system/fs-file-nr.log
ping -c 1 /system/cluster-ping.log

File di log

Articoli inclusi Posizione nell'archivio
Tutti i log in /var/log hanno il seguente prefisso nel nome file:
cloud-sql-proxy
dataproc
druid
gcdp
gcs
google
hadoop
hdfs
hive
knox
presto
spark
syslog
yarn
zookeeper
I file vengono inseriti nella cartella dell'archivio logs e mantengono i nomi dei file originali.
Log di avvio del nodo Dataproc per ogni nodo (master e worker) nel cluster. I file vengono inseriti nella cartella Archivio node_startup, che contiene sottocartelle separate per ogni macchina nel cluster.
Log del gateway componente di journalctl -u google-dataproc-component-gateway /logs/google-dataproc-component-gateway.log

File di configurazione

Articoli inclusi Posizione nell'archivio
Metadati VM /conf/dataproc/metadata
Variabili di ambiente in /etc/environment /conf/dataproc/environment
Proprietà Dataproc /conf/dataproc/dataproc.properties
Tutti i file in /etc/google-dataproc/ /conf/dataproc/
Tutti i file in /etc/hadoop/conf/ /conf/hadoop/
Tutti i file in /etc/hive/conf/ /conf/hive/
Tutti i file in /etc/hive-hcatalog/conf/ /conf/hive-hcatalog/
Tutti i file in /etc/knox/conf/ /conf/knox/
Tutti i file in /etc/pig/conf/ /conf/pig/
Tutti i file in /etc/presto/conf/ /conf/presto/
Tutti i file in /etc/spark/conf/ /conf/spark/
Tutti i file in /etc/tez/conf/ /conf/tez/
Tutti i file in /etc/zookeeper/conf/ /conf/zookeeper/