- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Supported OS
Databricks クラスターを Datadog の Spark インテグレーション で監視します。
Databricks Spark アプリケーションを Datadog Spark インテグレーション で監視します。適切なクラスターのコンフィギュレーション 方法に従って、クラスターに Datadog Agent をインストールしてください。
Databricks で Apache Spark クラスターを監視し、システムと Spark のメトリクスを収集するように Sparkインテグレーションを構成します。
Databricks クラスター環境に最適な init スクリプトを以下で決定します。
内容をコピーしてノートブックに実行します。ノートブックは、クラスターに Datadog Agent をインストールする init スクリプトを作成します。 ノートブックは、スクリプトをグローバル構成として保存するために、1 回だけ実行する必要があります。
<init-script-folder>
パスを init スクリプトを保存する場所に設定します。DD_API_KEY
環境変数を設定します。DD_ENV
環境変数を追加して、クラスターをより適切に識別するためのグローバル環境タグを追加します。DD_SITE
に自分のサイトを設定します:
クラスターのドライバーノードに Datadog Agent をインストールします。
datadog-install-driver-only.sh
スクリプトを作成した後、クラスターコンフィギュレーションページ
に init スクリプトパスを追加します。
%python
dbutils.fs.put("dbfs:/<init-script-folder>/datadog-install-driver-only.sh","""
#!/bin/bash
date -u +"%Y-%m-%d %H:%M:%S UTC"
echo "Running on the 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 "Installing Datadog Agent on the 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"
# 最新の Datadog Agent 7 をインストールします
DD_INSTALL_ONLY=true DD_API_KEY=\$DD_API_KEY DD_HOST_TAGS=\$DD_TAGS bash -c "\$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"
# Datadog Agent がインストールされるのを待ちます
while [ -z \$datadoginstalled ]; do
if [ -e "/etc/datadog-agent/datadog.yaml" ]; then
datadoginstalled=TRUE
fi
sleep 2
done
echo "Datadog Agent is installed"
# datadog.yaml のログを有効にしてドライバーログを収集します
sed -i '/.*logs_enabled:.*/a logs_enabled: true' /etc/datadog-agent/datadog.yaml
# バージョン 7.40 以降で Agent が失敗しないように datadog.yaml でホスト名を明示的に構成します
# 変更点は https://github.com/DataDog/datadog-agent/issues/14152 をご覧ください
hostname=\$(hostname | xargs)
echo "hostname: \$hostname" >> /etc/datadog-agent/datadog.yaml
# マスターパラメータが読み込まれるまで待ってから、IP とポートを取得します
while [ -z \$gotparams ]; do
if [ -e "/tmp/driver-env.sh" ]; then
DB_DRIVER_PORT=\$(cat /tmp/driver-env.sh | cut -d' ' -f2)
gotparams=TRUE
fi
sleep 2
done
hostip=\$(hostname -I | xargs)
# 有効にした構造化ストリーミングメトリクスとログコンフィギュレーションで Spark インテグレーション用のコンフィギュレーションファイルを記述します
# 他のオプションを 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: 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.d/spark.yaml
# Agent を再起動
sleep 15
sudo service datadog-agent restart
fi
EOF
# CLEANING UP
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)
datadog-install-driver-workers.sh
スクリプトを作成した後、クラスターコンフィギュレーションページ
に init スクリプトパスを追加します。
%python
dbutils.fs.put("dbfs:/<init-script-folder>/datadog-install-driver-workers.sh","""
#!/bin/bash
date -u +"%Y-%m-%d %H:%M:%S UTC"
echo "Running on the 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 "Installing Datadog Agent on the driver (master node)."
# ドライバーのホストタグを構成します
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"
# 最新の Datadog Agent 7 をドライバーノードとワーカーノードにインストールします
DD_INSTALL_ONLY=true DD_API_KEY=\$DD_API_KEY DD_HOST_TAGS=\$DD_TAGS bash -c "\$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"
# Datadog Agent がインストールされるのを待ちます
while [ -z \$datadoginstalled ]; do
if [ -e "/etc/datadog-agent/datadog.yaml" ]; then
datadoginstalled=TRUE
fi
sleep 2
done
echo "Datadog Agent is installed"
# datadog.yaml のログを有効にしてドライバーログを収集します
sed -i '/.*logs_enabled:.*/a logs_enabled: true' /etc/datadog-agent/datadog.yaml
# バージョン 7.40 以降で Agent が失敗しないように datadog.yaml でホスト名を明示的に構成します
# 変更点は https://github.com/DataDog/datadog-agent/issues/14152 をご覧ください
hostname=\$(hostname | xargs)
echo "hostname: \$hostname" >> /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
hostip=$(hostname -I | xargs)
# 構造化ストリーミングメトリクスを有効にして Spark インテグレーション用のコンフィギュレーションファイルを記述します
# 他のオプションを spark.d/conf.yaml.example に含めるように変更します
echo "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.d/spark.yaml
else
# ワーカーのホストタグを構成します
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"
# 最新の Datadog Agent 7 をドライバーノードとワーカーノードにインストールします
DD_INSTALL_ONLY=true DD_API_KEY=\$DD_API_KEY DD_HOST_TAGS=\$DD_TAGS bash -c "\$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"
# バージョン 7.40 以降で Agent が失敗しないように datadog.yaml でホスト名を明示的に構成します
# 変更点は https://github.com/DataDog/datadog-agent/issues/14152 をご覧ください
hostname=\$(hostname | xargs)
echo "hostname: \$hostname" >> /etc/datadog-agent/datadog.yaml
fi
# Agent を再起動します
sleep 15
sudo service datadog-agent restart
EOF
# クリーンアップします
chmod a+x /tmp/start_datadog.sh
/tmp/start_datadog.sh >> /tmp/datadog_start.log 2>&1 & disown
""", True)
datadog-install-job-driver-mode.sh
スクリプトを作成した後、クラスターコンフィギュレーションページ
に init スクリプトパスを追加します。
注: ジョブクラスターは Spark UI ポートを使用して spark_driver_mode
で監視されます。
%python
dbutils.fs.put("dbfs:/<init-script-folder>/datadog-install-job-driver-mode.sh","""
#!/bin/bash
date -u +"%Y-%m-%d %H:%M:%S UTC"
echo "Running on the driver? $DB_IS_DRIVER"
echo "Driver ip: $DB_DRIVER_IP"
cat <<EOF >> /tmp/start_datadog.sh
#!/bin/bash
if [ \$DB_IS_DRIVER ]; then
echo "Installing Datadog Agent on the 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"
# 最新の Datadog Agent 7 をドライバーノードとワーカーノードにインストールします
DD_INSTALL_ONLY=true DD_API_KEY=\$DD_API_KEY DD_HOST_TAGS=\$DD_TAGS bash -c "\$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"
# Datadog Agent がインストールされるのを待ちます
while [ -z \$datadoginstalled ]; do
if [ -e "/etc/datadog-agent/datadog.yaml" ]; then
datadoginstalled=TRUE
fi
sleep 2
done
echo "Datadog Agent is installed"
# datadog.yaml のログを有効にしてドライバーログを収集します
sed -i '/.*logs_enabled:.*/a logs_enabled: true' /etc/datadog-agent/datadog.yaml
# バージョン 7.40 以降で Agent が失敗しないように datadog.yaml でホスト名を明示的に構成します
# 変更点は https://github.com/DataDog/datadog-agent/issues/14152 をご覧ください
hostname=\$(hostname | xargs)
echo "hostname: \$hostname" >> /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
hostip=\$(hostname -I | xargs)
# Spark コンフィギュレーションファイルを記述します
echo "init_config:
instances:
- spark_url: http://\$DB_DRIVER_IP:\$DB_DRIVER_PORT
spark_cluster_mode: spark_driver_mode
cluster_name: \$hostip
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.d/spark.yaml
# Agent を再起動
sleep 15
sudo service datadog-agent restart
fi
EOF
# CLEANING UP
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)
Agent の status サブコマンドを実行
し、Checks セクションの下にある spark
を探します。
収集されるメトリクスの一覧は、Spark インテグレーションドキュメント を参照してください。
収集したサービスチェックの一覧は、Spark インテグレーションドキュメント を参照してください。
Databricks インテグレーションには、イベントは含まれません。
ipywidgets
は Databricks Runtime 11.0 以降で利用可能です。デフォルトでは、ipywidgets
はポート 6062
を占有します。
これは、デバッグエンドポイント
の Datadog Agent のデフォルトポートでもあります。そのため、この問題に遭遇することがあります。
23/02/28 17:07:31 ERROR DriverDaemon$: XXX Fatal uncaught exception. Terminating driver.
java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:6062
この問題を解決するには、いくつかの選択肢があります。
spark.databricks.driver.ipykernel.commChannelPort
オプションを使用してポートを変更することができます。詳しくは Databricks ドキュメント
を参照してください。datadog.yaml
コンフィギュレーションファイルの process_config.expvar_port
で構成することができます。DD_PROCESS_CONFIG_EXPVAR_PORT
環境変数を設定して、Datadog Agent が使用するポートを構成することができます。ご不明な点は、Datadog のサポートチーム までお問合せください。
お役に立つドキュメント、リンクや記事: