Diagnostiquer des clusters Dataproc

Les informations de journal et de configuration peuvent aider à la résolution de problèmes liés aux clusters ou aux tâches. Toutefois, les fichiers journaux et fichiers de configuration sont nombreux. Rassembler chaque fichier à des fins d'enquête peut prendre beaucoup de temps. Pour résoudre ce problème, les clusters Dataproc sont compatibles avec une commande diagnose spéciale via la CLI Google Cloud. Cette commande rassemble et archive des journaux importants du système, de Spark/Hadoop et de Cloud Dataproc. Elle importe ensuite l'archive dans le bucket Cloud Storage associé à votre cluster.

Utiliser la commande de diagnostic de la CLI Google Cloud

Vous pouvez utiliser la commande CLI Google Cloud diagnose sur vos clusters Dataproc (consultez la page CLI Dataproc et Google Cloud).

Une fois la CLI gcloud installée et configurée, vous pouvez exécuter la commande gcloud dataproc clusters diagnose sur votre cluster comme indiqué ci-dessous. Remplacez cluster-name par le nom de votre cluster et region par la région de votre cluster, par exemple, --region=us-central1.

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

La commande génère l'emplacement Cloud Storage du fichier d'archive contenant les données (consultez Éléments inclus dans le résultat de la commande de diagnostic). Pour en savoir plus sur l'accès au fichier d'archive et sa copie, consultez la section Partager les données collectées par diagnostic.

Exécuter le script de diagnostic à partir du nœud maître (facultatif)

La commande de diagnostic de la CLI Google Cloud peut échouer ou expirer si un cluster est en état d'erreur et ne peut pas accepter les tâches de diagnostic du serveur Dataproc. Pour éviter ce problème, vous pouvez vous connecter en SSH au nœud maître, télécharger le script de diagnostic, puis l'exécuter localement sur le nœud maître:

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

Le package tarball de diagnostic sera enregistré dans un répertoire temporaire local. Si vous le souhaitez, vous pouvez suivre les instructions du résultat de la commande pour l'importer dans un bucket Cloud Storage et le partager avec l'assistance Google.

Partager des données collectées par la commande "diagnose"

.

Vous pouvez partager l'archive générée par la commande diagnose à l'aide des deux manières suivantes :

  1. Téléchargez le fichier depuis Cloud Storage, puis partagez l'archive téléchargée.
  2. Modifiez les autorisations sur l'archive pour autoriser d'autres utilisateurs ou projets de Google Cloud Platform à accéder au fichier.

Par exemple, la commande suivante ajoute des autorisations en lecture à l'archive "diagnose" dans test-project :

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

Éléments inclus dans le résultat de la commande "diagnose"

La commande diagnose diagnose rassemble dans un fichier d'archive les fichiers de configuration, journaux et résultats suivants issus de votre cluster. Le fichier d'archive est placé dans un bucket Cloud Storage associé à votre cluster Cloud Dataproc, comme indiqué ci-dessus.

Résumé de diagnostic

Le script de diagnostic analyse automatiquement les données collectées et génère un summary.txt à la racine du package tarball de diagnostic. Le résumé fournit une vue d'ensemble de l'état du cluster, y compris YARN, HDFS, disque, réseau, etc. Il inclut des avertissements pour vous avertir des problèmes potentiels.

Informations sur les services et daemons

Commande exécutée Emplacement dans l'archive
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

Informations sur la JVM

Commande exécutée Emplacement dans l'archive
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

Informations sur le système Linux

Commande exécutée Emplacement dans l'archive
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

Fichiers journaux

Élément(s) inclus Emplacement dans l'archive
Tous les fichiers journaux de /var/log dont le nom commence par :
cloud-sql-proxy
dataproc
druid
gcdp
gcs
google
hadoop
hdfs
hive
knox
presto
spark
syslog
yarn
zookeeper
Les fichiers sont placés dans le dossier d'archive logs et conservent leur nom d'origine.
Journaux de démarrage de nœuds Dataproc pour chaque nœud (maîtres et de calcul) de votre cluster. Les fichiers sont placés dans le dossier d'archive node_startup, qui contient des sous-dossiers distincts pour chaque machine du cluster.
Journaux de la passerelle des composants filtrés par la commande journalctl -u google-dataproc-component-gateway /logs/google-dataproc-component-gateway.log

Fichiers de configuration

Élément(s) inclus Emplacement dans l'archive
Métadonnées de la VM /conf/dataproc/metadata
Variables d'environnement de /etc/environment /conf/dataproc/environment
Propriétés Dataproc /conf/dataproc/dataproc.properties
Tous les fichiers de /etc/google-dataproc/ /conf/dataproc/
Tous les fichiers de /etc/hadoop/conf/ /conf/hadoop/
Tous les fichiers de /etc/hive/conf/ /conf/hive/
Tous les fichiers de /etc/hive-hcatalog/conf/ /conf/hive-hcatalog/
Tous les fichiers de /etc/knox/conf/ /conf/knox/
Tous les fichiers de /etc/pig/conf/ /conf/pig/
Tous les fichiers de /etc/presto/conf/ /conf/presto/
Tous les fichiers de /etc/spark/conf/ /conf/spark/
Tous les fichiers de /etc/tez/conf/ /conf/tez/
Tous les fichiers de /etc/zookeeper/conf/ /conf/zookeeper/