Surveillez vos applications Spark Databricks avec l’intégration Datadog/Spark. Installez l’Agent Datadog sur vos clusters en suivant les instructions de configuration correspondant à votre type de cluster.
Configurez l’intégration Spark de façon à surveiller votre cluster Apache Spark sur Databricks et à recueillir les métriques système et métriques Spark.
Identifiez parmi les scripts init ci-dessous celui qui convient le mieux à l’environnement de votre cluster Databricks.
Copiez et exécutez le contenu dans un notebook. Ce dernier crée un script init afin d’installer un Agent Datadog sur vos clusters.
Il suffit d’exécuter le notebook une seule fois pour enregistrer le script comme configuration globale. Pour en savoir plus sur les scripts init Datadog Databricks, consultez la section Surveillance des clusters Apache Spark avec Databricks et Datadog (en anglais).
Définissez le chemin <init-script-folder> sur l’emplacement où vous souhaitez enregistrer les scripts init.
Configurez un nouveau cluster Databricks avec le nouveau chemin du script init. Pour ce faire, vous pouvez utiliser l’IU ou l’interface de ligne de commande Datadog, ou encore transmettre des appels à l’API Clusters.
Dans les options avancées du cluster, définissez la variable d’environnement DD_API_KEY sur votre clé d’API Datadog.
Ajoutez la variable d’environnement DD_ENV sous les options avancées afin d’inclure un tag d’environnement global facilitant l’identification de vos clusters.
Installez l’Agent Datadog sur le nœud driver du cluster. Il s’agit d’une version mise à jour de l’exemple de notebook Databricks avec le script init Datadog.
Une fois le script datadog-install-driver-only.sh créé, ajoutez le chemin du script init sur la page de configuration du cluster.
%python
dbutils.fs.put("dbfs:/<init-script-folder>/datadog-install-driver-only.sh","""
#!/bin/bash
echo "Exécution sur le driver ? $DB_IS_DRIVER"
echo "Driver ip: $DB_DRIVER_IP"
cat <<EOF >> /tmp/start_datadog.sh
#!/bin/bash
if [[ \${DB_IS_DRIVER} = "TRUE" ]]; then
echo "Sur le driver. Installation de Datadog ..."
# CONFIGURER LES TAGS DE HOST POUR LE CLUSTER
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:driver"
# INSTALLER LA DERNIÈRE VERSION DE L'AGENT DATADOG 7
DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=\$DD_API_KEY DD_HOST_TAGS=DD_TAGS bash -c "\$(curl -L https://install.datadoghq.com/scripts/install_script.sh)"
# ATTENDRE QUE L'AGENT DATADOG SOIT INSTALLÉ
while [ -z \$datadoginstalled ]; do
if [ -e "/etc/datadog-agent/datadog.yaml" ]; then
datadoginstalled=TRUE
fi
sleep 2
done
echo "Agent Datadog installé"
# ACTIVER LES LOGS DANS datadog.yaml POUR RECUEILLIR LES LOGS DU DRIVER
echo "logs_enabled: true" >> /etc/datadog-agent/datadog.yaml
# ATTENDRE LE CHARGEMENT DES PARAMÈTRES DU MASTER, PUIS RÉCUPÉRER L'IP ET LE PORT
while [ -z \$gotparams ]; do
if [ -e "/tmp/master-params" ]; then
DB_DRIVER_PORT=\$(cat /tmp/master-params | cut -d' ' -f2)
gotparams=TRUE
fi
sleep 2
done
hostip=\$(hostname -I | xargs)
# ÉCRIRE LE FICHIER DE CONFIGURATION POUR L'INTÉGRATION SPARK AVEC LES MÉTRIQUES STRUCTURED STREAMING ACTIVÉES ET LA CONFIGURATION DES LOGS
# MODIFIER CE QUI SUIT POUR INCLURE D'AUTRES OPTIONS DE spark.d/conf.yaml.example
echo "init_config:
instances:
- spark_url: http://\$DB_DRIVER_IP:\$DB_DRIVER_PORT
spark_cluster_mode: spark_standalone_mode
cluster_name: \${hostip} streaming_metrics: truelogs:
- type: file
path: /databricks/driver/logs/*.log
source: spark
service: databricks
log_processing_rules:
- type: multi_line
name: new_log_start_with_date
pattern: \d{2,4}[\-\/]\d{2,4}[\-\/]\d{2,4}.*" > /etc/datadog-agent/conf.d/spark.yaml
# REDÉMARRER L'AGENT
sudo service datadog-agent restart
fi
EOF
# PROCÉDER AU NETTOYAGE
if [ \$DB_IS_DRIVER ]; then
chmod a+x /tmp/start_datadog.sh
/tmp/start_datadog.sh >> /tmp/datadog_start.log 2>&1 & disown
fi
""", True)
Une fois le script datadog-install-driver-workers.sh créé, ajoutez le chemin du script init sur la page de configuration du cluster.
%python
dbutils.fs.put("dbfs:/<init-script-folder>/datadog-install-driver-workers.sh","""
#!/bin/bash
cat <<EOF >> /tmp/start_datadog.sh
#!/bin/bash
hostip=$(hostname -I | xargs)if [[ \${DB_IS_DRIVER} = "TRUE" ]]; then
echo "Installation de l'Agent Datadog sur le driver (nœud master)..."
# CONFIGURER LES TAGS DE HOST POUR LE CLUSTER
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:driver"
# INSTALLER LA DERNIÈRE VERSION DE L'AGENT DATADOG 7 POUR LES NŒUDS DRIVER ET WORKER
DD_AGENT_MAJOR_VERSION=7DD_API_KEY=\$DD_API_KEY DD_HOST_TAGS=\$DD_TAGS bash -c "\$(curl -L https://install.datadoghq.com/scripts/install_script.sh)"# ATTENDRE QUE L'AGENT DATADOG SOIT INSTALLÉwhile[ -z \$datadoginstalled ];doif[ -e "/etc/datadog-agent/datadog.yaml"];thendatadoginstalled=TRUE
fi sleep 2doneecho"Agent Datadog installé"# ACTIVER LES LOGS DANS datadog.yaml POUR RECUEILLIR LES LOGS DU DRIVERecho"logs_enabled: true" >> /etc/datadog-agent/datadog.yaml
while[ -z \$gotparams ];doif[ -e "/tmp/driver-env.sh"];thenDB_DRIVER_PORT=\$(grep -i "CONF_UI_PORT" /tmp/driver-env.sh | cut -d'=' -f2)gotparams=TRUE
fi sleep 2done# ÉCRIRE LE FICHIER DE CONFIGURATION POUR L'INTÉGRATION SPARK AVEC LES MÉTRIQUES STRUCTURED STREAMING ACTIVÉES# MODIFIER CE QUI SUIT POUR INCLURE D'AUTRES OPTIONS DE spark.d/conf.yaml.exampleecho"init_config:
instances:
- spark_url: http://\${DB_DRIVER_IP}:\${DB_DRIVER_PORT}
spark_cluster_mode: spark_driver_mode
cluster_name: \${hostip}
streaming_metrics: true
logs:
- type: file
path: /databricks/driver/logs/*.log
source: spark
service: databricks
log_processing_rules:
- type: multi_line
name: new_log_start_with_date
pattern: \d{2,4}[\-\/]\d{2,4}[\-\/]\d{2,4}.*" > /etc/datadog-agent/conf.d/spark.yaml
else# CONFIGURER LES TAGS DE HOST POUR LES WORKERSDD_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"# INSTALLER LA DERNIÈRE VERSION DE L'AGENT DATADOG 7 SUR LES NŒUDS DRIVER ET WORKER DD_AGENT_MAJOR_VERSION=7DD_API_KEY=\$DD_API_KEY DD_HOST_TAGS=\$DD_TAGS bash -c "\$(curl -L https://install.datadoghq.com/scripts/install_script.sh)"fi# REDÉMARRER L'AGENT sudo service datadog-agent restart
EOF
# PROCÉDER AU NETTOYAGEchmod a+x /tmp/start_datadog.sh
/tmp/start_datadog.sh >> /tmp/datadog_start.log 2>&1&disown""", True)
Une fois le script datadog-install-job-driver-mode.sh créé, ajoutez le chemin du script init sur la page de configuration du cluster.
Remarque : les clusters de tâches sont surveillés en mode spark_driver_mode avec le port de l’interface Spark.
%python
dbutils.fs.put("dbfs:/<init-script-folder>/datadog-install-job-driver-mode.sh","""
#!/bin/bash
echo "Exécution sur le driver ? $DB_IS_DRIVER"
echo "Driver ip: $DB_DRIVER_IP"
cat <<EOF >> /tmp/start_datadog.sh
#!/bin/bash
if [ \$DB_IS_DRIVER ]; then
echo "Sur le driver. Installation de Datadog..."
# CONFIGURER LES TAGS DE HOST POUR LE DRIVER
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:driver"
# INSTALLER LA DERNIÈRE VERSION DE L'AGENT DATADOG 7 SUR LES NŒUDS DRIVER ET WORKER
DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=\$DD_API_KEY DD_HOST_TAGS=\$DD_TAGS bash -c "\$(curl -L https://install.datadoghq.com/scripts/install_script.sh)"
# ATTENDRE QUE L'AGENT DATADOG SOIT INSTALLÉ
while [ -z \$datadoginstalled ]; do
if [ -e "/etc/datadog-agent/datadog.yaml" ]; then
datadoginstalled=TRUE
fi
sleep 2
done
echo "Agent Datadog installé"
# ACTIVER LES LOGS DANS datadog.yaml POUR RECUEILLIR LES LOGS DU DRIVER
echo "logs_enabled: true" >> /etc/datadog-agent/datadog.yaml
while [ -z \$gotparams ]; do
if [ -e "/tmp/driver-env.sh" ]; then
DB_DRIVER_PORT=\$(grep -i "CONF_UI_PORT" /tmp/driver-env.sh | cut -d'=' -f2)
gotparams=TRUE
fi
sleep 2
done
current=\$(hostname -I | xargs)
# ÉCRIRE LE FICHIER DE CONFIGURATION SPARK
echo "init_config:
instances:
- spark_url: http://\$DB_DRIVER_IP:\$DB_DRIVER_PORT
spark_cluster_mode: spark_driver_mode
cluster_name: \$current
logs:
- type: file
path: /databricks/driver/logs/*.log
source: spark
service: databricks
log_processing_rules:
- type: multi_line
name: new_log_start_with_date
pattern: \d{2,4}[\-\/]\d{2,4}[\-\/]\d{2,4}.*" > /etc/datadog-agent/conf.d/spark.yaml
# REDÉMARRER L'AGENT
sudo service datadog-agent restart
fi
EOF
# PROCÉDER AU NETTOYAGE
if [ \$DB_IS_DRIVER ]; then
chmod a+x /tmp/start_datadog.sh
/tmp/start_datadog.sh >> /tmp/datadog_start.log 2>&1 & disown
fi
""", True)