Conferir os dados de diagnóstico do cluster do Dataproc

"Consultar dados de diagnóstico do cluster do Dataproc"

O Dataproc coleta os seguintes dados de diagnóstico de cluster para ajudar a resolver problemas de cluster e job:

Dados de checkpoint

Quando o recurso de dados de ponto de verificação está ativado, o Dataproc coleta dados de diagnóstico durante a criação de clusters, a atualização de clusters e as operações da API Jobs do Dataproc. O Dataproc salva os dados no cluster temp bucket no Cloud Storage, que tem um período de armazenamento de TTL de 90 dias. Os dados são excluídos no final do período de armazenamento.

Ativar as propriedades de coleta de dados: é possível incluir as propriedades opcionais de cluster a seguir ao criar um cluster. Elas afetam apenas a coleta de dados de diagnóstico de pontos de verificação no cluster criado.

  • Ativar a coleta de dados:definir a propriedade dataproc:diagnostic.capture.enabled=true ativa a coleta de dados de diagnóstico de pontos de verificação no cluster.
  • Compartilhar dados de diagnóstico:definir a propriedade dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE compartilha os dados de diagnóstico do checkpoint coletados com o suporteGoogle Cloud .
    • Após a criação do cluster, é possível compartilhar os dados de diagnóstico com o suporte do Google Cloud concedendo acesso de leitura aos dados à conta de serviço usada pelo suporte do Google Cloud , da seguinte maneira:
      gsutil -m acl ch -r -u \
          cloud-diagnose@cloud-dataproc.iam.gserviceaccount.com:R \
          gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID
      

Dados de diagnóstico

Os dados de diagnóstico consistem nos seguintes dados gravados em gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID/ no Cloud Storage. Esse local é chamado de pasta de dados de diagnóstico nesta seção.

  • Registros de detalhes do nó do cluster:o Dataproc executa os comandos a seguir para coletar e gravar informações do YARN e do HDFS nos seguintes locais na pasta de dados de diagnóstico no Cloud Storage.

    Comando executado Local na pasta de diagnóstico
    yarn node -list -all .../nodes/timestamp/yarn-nodes.log
    hdfs dfsadmin -report -live -decommissioning .../nodes/timestamp/hdfs-nodes.log

  • Detalhes do job:o Dataproc salva informações de jobs do MapReduce e logs de jobs do Spark para jobs que usam a API Dataproc Jobs. Esses dados de job são coletados para cada MR e job do Spark enviado.

    • job.xml do MapReduce: um arquivo com as configurações de configuração do job, salvo em .../jobs/JOB_UUID/mapreduce/job.xml.
    • Registros de eventos do Spark: detalhes da execução do job úteis para depuração, salvos em .../jobs/JOB_UUID/spark/application-id.
  • Informações do sistema Linux:o Dataproc executa os comandos abaixo para coletar e salvar informações do sistema nos seguintes locais na pasta de dados de diagnóstico do Cloud Storage.

    Comando Localização na pasta de diagnóstico
    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
  • Arquivos de configuração:o Dataproc salva os seguintes arquivos de configuração nos locais a seguir na pasta de dados de diagnóstico no Cloud Storage.

    Item(ns) incluído(s) Localização na pasta de diagnóstico
    Propriedades do Dataproc .../configs/dataproc/dataproc.properties
    Todos os arquivos em
    `/etc/google-dataproc/`
    .../configs/dataproc/
    Todos os arquivos em
    `/etc/hadoop/conf/`
    .../configs/hadoop/
    Todos os arquivos em "/etc/hive/conf/" .../configs/hive/
    Todos os arquivos em
    `/etc/hive-hcatalog/conf/`
    .../configs/hive-hcatalog/
    Todos os arquivos em "/etc/knox/conf/" .../configs/knox/
    Todos os arquivos em "/etc/pig/conf/" .../configs/pig/
    Todos os arquivos em
    `/etc/presto/conf/`
    .../configs/presto/
    Todos os arquivos em
    `/etc/spark/conf/`
    .../configs/spark/
    Todos os arquivos em "/etc/tez/conf/" .../configs/tez/
    Todos os arquivos em
    `/etc/zookeeper/conf/`
    .../configs/zookeeper/

Dados do snapshot

É possível executar o comando gcloud dataproc clusters diagnose a seguir para coletar um snapshot de dados de diagnóstico de um cluster em execução. Os dados são gravados como um arquivo de arquivamento (tar) no bucket de preparação do Dataproc no Cloud Storage.

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

Observações:

  • CLUSTER_NAME: o nome do cluster a ser diagnosticado.
  • REGION: a região do cluster, por exemplo, us-central1.
  • OPTIONAL FLAGS:

    • É possível usar qualquer uma das flags a seguir para coletar logs de saída de drivers de job, eventos do Spark, aplicativos do YARN e Sparklens específicos. Observações:

      • A agregação de registros do YARN precisa ser ativada (yarn.log-aggregation-enable=true) para a coleta de registros de aplicativo do YARN.
      • Para jobs do MapReduce, apenas os registros de aplicativos do YARN são coletados.

        • --job-ids: uma lista de IDs de trabalhos separados por vírgulas.

        • --yarn-application-ids: uma lista separada por vírgulas de IDs de aplicativos do YARN.

    • --start-time com --end-time: use as duas flags para especificar um intervalo de tempo no formato %Y-%m-%dT%H:%M:%S.%fZ para a coleta de dados de diagnóstico. A especificação de um período também permite a coleta de registros de escalonamento automático do Dataproc durante esse período. Por padrão, os registros de escalonamento automático do Dataproc não são coletados nos dados de instantâneo de diagnóstico.

    • --tarball-access=GOOGLE_DATAPROC_DIAGNOSE Use essa flag para enviar ou fornecer acesso ao arquivo tar de diagnóstico para Google Cloud suporte. Também forneça informações para Google Cloud suporte da seguinte maneira:

      • Caminho do Cloud Storage do arquivo tar de diagnóstico ou
      • Bucket de configuração do cluster, UUID do cluster e ID da operação do comando diagnose

Se necessário, execute o script de diagnóstico

O comando gcloud dataproc clusters diagnose pode falhar ou expirar se um cluster estiver em um estado de erro e não puder aceitar tarefas de diagnóstico do servidor do Dataproc. Como alternativa à execução do comando de diagnóstico, você pode usar o SSH para se conectar ao nó mestre do cluster, fazer o download do script de diagnóstico e executar o script localmente no nó mestre.

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

O arquivo tar do arquivo de diagnóstico é salvo em um diretório local. A saída do comando lista o local do arquivo tar com instruções sobre como fazer upload do arquivo tar para um bucket do Cloud Storage.

Dados de snapshots de diagnóstico

Os dados do snapshot do cluster incluem um resumo de diagnóstico e várias seções de arquivo.

Resumo do diagnóstico:o arquivo inclui summary.txt, que está na raiz do arquivo. Ele fornece uma visão geral do status do cluster, incluindo o status do YARN, HDFS, disco e rede, e inclui avisos para alertar sobre possíveis problemas.

Seções de arquivo:o arquivo inclui as seguintes informações, que são gravadas nos seguintes locais de arquivo.

  • Informações sobre daemons e serviços

    Comando executado Local no arquivo
    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

  • Informações da JVM

    Comando executado Local no arquivo
    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

  • Informações do sistema Linux

    Comando executado Local no arquivo
    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

  • Arquivos de registro

    Item incluído Local no arquivo
    Todos os registros em /var/log com os seguintes prefixos no nome do arquivo:
    cloud-sql-proxy
    dataproc
    druid
    gcdp
    google
    hadoop
    hdfs
    hive
    knox
    presto
    spark
    syslog
    yarn
    zookeeper
    Os arquivos são armazenados na pasta logs e mantêm os nomes originais deles.
    Registros de inicialização de node do Dataproc de cada node (principal e de trabalho) no cluster. Os arquivos são colocados na pasta de arquivamento node_startup, que contém subpastas separadas para cada máquina no cluster.
    Registros de gateway de componentes de journalctl -u google-dataproc-component-gateway /logs/google-dataproc-component-gateway.log

  • Arquivos de configuração

    Item(ns) incluído(s) Local no arquivo
    Metadados da VM /conf/dataproc/metadata
    Variáveis de ambiente em /etc/environment /conf/dataproc/environment
    Propriedades do Dataproc /conf/dataproc/dataproc.properties
    Todos os arquivos em /etc/google-dataproc/ /conf/dataproc/
    Todos os arquivos em /etc/hadoop/conf/ /conf/hadoop/
    Todos os arquivos em /etc/hive/conf/ /conf/hive/
    Todos os arquivos em /etc/hive-hcatalog/conf/ /conf/hive-hcatalog/
    Todos os arquivos em /etc/knox/conf/ /conf/knox/
    Todos os arquivos em /etc/pig/conf/ /conf/pig/
    Todos os arquivos em /etc/presto/conf/ /conf/presto/
    Todos os arquivos em /etc/spark/conf/ /conf/spark/
    Todos os arquivos em /etc/tez/conf/ /conf/tez/
    Todos os arquivos em /etc/zookeeper/conf/ /conf/zookeeper/

Compartilhar o arquivo

Você pode compartilhar o arquivo com o suporte do Google Cloud ou com os usuários para resolver problemas de cluster ou job.

Para compartilhar o arquivo:

  • Copie o arquivo de arquivamento do Cloud Storage e compartilhe o arquivo transferido por download ou
  • Altere as permissões no arquivo para permitir que outros Google Cloud usuários ou projetos acessem o arquivo.

    Exemplo: o comando a seguir adiciona permissões de leitura ao arquivo em um test-project:

    gsutil -m acl ch -g test-project:R PATH_TO_ARCHIVE}