AzureDatabricksをDatadogでモニタリングする
Azure DatabricksのMetricsを取るにはDatadog一択のようです。(※)以下の手順を使ってやってみたのですが上手くいかなかったのでDatadogのマニュアルを見ながら解消してみました。
※ DatabricksにはGangriaが選択肢としてあります。
Datadogの設定
Datadogを申し込んでください。ただ見るだけならFreeプランで大丈夫ですがメトリクスが1日しか保存されないことや、アラートが飛ばせませんので運用で利用するときには購入を検討しましょう。
使える状態になったらIntegrationsを選択し、Spark Integrationを利用できるようにしておきます。
Datadogのエージェント起動スクリプトで利用するAPIKeysをコピーしておきます。
Datadogのagentをインストールするshを保存する
適当なNotebookを開き、以下のスクリプトを実行します。
- は好きな場所を指定してください。
- はDatadogの画面でコピーしたものを指定してください。
ポイント(MSのユーザガイドとの違い)
- Datadogの設定でresourcemanager_uriは使えません。spark_uriにする必要があります。
- echo "init_config:の後に階層が入っているとうまく動きません
%python
dbutils.fs.put("dbfs:/<init-script-folder>/datadog-install-driver-only.sh","""
#!/bin/bash
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 "On the driver. Installing Datadog ..."
# install the Datadog agent
DD_API_KEY=<your-api-key> bash -c "\$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_script.sh)"
# WAITING UNTIL MASTER PARAMS ARE LOADED, THEN GRABBING IP AND 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
current=\$(hostname -I | xargs)
# WRITING SPARK CONFIG FILE FOR STREAMING SPARK METRICS
echo "init_config:
instances:
- spark_url: http://\$DB_DRIVER_IP:\$DB_DRIVER_PORT
spark_cluster_mode: spark_standalone_mode
cluster_name: \$current" > /etc/datadog-agent/conf.d/spark.yaml
# RESTARTING AGENT
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)
クラスタを起動する
クラスタの起動オプションに先ほど保存したshを指定してから起動します。
たしかめる
notebookでコマンドを実行してください
%sh sudo datadog-agent status
下記が出力されていれば成功です。
spark (1.5.0)
-------------
Instance ID: spark:8f21fc664e907eaa [OK]
Total Runs: 74
Metric Samples: Last Run: 278, Total: 6,127
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 3, Total: 222
Average Execution Time : 41ms
少しするとDatadogにも反映されていることが確認できるはずです