はじめに
Azure Databricks ではノートブックに記載したログ情報を Log Analytics ワークスペースに送信することができます。
なお、Spark Monitoring ライブラリを使用する必要があるため、今回は導入までの手順を説明します。
手順
1. ライブラリのビルド
以下のコマンドを実行して、Java と Maven をインストールします。なお、実行環境として Ubuntu 22.04 を使用しています。
$ sudo apt update
$ sudo apt install -y default-jdk maven
Spark Monitoring リポジトリを git clone して、Maven ビルドします。
今回は Databricks Runtime 12.2 をオプションで指定していますが、これはご自身の Databricks Runtime バージョンに合わせる必要があります。
$ git clone https://github.com/mspnp/spark-monitoring.git
$ cd spark-monitoring/
$ git switch l4jv2
$ mvn package -P dbr-12.2-lts
src/scripts/spark-monitoring.sh
にて、Log Analytics ワークスペースの ID とキーを記載します。これらの情報は Azure Portal の Log Analytics ワークスペース画面にて確認できます。
export LOG_ANALYTICS_WORKSPACE_ID=<Log Analytics ワークスペース ID>
export LOG_ANALYTICS_WORKSPACE_KEY=<Log Analytics ワークスペース キー>
2. Databricks ワークスペースへのファイル アップロード
src/scripts/spark-monitoring.sh
および target/spark-monitoring_1.0.0.jar
を Databricks ワークスペースにて dbfs:/databricks/spark-monitoring/
に配置します。
その際、Databricks CLI を使用したアップロードでもよいですし、UI 画面からアップロードし、Notebook で以下のようなコードを実行してファイルを移動してもよいです。
%sh
mv /FileStore/spark-monitoring.sh /dbfs/databricks/spark-monitoring/spark-monitoring.sh
3. クラスターの起動
Init Script で dbfs:/databricks/spark-monitoring/spark-monitoring.sh
を指定したうえでクラスターを起動します。
その際、手順 1 のビルド時にオプションで指定した Databricks Runtime バージョンを選択します。
4. コードの実行
Databricks ノートブックにて以下のサンプルコードを実行します。
logger = sc._jvm.org.apache.log4j.LogManager.getRootLogger()
logger.info('logging test')
5. Log Analytics ワークスペースでの確認
Log Analytics ワークスペースにて SparkLoggingEvent_CL
クエリを実行し、手順 4 で指定したログが送信されていることを確認します。
メトリクスに関しては SparkMetric_CL
クエリにより確認できます。
おわりに
Azure Databricks ノートブックに記載したログ情報を Log Analytics ワークスペースに送信する方法を説明しました。先述の通り、ログ情報のみならずメトリクス情報も取得できるので、これらを利用してアラートを作成することもできます。
参考