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:
- Scarica il file da Cloud Storage, quindi condividi l'archivio scaricato.
- 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/ |