Coleta de dados de diagnóstico do cluster do Dataproc

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

É possível coletar os seguintes dados de diagnóstico para ajudar a resolver problemas de cluster e job:

Coleta de dados de diagnóstico de checkpoint

Se ativado na criação do cluster, o Dataproc coleta dados de diagnóstico de checkpoint durante as operações de criação do cluster, atualização do cluster e job do Dataproc.

Local dos dados do checkpoint

O Dataproc salva dados de diagnóstico de checkpoint no bucket temporário do cluster no Cloud Storage na seguinte pasta (checkpoint diagnostic data folder):

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

O bucket temporário padrão do cluster tem um período de retenção de TTL de 90 dias. Os dados são excluídos ao final do período de retenção. É possível especificar seu próprio bucket temporário do cluster com um período de TTL diferente ao criar um cluster.

Dados de diagnóstico de checkpoint

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

    Comando executado Localização 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 registros de jobs do Spark para jobs que usam a API Dataproc Jobs. Esses dados são coletados para cada job do MapReduce e do Spark enviado.

    • MapReduce job.xml: um arquivo que contém configurações de configuração de 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 seguintes comandos para coletar e salvar informações do sistema nos seguintes locais na pasta de dados de diagnóstico do ponto de verificação no 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 do checkpoint 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/

Ativar e compartilhar dados de diagnóstico de checkpoint

Ao criar um cluster, é possível ativar e compartilhar dados de diagnóstico de checkpoint do cluster com o suporte do Google Cloud :

Ativar a coleta de dados de checkpoint

Adicione a propriedade do cluster dataproc:diagnostic.capture.enabled=true ao criar um cluster do Dataproc para ativar a coleta de dados de diagnóstico de ponto de verificação no cluster.

Compartilhar dados de checkpoint

Se você ativar o acesso uniforme no nível do bucket no bucket temporário do cluster, todo o conteúdo dele, incluindo dados de diagnóstico de ponto de verificação coletados e dados temporários, como arquivos de histórico de jobs do MapReduce, registros agregados do YARN e registros de eventos do Spark, será compartilhado com o suporte doGoogle Cloud .

Se o controle de acesso no nível do objeto estiver ativado no bucket temporário do cluster, apenas os dados de diagnóstico do ponto de verificação coletados (dados na pasta de dados de diagnóstico do ponto de verificação no Cloud Storage) serão compartilhados.

É possível ativar o compartilhamento de dados de diagnóstico de ponto de verificação com o suporte do Google Cloud ao criar um cluster ou depois da criação dele:

  • Ativar o compartilhamento ao criar o cluster: adicione a seguinte propriedade ao criar um cluster:

    dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE
    
  • Ativar o compartilhamento após a criação do cluster: é possível ativar o compartilhamento de dados de ponto de verificação com o suporte doGoogle Cloud após a criação do cluster das seguintes maneiras:

    • Forneça acesso de leitura aos dados de ponto de verificação para a conta de serviço usada pelo suporte do Google Cloud .

      • Se o acesso uniforme no nível do bucket estiver ativado no bucket temporário, adicione uma vinculação de política do IAM:

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

      • Se o controle de acesso no nível do objeto estiver ativado no bucket temporário, execute o seguinte comando para compartilhar dados de diagnóstico de checkpoint:

        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
        

Coleta de dados de diagnóstico de snapshot

É possível executar o seguinte comando gcloud dataproc clusters diagnose 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 preparo 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.
  • --tarball-access=GOOGLE_DATAPROC_DIAGNOSE Essa flag fornece acesso ao arquivo tar de diagnóstico para Google Cloud suporte. Forneça Google Cloud suporte com o caminho do Cloud Storage do arquivo tar de diagnóstico.

  • Additional flags:

    • --start-time com --end-time: use as duas flags para especificar um período no formato %Y-%m-%dT%H:%M:%S.%fZ para a coleta de dados de diagnóstico. Ao especificar um período, também é possível coletar registros de escalonamento automático do Dataproc durante esse período. Por padrão, esses registros não são coletados nos dados do snapshot de diagnóstico.

    • Use uma ou ambas as flags a seguir para coletar registros específicos de driver de job, evento do Spark, aplicativo YARN e saída do Sparklens:

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

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

Opcional: 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 cluster e executar o script localmente no nó mestre.

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

O arquivo tar 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 dele para um bucket do Cloud Storage.

Dados de instantâneo de diagnóstico

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

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

Seções do arquivo:o arquivo inclui as seguintes informações que são gravadas nos seguintes locais do 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 compactado

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

Para compartilhar o arquivo compactado:

  • Copie o arquivo compactado do Cloud Storage e compartilhe o arquivo baixado ou
  • Altere as permissões no arquivo para permitir que outros usuários ou projetos do Google Cloud acessem o arquivo.

    Exemplo: o comando a seguir concede permissões de leitura do arquivo aos proprietários do projeto test-project:

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