Databricks

Supported OS

Data Jobs Monitoring te ayuda a observar, solucionar problemas y optimizar los costos de tus trabajos y clústeres de Databricks.

Esta página se limita a la documentación para la ingesta de las métricas y logs de utilización de clústeres de Databricks.

Dashboard predeterminado de Databricks

Información general

Monitoriza tus clústeres de Databricks con la integración de Spark de Datadog.

Esta integración unifica logs, métricas de la infraestructura y del rendimiento de Spark, proporcionando visibilidad en tiempo real del estado de tus nodos y el rendimiento de tus trabajos. Puede ayudarte a depurar errores, ajustar el rendimiento e identificar problemas como particiones de datos ineficientes o clústeres con la memoria agotada.

Para más detalles, consulta Monitorizar Databricks con Datadog.

Configuración

Instalación

Monitoriza Databricks Spark con la integración de Datadog Spark. Instala el Datadog Agent en tus clústeres siguiendo las instrucciones para la configuración para tu clúster apropiado. Después, instala la integración de Spark en Datadog para autoinstalar el dashboard de Información general de Databricks.

Configuración

Configura la integración de Spark para monitorizar tu clúster de Apache Spark en Databricks y recopilar el sistema y las métricas de Spark.

Cada script descrito a continuación puede modificarse para adaptarlo a tus necesidades. Por ejemplo, puedes:

  • Añadir etiquetas (tags) específicas a tus instancias.
  • Modificar la configuración de la integración de Spark.

También puedes definir o modificar variables de entorno con la ruta del script de inicio del ámbito del clúster a través de la interfaz de usuario, de la CLI de Databricks o invocando la API de clústeres.

  • Configura DD_API_KEY para identificar mejor tus clústeres.
  • Configura DD_ENV para identificar mejor tus clústeres.
  • Configura DD_SITE en tu sitio: . De modo predeterminado es datadoghq.com

Por razones de seguridad, no se recomienda definir la variable de entorno `DD_API_KEY` en texto simple directamente en la interfaz de usuario. En su lugar, utiliza secretos de Databricks.

Con un script de inicio global

Un script de inicial global se ejecuta en cada clúster creado en tu espacio de trabajo. Las secuencias de scripts de inicio globales son útiles cuando se desea aplicar configuraciones o pantallas de seguridad de bibliotecas en toda la organización.

Solo los administradores del espacio de trabajo pueden gestionar scripts de inicio globales.
Los scripts de inicio globales solo se ejecutan en clústeres configurados con un único usuario o en el modo de acceso compartido sin aislamiento de legacy. Por lo tanto, Databricks recomienda configurar todos los scripts de inicio como ámbito de clúster y gestionarlos en todo el espacio de trabajo mediante políticas de clúster.

Utiliza la interfaz de usuario de Databricks para editar los scripts de inicio globales:

  1. Elige uno de los siguientes scripts para instalar el Agent en el controlador o en los nodos controlador y trabajador del clúster.
  2. Modifica el script para adaptarlo a tus necesidades. Por ejemplo, puedes añadir etiquetas (tags) o definir una configuración específica para la integración.
  3. Ve a la configuración de administración y haz clic en la pestaña Scripts de inicio globales.
  4. Haz clic en el botón + Añadir.
  5. Dale un nombre al script, por ejemplo Datadog init script y pégalo en el campo Script.
  6. Haz clic en el conmutador Habilitado para activarlo.
  7. Haz clic en el botón Añadir.

Después de estos pasos, cualquier nuevo clúster utiliza el script en forma automática. Puedes encontrar más información sobre scripts de inicio globales en la documentación oficial de Databricks.

Puedes definir varios scripts de inicio y especificar su orden en la interfaz de usuario.
Instala el Datadog Agent en el controlador

Instala el Datadog Agent en el nodo del controlador del clúster.

Es necesario definir el valor de la variable `DD_API_KEY` en el script.

``script de shell #!/bin/bash cat «EOF > /tmp/start_datadog.sh #!/bin/bash

fecha -u +"%Y-%m-%d %H:%M:%S UTC" eco “Running on the driver? $DB_IS_DRIVER” eco “Driver ip: $DB_DRIVER_IP”

DB_CLUSTER_NAME=$(echo “$DB_CLUSTER_NAME” | sed -e ’s/ //g’ -e “s/’//g”) DD_API_KEY=’<YOUR_API_KEY>'

si [[ ${DB_IS_DRIVER} = “TRUE” ]]; entonces eco “Installing Datadog Agent on the driver…”

CONFIGURAR ETIQUETAS (TAGS) DEL HOST PARA EL CONTROLADOR

DD_TAGS=“entorno:${DD_ENV}”, “databricks_cluster_id:${DB_CLUSTER_ID}”, “databricks_cluster_name:${DB_CLUSTER_NAME}”, “spark_host_ip:${DB_DRIVER_IP}”, “spark_node:driver”, “databricks_instance_type:${DB_INSTANCE_TYPE}”, “databricks_is_job_cluster:${DB_IS_JOB_CLUSTER}”.

INSTALAR LA ÚLTIMA VERSIÓN DEL DATADOG AGENT 7 EN LOS NODOS CONTROLADOR Y TRABAJADOR

DD_INSTALL_ONLY=true
DD_API_KEY=$DD_API_KEY
DD_HOST_TAGS=$DD_TAGS
DD_HOSTNAME="$(hostname | xargs)"
DD_SITE="${DD_SITE:-datadoghq.com}"
bash -c “$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"

Evitar conflictos en el puerto 6062

eco “process_config.expvar_port: 6063” » /etc/datadog-agent/datadog.yaml

eco “Datadog Agent is installed”

mientras[ -z $DB_DRIVER_PORT ]; haz si [ -e “/tmp/driver-env.sh” ]; entonces DB_DRIVER_PORT=”$(grep -i “CONF_UI_PORT” /tmp/driver-env.sh | cut -d’=’ -f2)" fi eco “Waiting 2 seconds for DB_DRIVER_PORT” sleep 2 hecho

eco “DB_DRIVER_PORT=$DB_DRIVER_PORT”

ESCRIBIR ARCHIVO DE CONFIGURACIÓN PARA INTEGRACIÓN DE SPARK CON MÉTRICAS DE STREAMING ESTRUCTURADAS ACTIVADAS

MODIFICAR PARA INCLUIR OTRAS OPCIONES EN spark.d/conf.yaml.example

eco “init_config: instancias: - spark_url: http://${DB_DRIVER_IP}:${DB_DRIVER_PORT} spark_cluster_mode: spark_driver_mode cluster_name: ${DB_CLUSTER_NAME} streaming_metrics: true executor_level_metrics: true logs: - tipo: archivo ruta: /databricks/driver/Logs/.log fuente: spark servicio: databricks log_processing_rules: - tipo: multi_line nombre: new_log_start_with_date patrón: \d{2,4}[-/]\d{2,4}[-/]\d{2,4}.” > /etc/datadog-agent/conf.d/spark.d/spark.yaml

eco “Spark integration configured”

ACTIVAR LOGS EN datadog.yaml PARA RECOPILAR LOGS DEL CONTROLADOR

sed -i ‘/.logs_enabled:./a logs_enabled: true’ /etc/datadog-agent/datadog.yaml fi

eco “Restart the agent” sudo service datadog-agent restart EOF

chmod a+x /tmp/start_datadog.sh /tmp/start_datadog.sh » /tmp/datadog_start.log 2>&1 & disown

Instale el Datadog Agent en los nodos controlador y trabajador del clúster

Instale el Datadog Agent en los nodos controlador y trabajador del clúster

Deberás definir el valor de la variable `DD_API_KEY` en el script.
#!/bin/bash
cat <<EOF > /tmp/start_datadog.sh
#!/bin/bash

fecha -u +"%Y-%m-%d %H:%M:%S UTC"
eco "Running on the driver? \$DB_IS_DRIVER"
eco "Driver ip: \$DB_DRIVER_IP"

DB_CLUSTER_NAME=$(echo "$DB_CLUSTER_NAME" | sed -e 's/ /_/g' -e "s/'/_/g")
DD_API_KEY='<YOUR_API_KEY>'

si [[ \${DB_IS_DRIVER} = "TRUE" ]]; entonces
  eco "Installing Datadog Agent on the driver (master node)."

  # CONFIGURAR ETIQUETAS (TAGS) DEL HOST PARA EL CONTROLADOR
  DD_TAGS="entorno:\${DD_ENV}","databricks_cluster_id:\${DB_CLUSTER_ID}","databricks_cluster_name:\${DB_CLUSTER_NAME}","spark_host_ip:\${DB_DRIVER_IP}","spark_node:driver","databricks_instance_type:\${DB_INSTANCE_TYPE}","databricks_is_job_cluster:\${DB_IS_JOB_CLUSTER}"

  # INSTALAR LA ÚLTIMA VERSIÓN DEL DATADOG AGENT PARA LOS NODOS CONTROLADOR Y TRABAJADOR
  DD_INSTALL_ONLY=true \
    DD_API_KEY=\$DD_API_KEY \
    DD_HOST_TAGS=\$DD_TAGS \
    DD_HOSTNAME="\$(hostname | xargs)" \
    DD_SITE="\${DD_SITE:-datadoghq.com}" \
    bash -c "\$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"

  eco "Datadog Agent is installed"

  mientras [ -z \$DB_DRIVER_PORT ]; haz
    si [ -e "/tmp/driver-env.sh" ]; entonces
      DB_DRIVER_PORT="\$(grep -i "CONF_UI_PORT" /tmp/driver-env.sh | cut -d'=' -f2)"
    fi
    eco "Waiting 2 seconds for DB_DRIVER_PORT"
    sleep 2
  hecho

  eco "DB_DRIVER_PORT=\$DB_DRIVER_PORT"

  # ESCRIBIR EL ARCHIVO DE CONFIGURACIÓN PARA LA INTEGRACIÓN DE SPARK CON MÉTRICAS DE STREAMING ESTRUCTURADAS ACTIVADAS
  # MODIFICAR PARA INCLUIR OTRAS OPCIONES EN spark.d/conf.yaml.example
  eco "init_config:
instancias:
    - spark_url: http://\${DB_DRIVER_IP}:\${DB_DRIVER_PORT}
      spark_cluster_mode: spark_driver_mode
      cluster_name: \${DB_CLUSTER_NAME}
      streaming_metrics: true
      executor_level_metrics: true
logs:
    - tipo: archivo
      ruta: /databricks/driver/logs/*.log
      fuente: spark
      servicio: databricks
      log_processing_rules:
        - tipo: multi_line
          nombre: new_log_start_with_date
          patrón: \d{2,4}[\-\/]\d{2,4}[\-\/]\d{2,4}.*" > /etc/datadog-agent/conf.d/spark.d/spark.yaml

  eco "Spark integration configured"

  # ACTIVAR LOGS EN datadog.yaml PARA RECOPILAR LOGS DEL CONTROLADOR
  sed -i '/.*logs_enabled:.*/a logs_enabled: true' /etc/datadog-agent/datadog.yaml
o
  eco "Installing Datadog Agent on the worker."

  # CONFIGURAR ETIQUETAS (TAGS) DEL HOST PARA TRABAJADORES
  DD_TAGS="environment:\${DD_ENV}","databricks_cluster_id:\${DB_CLUSTER_ID}","databricks_cluster_name:\${DB_CLUSTER_NAME}","spark_host_ip:\${SPARK_LOCAL_IP}","spark_node:worker","databricks_instance_type:\${DB_INSTANCE_TYPE}","databricks_is_job_cluster:\${DB_IS_JOB_CLUSTER}"

  # INSTALAR LA ÚLTIMA VERSIÓN DEL DATADOG AGENT 7 EN LOS NODOS CONTROLADOR Y TRABAJADOR
  # CONFIGURAR NOMBRE DEL HOST EXPLÍCITAMENTE EN datadog.yaml PARA IMPEDIR QUE EL AGENT FALLE EN LA VERSIÓN 7.40+
  # CONSULTA https://github.com/DataDog/datadog-agent/issues/14152 PARA CAMBIAR
  DD_INSTALL_ONLY=true DD_API_KEY=\$DD_API_KEY DD_HOST_TAGS=\$DD_TAGS DD_HOSTNAME="\$(hostname | xargs)" bash -c "\$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"

  eco "Datadog Agent is installed"
fi

# Evitar conflictos en el puerto 6062
eco "process_config.expvar_port: 6063" >> /etc/datadog-agent/datadog.yaml

eco "Restart the agent"
sudo service datadog-agent restart
EOF

chmod a+x /tmp/start_datadog.sh
/tmp/start_datadog.sh >> /tmp/datadog_start.log 2>&1 & disown

Con un script de inicio de ámbito de clúster

Los scripts de inicio de ámbito de clúster son scripts de inicio definidos en la configuración del clúster. Los scripts de inicio de ámbito de clúster se aplican a los clústeres que creas y a los creados para ejecutar trabajos. Databricks admite la configuración y el almacenamiento de scripts de inicio a través de:

  • Archivos de área de trabajo
  • Volúmenes de Unity Catalog
  • Almacenamiento de objetos en la nube

Utiliza la interfaz de usuario de Databricks para editar el clúster y ejecutar el script de inicio:

  1. Elige uno de los siguientes scripts para instalar el Agent en el controlador o en los nodos controlador y trabajador del clúster.
  2. Modifica el script para adaptarlo a tus necesidades. Por ejemplo, puedes añadir etiquetas (tags) o definir una configuración específica para la integración.
  3. Guarda el script en tu área de trabajo con el menú Área de trabajo de la izquierda. Si utilizas Unity Catalog Volume, guarda el script en tu Volume con el menú Catalog de la izquierda.
  4. En la página de configuración del clúster, haz clic en el conmutador de opciones Avanzadas.
  5. En las Variables de entorno, especifica la variable de entorno DD_API_KEY y, opcionalmente, las variables de entorno DD_ENV y DD_SITE.
  6. Ve a la pestaña Scripts de inicio.
  7. En el menú desplegable Destino, selecciona el tipo de destino Workspace. Si utilizas Unity Catalog Volume, en el menú desplegable Destino, selecciona el tipo de destino Volume.
  8. Especifica una ruta al script de inicio.
  9. Haz clic en el botón Añadir.

Si guardaste tu datadog_init_script.sh directamente en el área de trabajo Shared, puedes acceder al archivo en la siguiente ruta: /Shared/datadog_init_script.sh.

Si guardaste tu datadog_init_script.sh directamente en un área de trabajo del usuario, puedes acceder al archivo en la siguiente ruta: /Users/$EMAIL_ADDRESS/datadog_init_script.sh.

Si guardaste to datadog_init_script.sh directamente en un Unity Catalog Volume, puedes acceder al archivo en la siguiente ruta: /Volumes/$VOLUME_PATH/datadog_init_script.sh.

Puedes encontrar más información sobre los scripts de inicio del clúster en la documentación oficial de Databricks.

Instala el Datadog Agent en el controlador

Instala el Datadog Agent en el nodo controlador del clúster.

``script de shell #!/bin/bash cat «EOF > /tmp/start_datadog.sh #!/bin/bash

fecha -u +"%Y-%m-%d %H:%M:%S UTC" eco “Running on the driver? $DB_IS_DRIVER” eco “Driver ip: $DB_DRIVER_IP”

DB_CLUSTER_NAME=$(echo “$DB_CLUSTER_NAME” | sed -e ’s/ //g’ -e “s/’//g”)

si [[ ${DB_IS_DRIVER} = “TRUE” ]]; entonces eco “Installing Datadog Agent on the driver…”

CONFIGURAR ETIQUETAS (TAGS) DEL HOST PARA EL CONTROLADOR

DD_TAGS=“entorno:${DD_ENV}”,“databricks_cluster_id:${DB_CLUSTER_ID}”,“databricks_cluster_name:${DB_CLUSTER_NAME}”,“spark_host_ip:${DB_DRIVER_IP}”,“spark_node:driver”,“databricks_instance_type:${DB_INSTANCE_TYPE}”,“databricks_is_job_cluster:${DB_IS_JOB_CLUSTER}”

INSTALAR LA ÚLTIMA VERSIÓN DEL DATADOG AGENT 7 EN LOS NODOS CONTROLADOR Y TRABAJADOR

DD_INSTALL_ONLY=true
DD_API_KEY=$DD_API_KEY
DD_HOST_TAGS=$DD_TAGS
DD_HOSTNAME="$(hostname | xargs)"
DD_SITE="${DD_SITE:-datadoghq.com}"
bash -c “$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"

Evitar conflictos en el puerto 6062

eco “process_config.expvar_port: 6063” » /etc/datadog-agent/datadog.yaml

eco “Datadog Agent is installed”

si bien [ -z $DB_DRIVER_PORT ]; haz si [ -e “/tmp/driver-env.sh” ]; entonces DB_DRIVER_PORT=”$(grep -i “CONF_UI_PORT” /tmp/driver-env.sh | cut -d’=’ -f2)" fi eco “Waiting 2 seconds for DB_DRIVER_PORT” sleep 2 hecho

eco “DB_DRIVER_PORT=$DB_DRIVER_PORT”

ESCRIBIR ARCHIVO DE CONFIGURACIÓN DE INTEGRACIÓN DE SPARK CON MÉTRICAS DE STREAMING ESTRUCTURADAS ACTIVADAS

MODIFICAR PARA INCLUIR OTRAS OPCIONES EN spark.d/conf.yaml.example

eco “init_config: instancias: - spark_url: http://${DB_DRIVER_IP}:${DB_DRIVER_PORT} spark_cluster_mode: spark_driver_mode cluster_name: ${DB_CLUSTER_NAME} streaming_metrics: true executor_level_metrics: true logs: - tipo: archivo ruta: /databricks/driver/Logs/.log fuente: spark servicio: databricks log_processing_rules: - tipo: multi_line nombre: new_log_start_with_date patrón: \d{2,4}[-/]\d{2,4}[-/]\d{2,4}.” > /etc/datadog-agent/conf.d/spark.d/spark.yaml

eco “Spark integration configured”

ACTIVAR LOGS EN Datadog.yaml PARA RECOPILAR LOGS DEL CONTROLADOR

sed -i ‘/.logs_enabled:./a logs_enabled: true’ /etc/datadog-agent/datadog.yaml fi

eco “Restart the agent” sudo service datadog-agent restart EOF

chmod a+x /tmp/start_datadog.sh /tmp/start_datadog.sh » /tmp/datadog_start.log 2>&1 & disown

Instalar el Datadog Agent en los nodos controlador y trabajador

Instalar el Datadog Agent en los nodos controlador y trabajador del clúster

#!/bin/bash
cat <<EOF > /tmp/start_datadog.sh
#!/bin/bash

fecha -u +"%Y-%m-%d %H:%M:%S UTC"
eco "Running on the driver? \$DB_IS_DRIVER"
eco "Driver ip: \$DB_DRIVER_IP"

DB_CLUSTER_NAME=$(echo "$DB_CLUSTER_NAME" | sed -e 's/ /_/g' -e "s/'/_/g")

si [[ \${DB_IS_DRIVER} = "TRUE" ]]; entonces
  eco "Installing Datadog Agent on the driver (master node)."

  # CONFIGURAR ETIQUETAS (TAGS) DEL HOST PARA EL CONTROLADOR
  DD_TAGS="environment:\${DD_ENV}","databricks_cluster_id:\${DB_CLUSTER_ID}","databricks_cluster_name:\${DB_CLUSTER_NAME}","spark_host_ip:\${DB_DRIVER_IP}","spark_node:driver","databricks_instance_type:\${DB_INSTANCE_TYPE}","databricks_is_job_cluster:\${DB_IS_JOB_CLUSTER}"

  # INSTALAR LA ÚLTIMA VERSIÓN DEL DATADOG AGENT 7 EN LOS NODOS CONTROLADOR Y TRABAJADOR
  DD_INSTALL_ONLY=true \
    DD_API_KEY=\$DD_API_KEY \
    DD_HOST_TAGS=\$DD_TAGS \
    DD_HOSTNAME="\$(hostname | xargs)" \
    DD_SITE="\${DD_SITE:-datadoghq.com}" \
    bash -c "\$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"

  eco "Datadog Agent is installed"

  si bien [ -z \$DB_DRIVER_PORT ]; haz
    si [ -e "/tmp/driver-env.sh" ]; entonces
      DB_DRIVER_PORT="\$(grep -i "CONF_UI_PORT" /tmp/driver-env.sh | cut -d'=' -f2)"
    fi
    eco "Waiting 2 seconds for DB_DRIVER_PORT"
    sleep 2
  hecho

  eco "DB_DRIVER_PORT=\$DB_DRIVER_PORT"

  # ESCRIBIR ARCHIVO DE CONFIGURACIÓN DE INTEGRACIÓN DE SPARK CON MÉTRICAS DE STREAMING ESTRUCTURADAS ACTIVADAS
  # MODIFICAR PARA INCLUIR OTRAS OPCIONES EN spark.d/conf.yaml.example
  eco "init_config:
instancias:
    - spark_url: http://\${DB_DRIVER_IP}:\${DB_DRIVER_PORT}
      spark_cluster_mode: spark_driver_mode
      cluster_name: \${DB_CLUSTER_NAME}
      streaming_metrics: true
      executor_level_metrics: true
logs:
    - tipo: archivo
      ruta: /databricks/driver/logs/*.log
      fuente: spark
      servicio: databricks
      log_processing_rules:
        - type: multi_line
          nombre: new_log_start_with_date
          patrón: \d{2,4}[\-\/]\d{2,4}[\-\/]\d{2,4}.*" > /etc/datadog-agent/conf.d/spark.d/spark.yaml

  eco "Spark integration configured"

  # ACTIVAR LOGS EN datadog.yaml PARA RECOPILAR LOGS DEL CONTROLADOR
  sed -i '/.*logs_enabled:.*/a logs_enabled: true' /etc/datadog-agent/datadog.yaml
o
  eco "Installing Datadog Agent on the worker."

  # CONFIGURAR ETIQUETAS (TAGS) DEL HOST PARA TRABAJADORES
  DD_TAGS="environment:\${DD_ENV}","databricks_cluster_id:\${DB_CLUSTER_ID}","databricks_cluster_name:\${DB_CLUSTER_NAME}","spark_host_ip:\${SPARK_LOCAL_IP}","spark_node:worker","databricks_instance_type:\${DB_INSTANCE_TYPE}","databricks_is_job_cluster:\${DB_IS_JOB_CLUSTER}"

  # INSTALAR LA ÚLTIMA VERSIÓN DEL DATADOG AGENT 7 EN LOS NODOS CONTROLADOR Y TRABAJADOR
  # CONFIGURAR EL NOMBRE DEL HOST EXPLÍCITAMENTE EN datadog.yaml PARA IMPEDIR QUE EL AGENT FALLE EN LA VERSIÓN 7.40+
  # CONSULTA https://github.com/DataDog/datadog-agent/issues/14152 PARA CAMBIOS
  DD_INSTALL_ONLY=true DD_API_KEY=\$DD_API_KEY DD_HOST_TAGS=\$DD_TAGS DD_HOSTNAME="\$(hostname | xargs)" bash -c "\$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"

  eco "Datadog Agent is installed"
fi

# Evitar conflictos en el puerto 6062
eco "process_config.expvar_port: 6063" >> /etc/datadog-agent/datadog.yaml

eco "Restart the agent"
sudo service datadog-agent restart
EOF

chmod a+x /tmp/start_datadog.sh
/tmp/start_datadog.sh >> /tmp/datadog_start.log 2>&1 & disown

Datos recopilados

Métricas

Consulta la documentación de la integración de Spark para obtener una lista de métricas recopiladas.

Checks de servicio

Consulta la documentación de la integración de Spark para obtener la lista de chechs de servicio recopilados.

Eventos

La integración de Databricks no incluye ningún evento.

Solucionar problemas

Puedes solucionar los problemas tú mismo habilitando el terminal web de Databricks o utilizando una notebook Databricks. Consulta la documentación de Solucionar problemas del Agent para obtener información sobre pasos útiles para solucionar problemas.

¿Necesitas ayuda? Ponte en contacto con soporte técnico de Datadog.

Referencias adicionales

Más enlaces, artículos y documentación útiles: