Diagnóstico de clusters do Dataproc

Consultar as informações de registro e configuração pode ser útil para solucionar problemas de cluster ou job. Há muitos arquivos de registro e configuração, e a coleta de cada um deles para investigação consome muito tempo. Para resolver esse problema, os clusters do Cloud Dataproc são compatíveis com um comando diagnose especial por meio do SDK do Cloud. Esse comando coleta e arquiva registros importantes do sistema, Spark, Hadoop e Dataproc. Em seguida, envia o arquivo para o bucket do Cloud Storage anexado ao cluster.

Como usar o comando de diagnóstico do SDK do Cloud

Use o comando diagnose do SDK do Cloud nos clusters do Dataproc (consulte Dataproc e SDK do Cloud).

Depois de instalar e configurar o SDK do Cloud, execute o comando gcloud dataproc clusters diagnose no cluster, conforme mostrado abaixo. Substitua cluster-name pelo nome do cluster e region pela região do cluster, por exemplo, --region=us-central1.

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

O comando exibe o nome e local do arquivo que contém os dados.

...
Saving archive to cloud
Copying file:///tmp/tmp.FgWEq3f2DJ/diagnostic.tar ...
Uploading   ...23db9-762e-4593-8a5a-f4abd75527e6/diagnostic.tar ...
Diagnostic results saved in:
gs://bucket-name/.../cluster-uuid/.../job-id/diagnostic.tar
    ...
Neste exemplo, bucket-name é o bucket do Cloud Storage anexado ao cluster, cluster-uuid é o código exclusivo (UUID) do cluster e job-id é o UUID pertencente à tarefa do sistema que executou o comando do diagnóstico.

Quando você cria um cluster do Dataproc, o Dataproc cria um bucket do Cloud Storage e o anexa ao cluster. O comando de diagnóstico inclui o arquivo nesse bucket. Para determinar o nome do bucket criado pelo Dataproc, use o comando clusters describe do SDK do Cloud. O bucket associado ao cluster é listado ao lado de configurationBucket.

gcloud dataproc clusters describe cluster-name \
    --region=region \
...
  clusterName: cluster-name
  clusterUuid: daa40b3f-5ff5-4e89-9bf1-bcbfec6e0eac
  configuration:
  configurationBucket: dataproc-edc9d85f-...-us
  ...

Como executar o script de diagnóstico no nó mestre (opcional)

O comando de diagnóstico do SDK do Cloud 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. Para evitar esse problema, execute o SSH no nó mestre, faça o download do script de diagnóstico e execute 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 tarball de diagnóstico será salvo em um diretório temporário local. Se você quiser, siga as instruções na resposta ao comando para fazer upload de um bucket do Cloud Storage e compartilhar com o Suporte do Google.

Compartilhamento dos dados coletados pelo comando de diagnóstico

É possível compartilhar o arquivo gerado pelo comando diagnose de duas maneiras:

  1. Faça download do arquivo do Cloud Storage e compartilhe-o.
  2. Altere as permissões no arquivo para autorizar outros usuários ou projetos do Google Cloud Platform a acessar o arquivo.

Por exemplo, o comando a seguir adiciona permissões de leitura ao arquivo de diagnóstico em um test-project:

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

Itens incluídos na saída do comando de diagnóstico

O comando diagnose inclui os seguintes arquivos de configuração, registros e saídas do cluster em um arquivo, O arquivo é colocado no bucket do Cloud Storage associado ao cluster do Dataproc, conforme discutido acima.

Resumo do diagnóstico

O script de diagnóstico analisa automaticamente os dados coletados e gera um summary.txt na raiz do tarball de diagnóstico. No resumo, você encontra uma visão geral sobre o status do cluster, incluindo YARN, HDFS, disco, rede etc., e avisos para alertar possíveis problemas.

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 do JVM

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

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 registros

Item(ns) incluído(s) Local no arquivo
Todos os registros em /var/log com os seguintes prefixos no nome do arquivo:
cloud-sql-proxy
dataproc
druid
gcdp
gcs
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/