AzureDatabricksをDatadogでモニタリングする


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にも反映されていることが確認できるはずです