Collecte de données de diagnostic des clusters Dataproc

"Afficher les données de diagnostic des clusters Dataproc"

Vous pouvez collecter les données de diagnostic suivantes pour vous aider à résoudre les problèmes liés aux clusters et aux jobs :

Collecte de données de diagnostic pour les points de contrôle

Si elle est activée lors de la création du cluster, Dataproc collecte des données de diagnostic des points de contrôle lors des opérations de création de cluster, de mise à jour de cluster et de tâche Dataproc.

Emplacement des données du point de contrôle

Dataproc enregistre les données de diagnostic des points de contrôle dans le bucket temporaire du cluster dans Cloud Storage, dans le dossier suivant (checkpoint diagnostic data folder) :

gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID 

La période de conservation TTL par défaut du bucket temporaire du cluster est de 90 jours. Les données sont supprimées à la fin de la période de conservation. Vous pouvez spécifier votre propre bucket temporaire de cluster avec une période TTL différente lorsque vous créez un cluster.

Données de diagnostic des points de contrôle

  • Journaux détaillés des nœuds de cluster : Dataproc exécute les commandes suivantes pour collecter et écrire les informations YARN et HDFS dans les emplacements suivants du dossier de données de diagnostic du point de contrôle dans Cloud Storage.

    Commande exécutée Emplacement dans le dossier de diagnostic
    yarn node -list -all .../nodes/timestamp/yarn-nodes.log
    hdfs dfsadmin -report -live -decommissioning .../nodes/timestamp/hdfs-nodes.log

  • Détails du job : Dataproc enregistre les informations sur les jobs MapReduce et les journaux des jobs Spark pour les jobs utilisant l'API Dataproc Jobs. Ces données de job sont collectées pour chaque job MapReduce et Spark envoyé.

    • job.xml MapReduce : fichier contenant les paramètres de configuration du job, enregistré sous .../jobs/JOB_UUID/mapreduce/job.xml.
    • Journaux d'événements Spark : détails d'exécution des jobs utiles pour le débogage, enregistrés dans .../jobs/JOB_UUID/spark/application-id.
  • Informations sur le système Linux : Dataproc exécute les commandes suivantes pour collecter et enregistrer les informations système aux emplacements suivants dans le dossier de données de diagnostic du point de contrôle dans Cloud Storage.

    Commande Emplacement dans le dossier de diagnostic
    sysctl -a .../system/sysctl.log
    cat /proc/sys/fs/file-nr .../system/fs-file-nr.log
    ping -c 1 .../system/cluster-ping.log
    cp /etc/hosts .../system/hosts_entries.log
    cp /etc/resolv.conf .../system/resolv.conf
  • Fichiers de configuration : Dataproc enregistre les fichiers de configuration suivants aux emplacements suivants dans le dossier de données de diagnostic du point de contrôle dans Cloud Storage.

    Élément(s) inclus Emplacement dans le dossier de diagnostic
    Propriétés Dataproc .../configs/dataproc/dataproc.properties
    Tous les fichiers de
    `/etc/google-dataproc/`
    .../configs/dataproc/
    Tous les fichiers de
    `/etc/hadoop/conf/`
    .../configs/hadoop/
    Tous les fichiers de `/etc/hive/conf/` .../configs/hive/
    Tous les fichiers de
    `/etc/hive-hcatalog/conf/`
    .../configs/hive-hcatalog/
    Tous les fichiers de `/etc/knox/conf/` .../configs/knox/
    Tous les fichiers de `/etc/pig/conf/` .../configs/pig/
    Tous les fichiers de
    `/etc/presto/conf/`
    .../configs/presto/
    Tous les fichiers de
    `/etc/spark/conf/`
    .../configs/spark/
    Tous les fichiers de `/etc/tez/conf/` .../configs/tez/
    Tous les fichiers de
    `/etc/zookeeper/conf/`
    .../configs/zookeeper/

Activer et partager les données de diagnostic des points de contrôle

Lorsque vous créez un cluster, vous pouvez activer et partager les données de diagnostic des points de contrôle du cluster avec l'assistance Google Cloud  :

Activer la collecte de données des points de contrôle

Ajoutez la propriété de cluster dataproc:diagnostic.capture.enabled=true lorsque vous créez un cluster Dataproc pour activer la collecte des données de diagnostic des points de contrôle sur le cluster.

Partager les données de point de contrôle

Si vous activez l'accès uniforme au niveau du bucket sur le bucket temporaire du cluster, l'intégralité du contenu du bucket temporaire, y compris les données de diagnostic de point de contrôle collectées et les données éphémères, telles que les fichiers d'historique des tâches MapReduce, les journaux YARN agrégés et les journaux d'événements Spark, sont partagés avec l'assistanceGoogle Cloud .

Si le contrôle des accès au niveau des objets est activé dans le bucket temporaire du cluster, seules les données de diagnostic des points de contrôle collectées (données du dossier de données de diagnostic des points de contrôle dans Cloud Storage) sont partagées.

Vous pouvez activer le partage des données de diagnostic des points de contrôle avec l'assistanceGoogle Cloud lorsque vous créez un cluster ou après sa création :

  • Activer le partage lors de la création du cluster : ajoutez la propriété suivante lorsque vous créez un cluster :

    dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE
    
  • Activer le partage après la création du cluster : vous pouvez activer le partage des données de point de contrôle avec l'assistanceGoogle Cloud après la création du cluster de différentes manières :

    • Accordez un accès en lecture aux données de point de contrôle au compte de service utilisé par l'assistance Google Cloud .

      • Si l'accès uniforme au niveau du bucket est activé sur le bucket temporaire, ajoutez une liaison de stratégie IAM :

        gcloud storage buckets add-iam-policy-binding gs://TEMP_BUCKET \
            --member=serviceAccount:cloud-diagnose@cloud-dataproc.iam.gserviceaccount.com \
            --role=roles/storage.objectViewer
        

      • Si le contrôle des accès au niveau des objets est activé sur le bucket temporaire, exécutez la commande suivante pour partager les données de diagnostic du point de contrôle :

        gcloud storage objects update \
            gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID \
            --add-acl-grant=entity=user-cloud-diagnose@cloud-dataproc.iam.gserviceaccount.com,role=READER --recursive
        

Collecte de données de diagnostic instantanées

Vous pouvez exécuter la commande gcloud dataproc clusters diagnose suivante pour collecter un instantané des données de diagnostic d'un cluster en cours d'exécution. Les données sont écrites sous forme de fichier d'archive (tar) dans le bucket intermédiaire Dataproc de Cloud Storage.

gcloud dataproc clusters diagnose CLUSTER_NAME \
    --region=REGION \
    --tarball-access=GOOGLE_DATAPROC_DIAGNOSE

Remarques :

  • CLUSTER_NAME : nom du cluster à diagnostiquer.
  • REGION : région du cluster (par exemple, us-central1).
  • --tarball-access=GOOGLE_DATAPROC_DIAGNOSE Ce flag permet d'accéder au fichier tar de diagnostic pour l'assistanceGoogle Cloud . Fournissez l'assistance Google Cloud avec le chemin d'accès Cloud Storage du fichier tar de diagnostic.

  • Additional flags :

    • --start-time avec --end-time : utilisez les deux indicateurs pour spécifier une plage horaire au format %Y-%m-%dT%H:%M:%S.%fZ pour la collecte des données de diagnostic. Spécifier une plage de temps permet également de collecter les journaux d'autoscaling Dataproc pendant cette période (par défaut, les journaux d'autoscaling Dataproc ne sont pas collectés dans les données de l'instantané de diagnostic).

    • Vous pouvez utiliser l'un ou l'autre des indicateurs suivants pour collecter des journaux de sortie spécifiques au pilote de job, aux événements Spark, aux applications YARN et à Sparklens :

      • --job-ids : liste d'ID de jobs séparés par une virgule
      • --yarn-application-ids : liste d'ID d'application YARN séparés par une virgule.

        • L'agrégation des journaux YARN doit être activée (yarn.log-aggregation-enable=true) pour la collecte des journaux d'application YARN.
        • Pour les tâches MapReduce, seuls les journaux d'application YARN sont collectés.

Facultatif : Exécutez le script de diagnostic

La commande gcloud dataproc clusters diagnose peut échouer ou expirer si un cluster se trouve en état d'erreur et ne peut pas accepter les tâches de diagnostic du serveur Dataproc. Au lieu d'exécuter la commande diagnose, vous pouvez utiliser SSH pour vous connecter au cluster, puis exécuter le script localement sur le nœud maître.

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

Le fichier tar de l'archive de diagnostic est enregistré dans un répertoire local. La sortie de la commande liste l'emplacement du fichier tar et fournit des instructions sur la façon d'importer le fichier tar dans un bucket Cloud Storage.

Données d'instantané de diagnostic

Les données d'instantané du cluster incluent un récapitulatif des diagnostics et plusieurs sections d'archives.

Résumé du diagnostic : le fichier d'archive inclut summary.txt à la racine de l'archive. Il fournit une vue d'ensemble de l'état du cluster, y compris l'état de YARN, HDFS, du disque et du réseau. Il inclut des avertissements pour vous avertir des problèmes potentiels.

Sections de l'archive : le fichier d'archive inclut les informations suivantes, qui sont écrites aux emplacements suivants.

  • 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_AGENTPID}" jstack/agent${DATAPROC_AGENT_PID}.jstack
    jstack -l "${PRESTOPID}" jstack/agent${PRESTO_PID}.jstack
    jstack -l "${JOB_DRIVERPID}" jstack/driver${JOB_DRIVER_PID}.jstack
    jinfo "${DATAPROC_AGENTPID}" jinfo/agent${DATAPROC_AGENT_PID}.jstack
    jinfo "${PRESTOPID}" jinfo/agent${PRESTO_PID}.jstack
    jinfo "${JOB_DRIVERPID}" 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 inclus Emplacement dans l'archive
    Tous les journaux de /var/log avec les préfixes suivants dans leur nom de fichier :
    cloud-sql-proxy
    dataproc
    druid
    gcdp
    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/

Partager le fichier d'archive

Vous pouvez partager le fichier d'archive avec l'assistance Google Cloud ou les utilisateurs pour obtenir de l'aide afin de résoudre les problèmes liés aux clusters ou aux jobs.

Pour partager le fichier d'archive :

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

    Exemple : La commande suivante accorde des autorisations en lecture à l'archive aux propriétaires du projet test-project :

    gcloud storage objects update PATH_TO_ARCHIVE} --add-acl-grant=entity=project-owners-test-project,role=READER