Diagnostica clústeres de Dataproc

Ver información sobre el registro y la configuración puede ser útil para solucionar problemas de un clúster o trabajo. Desafortunadamente, hay muchos archivos de registro y configuración, y recopilar cada uno para su investigación puede llevar mucho tiempo. Para solucionar este problema, los clústeres de Dataproc admiten un comando especial diagnose a través de la CLI de Google Cloud. Este comando recopila y archiva registros importantes del sistema, Spark/Hadoop y Dataproc y, luego, sube el archivo al bucket de Cloud Storage adjunto a tu clúster.

Usa el comando de diagnóstico de la CLI de Google Cloud

Puedes usar el comando diagnose de la CLI de Google Cloud en tus clústeres de Dataproc (consulta CLI de Dataproc y Google Cloud).

Una vez que la CLI de gcloud está instalada y configurada, puedes ejecutar el comando gcloud dataproc clusters diagnose en tu clúster como se muestra a continuación. Reemplaza cluster-name por el nombre del clúster y region por la región del clúster, por ejemplo, --region=us-central1.

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

El comando genera la ubicación de Cloud Storage del archivo de almacenamiento que contiene los datos (consulta Elementos incluidos en el resultado del comando de diagnóstico). Consulta Cómo compartir los datos recopilados por el diagnóstico para obtener información sobre cómo acceder al archivo y copiarlo.

Ejecuta la secuencia de comandos de diagnóstico desde el nodo principal (opcional)

El comando de diagnóstico de la CLI de Google Cloud puede fallar o se agota el tiempo de espera si un clúster está en un estado de error y no puede aceptar tareas de diagnóstico del servidor de Dataproc. Para evitar este problema, puedes establecer una conexión SSH al nodo principal, descargar la secuencia de comandos de diagnóstico y, luego, ejecutar la secuencia de comandos de forma local en el nodo principal:

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

El archivo comprimido de diagnóstico se guardará en un directorio temporal local. Si lo deseas, puedes seguir las instrucciones en el resultado del comando para subirlos a un bucket de Cloud Storage y compartirlos con la Atención al cliente de Google.

Cómo compartir los datos recopilados por el diagnóstico

.

Puedes compartir el archivo generado por el comando diagnose de dos maneras:

  1. Descarga el archivo desde Cloud Storage y, luego, compártelo.
  2. Cambia los permisos en el archivo para permitir que otros proyectos o usuarios de Google Cloud Platform tengan acceso al archivo.

Por ejemplo, con el siguiente comando, se agregan permisos de lectura al archivo de diagnóstico en un test-project:

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

Elementos incluidos en el resultado del comando de diagnóstico

El comando diagnose incluye los siguientes registros, resultados y archivos de configuración de tu clúster en un archivo. El archivo se coloca en el bucket de Cloud Storage asociado con tu clúster de Dataproc, como se explicó anteriormente.

Resumen de diagnóstico

La secuencia de comandos de diagnóstico analiza de forma automática los datos recopilados y genera un summary.txt en la raíz del archivo comprimido de diagnóstico. En el resumen, se proporciona una descripción general de alto nivel del estado de los clústeres, incluidos YARN, HDFS, disco, herramientas de redes, etc., y también incluye advertencias para alertarte sobre posibles problemas.

Información de daemons y servicios

Comando ejecutado Ubicación en archivo
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

Información de JVM

Comando ejecutado Ubicación en archivo
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

Información del sistema Linux

Comando ejecutado Ubicación en archivo
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

Archivos de registro

Elementos incluidos Ubicación en archivo
Todos los registros en /var/log con los siguientes prefijos en su nombre de archivo:
cloud-sql-proxy
dataproc
druid
gcdp
gcs
google
hadoop
hdfs
hive
knox
presto
spark
syslog
yarn
zookeeper
Los archivos se colocan en la carpeta logs y del archivo y conservan sus nombres de archivo originales.
Registros de inicio del nodo de Dataproc para cada nodo (principal y trabajador) en tu clúster. Los archivos se colocan en la carpeta de archivo node_startup, que contiene subcarpetas separadas para cada máquina en el clúster.
Registros de puerta de enlace de componentes de journalctl -u google-dataproc-component-gateway /logs/google-dataproc-component-gateway.log

Archivos de configuración

Elementos incluidos Ubicación en archivo
Metadatos de VM /conf/dataproc/metadata
Variables de entorno en /etc/environment /conf/dataproc/environment
Propiedades de Dataproc /conf/dataproc/dataproc.properties
Todos los archivos en /etc/google-dataproc/ /conf/dataproc/
Todos los archivos en /etc/hadoop/conf/ /conf/hadoop/
Todos los archivos en /etc/hive/conf/ /conf/hive/
Todos los archivos en /etc/hive-hcatalog/conf/ /conf/hive-hcatalog/
Todos los archivos en /etc/knox/conf/ /conf/knox/
Todos los archivos en /etc/pig/conf/ /conf/pig/
Todos los archivos en /etc/presto/conf/ /conf/presto/
Todos los archivos en /etc/spark/conf/ /conf/spark/
Todos los archivos en /etc/tez/conf/ /conf/tez/
Todos los archivos en /etc/zookeeper/conf/ /conf/zookeeper/