目次
1. はじめに
皆さんこんにちは。
今回は、Databricksで診断ログを保存する方法について説明していきます。
※ジョブログについては、こちらをご覧ください。
2. 前提要件
本書を実施する際の前提条件は以下の通りです。
・Log Analyticsワークスペースが必要です。作成していない場合、こちらをご覧ください。
3. 診断設定の作成
次は、Databricks のログをLog Analytic ワークスペースへ送信する診断設定の作成方法について説明していきます。
① Databricks ワークスペースの Portal 画面で「診断設定」をクリックします。
②「診断設定を追加する」をクリックします。
③「診断設定の名前」項目で診断設定の名前を入力します。
④「Log Analyticsワークスペースへの送信」をチェックします。
⑤「サブスクリプション」項目で対応サブスクリプションを選択します。
⑥「Log Analyticsワークス」でログの送信希望のワークスペースを選択します。
⑦「カテゴリ」に様々な監視対象があります。希望の監視対象を選択してください。
以下の監視対象をお勧めします。
-
- Databricks File System : DBFS に関連するイベント。
- Databricks Clusters : クラスターに関連するイベント。
- Databricks Accounts : アカウント、ユーザー、グループ、および IP アクセス リストに関連するイベント。
- Databricks Notebook: ノートブックに関連するイベント。
- Databricks SSH : SSH アクセスに関連するイベント。
- Databricks Secrets : シークレットに関連するイベント。
- Databricks Genie : サポート担当者によるワークスペース アクセスに関連するイベント。
- Databricks Unity Catalog : Unity Catalog に関連するイベント。
⑧ 監視対象を選択して、「保存」ボタンをクリックします。
⑨ 診断設定が追加されました。15分後にLog Analytics ワークスペースへログが送信されます。
4.診断ログのスキーマ
ログを保存するテーブルのスキーマは以下の通りです。
列名 | 説明 | |
1 | _ResourceId | レコードが関連付けられているリソースの一意識別子。 |
2 | _SubscriptionId | レコードが関連付けられているサブスクリプションの一意識別子。 |
3 | ActionName | 要求のアクション。 |
4 | Category | リクエストを記録したサービス。 |
5 | Identity |
リクエストを行ったユーザーに関する情報。
|
6 | LogId | 重複除去に使用できるログ メッセージの一意識別子。 |
7 | OperationName | login、logout、read、write などのアクション。 |
8 | OperationVersion | Databricks 操作ベースの診断ログ形式のスキーマ バージョン。 |
9 | RequestId | 一意の要求 ID。 |
10 | RequestParams | イベントで使用されるパラメーターのキーと値のペア。 |
11 | Response | エラー メッセージ (該当する場合)、結果、statusCode など、要求に対する HTTP 応答。 |
12 | ServiceName |
ソース要求のサービス。
|
13 | SessionId |
アクションのセッション ID。
|
14 | SourceIPAddress |
ソース要求の IP アドレス。
|
15 | TenantId |
レコードが関連付けられているテナントの一意の識別子。
|
16 | TimeGenerated |
アクションのタイムスタンプ (UTC)。
|
17 | Type |
テーブルの名前。
|
18 | UserAgent |
要求の実行に使用されるブラウザーまたは API クライアント。
|
5.監視対象のアクション
5.1 ノートブックのアクション
アクション | 説明 | |
1 | attachNotebook | ノートブックがクラスターにアタッチされる |
2 | cloneNotebook | ユーザーがノートブックを複製する |
3 | createNotebook | ノートブックが作成される |
4 | deleteFolder | ノートブック フォルダーが削除される |
5 | deleteNotebook | ノートブックが削除される |
6 | detachNotebook | ノートブックがクラスターからデタッチされる |
7 | downloadLargeResults | ユーザーがノートブックに表示するには大きすぎるクエリ結果をダウンロードする |
8 | downloadPreviewResults | ユーザーがクエリ結果をダウンロードする |
9 | importNotebook | ユーザーがノートブックをインポートする |
10 | moveFolder | ノートブック フォルダーがある場所から別の場所に移動される |
11 | moveNotebook | ノートブックがある場所から別の場所に移動される |
12 | renameNotebook | ノートブックの名前が変更される |
13 | restoreFolder | 削除されたフォルダーが復元される |
14 | restoreNotebook | 削除されたノートブックが復元される |
15 | runCommand | 詳細監査ログが有効になっているときに使用可能。 Databricks がノートブックでコマンドを実行した後に出力されます。 コマンドは、ノートブック内のセルに対応します。 |
16 | takeNotebookSnapshot | ジョブ サービスまたは MLflow の実行時にノートブック スナップショットが作成される |
5.2 クラスタのアクション
アクション | 説明 | |
1 | changeClusterAcl | ユーザーがクラスター ACl を変更する |
2 | create | ユーザーがクラスターを作成する |
3 | createResult | クラスターの作成の結果。 create と連動。 |
4 | delete | クラスターが終了される |
5 | deleteResult | クラスターの終了の結果。 delete と連動。 |
6 | edit | ユーザーがクラスター設定を変更する。 これは、クラスター サイズの変更や自動スケーリングの動作を除くすべての変更をログに記録します。 |
7 | permanentDelete | UI からクラスターが削除される |
8 | resize | クラスターがサイズ変更される。 これは、変化する唯一のプロパティがクラスター のサイズまたは自動スケーリングの動作である実行中のクラスターに記録されます。 |
9 | resizeResult | クラスターのサイズ変更の結果。 resize と連動。 |
10 | restart | ユーザーが実行中のクラスターを再起動する |
11 | restartResult | クラスターの再起動の結果。 restart と連動。 |
12 | start | ユーザーがクラスターを起動する |
startResult | クラスターの起動の結果。 start と連動。 |
5.3 Unityカタログのアクション
アクション | 説明 | |
1 | createMetastore | アカウント管理者がメタストアを作成する |
2 | getMetastore | アカウント管理者がメタストア ID を要求する |
3 | getMetastoreSummary | アカウント管理者がメタストアに関する詳細を要求する |
4 | listMetastores | アカウント管理者がアカウント内のすべてのメタストアの一覧を要求する |
5 | updateMetastores | アカウント管理者がメタストアを更新する |
6 | deleteMetastore | アカウント管理者がメタストアを削除する |
7 | createMetastore | アカウント管理者がメタストアを作成する |
8 | updateMetastoreAssignment | アカウント管理者がメタストアのワークスペース割り当てを更新する |
9 | createExternalLocation | アカウント管理者が外部の場所を作成する |
10 | getExternalLocation | アカウント管理者が外部の場所に関する詳細を要求する |
11 | listExternalLocations | アカウント管理者がアカウント内のすべての外部の場所の一覧を要求する |
12 | updateExternalLocation | アカウント管理者が外部の場所を更新する |
13 | deleteExternalLocation | アカウント管理者が外部の場所を削除する |
14 | createCatalog | ユーザーがカタログを作成する |
15 | deleteCatalog | ユーザーがカタログを削除する |
16 | getCatalog | ユーザーがカタログに関する詳細を要求する |
17 | updateCatalog | ユーザーがカタログを更新する |
18 | listCatalog | ユーザーがメタストア内のすべてのカタログを一覧表示する呼び出しを行う |
19 | createSchema | ユーザーがスキーマを作成する |
20 | deleteSchema | ユーザーがスキーマを削除する |
21 | getSchema | ユーザーがスキーマに関する詳細を要求する |
22 | listSchema | ユーザーがカタログ内のすべてのスキーマの一覧を要求する |
23 | updateSchema | ユーザーがスキーマを更新する |
24 | createTable | ユーザーがテーブルを作成する |
25 | deleteTable | ユーザーがテーブルを削除する |
26 | getTable | ユーザーがテーブルに関する詳細を要求する |
27 | listTables | ユーザーがスキーマ内のすべてのテーブルを一覧表示する呼び出しを行う |
28 | listTableSummaries | ユーザーがメタストア内のスキーマとカタログについてのテーブルのまとめの配列を取得する。 |
29 | updateTables | ユーザーがテーブルを更新する |
30 | createStorageCredential | アカウント管理者がストレージ資格情報を作成する |
31 | listStorageCredentials | アカウント管理者がアカウント内のすべてのストレージ資格情報を一覧表示する呼び出しを行う |
32 | getStorageCredential | アカウント管理者がストレージ資格情報に関する詳細を要求する |
33 | updateStorageCredential | アカウント管理者がストレージ資格情報を更新する |
34 | deleteStorageCredential | アカウント管理者がストレージ資格情報を削除する |
35 | generateTemporaryTableCredential | テーブルに対して一時的な資格情報が付与されるたびにログに記録されます。 このイベントを使用して誰が何をいつクエリしたかを判断できます。 |
36 | generateTemporaryPathCredential | パスに対して一時的な資格情報が付与されるたびにログに記録されます。 |
37 | getPermissions | ユーザーがセキュリティ保護可能なオブジェクトのアクセス許可の詳細を取得する呼び出しを行う |
38 | updatePermissions | ユーザーがセキュリティ保護可能なオブジェクトのアクセス許可を更新する |
39 | metadataSnapshot | ユーザーが以前のテーブル バージョンのメタデータに対してクエリを実行する |
40 | metadataAndPermissionsSnapshot | ユーザーが以前のテーブル バージョンのメタデータとアクセス許可に対してクエリを実行する |
41 | updateMetadataSnapshot | ユーザーが以前のテーブル バージョンのメタデータを更新する |
42 | getForeignCredentials | ユーザーが外部キーに関する詳細を取得する呼び出しを行う |
43 | getInformationSchema | ユーザーがスキーマに関する詳細を取得する呼び出しを行う |
44 | createConstraint | ユーザーがテーブルの制約を作成する |
45 | deleteConstraint | ユーザーがテーブルの制約を削除する |
46 | createPipeline | ユーザーが Unity Catalog パイプラインを作成する |
47 | updatePipeline | ユーザーが Unity Catalog パイプラインを更新する |
48 | getPipeline | ユーザーが Unity Catalog パイプラインに関する詳細を要求する |
49 | deletePipeline | ユーザーが Unity Catalog パイプラインを削除する |
50 | deleteResourceFailure | リソースの削除に失敗する |
5.4 シークレットのアクション
アクション | 説明 | |
1 | createScope | ユーザーがシークレット スコープを作成する |
2 | deleteAcl | ユーザーがシークレット スコープの ACL を削除する |
3 | deleteScope | ユーザーがシークレット スコープを削除する |
4 | deleteSecret | ユーザーがスコープからシークレットを削除する |
5 | getAcl | ユーザーがシークレット スコープの ACL を取得する |
6 | getSecret | ユーザーがスコープからシークレットを取得する |
7 | listAcls | ユーザーがシークレット スコープの ACL を一覧表示する呼び出しを行う |
8 | listScopes | ユーザーがシークレット スコープを一覧表示する呼び出しを行う |
9 | listSecrets | ユーザーがスコープ内のシークレットを一覧表示する呼び出しを行う |
10 | putAcl | ユーザーがシークレット スコープの ACL を変更する |
11 | putSecret | ユーザーがスコープ内でシークレットを追加または編集する |
5.5 シークレットのアクション
アクション | 説明 | |
1 | addBlock | ユーザーがデータ ブロックをストリームに追加する。 これは dbfs/create と組み合わせて使用され、DBFS にデータをストリーミングします。 |
2 | create | ユーザーがストリームを開いて、DBFS にファイルを書き込む |
3 | delete | ユーザーが DBFS からファイルまたはディレクトリを削除する |
4 | mkdirs | ユーザーが新しい DBFS ディレクトリを作成する |
5 | move | ユーザーが DBFS 内のある場所から別の場所にファイルを移動する |
6 | put | ユーザーがマルチパート フォーム ポストを使用して DBFS にファイルをアップロードする |
7 | mount | ユーザーが特定の DBFS の場所にマウント ポイントを作成する |
8 | unmount | ユーザーが特定の DBFS の場所にあるマウント ポイントを削除する |
5.6 アカウントのアクション
アクション | 説明 | |
1 | aadBrowserLogin | ユーザーが AAD トークンを使用して Databricks にログインする |
2 | aadTokenLogin | ユーザーが AAD ブラウザー ワークフロー経由で Databricks にログインする |
3 | accountInHouseOAuthClientAuthentication | OAuth クライアントが認証される |
4 | activateUser | 管理者が Azure portal から Databricks アカウントにユーザーを追加する |
5 | add | ユーザーが認証にユーザー名とパスワードを使用して Azure Databricks アカウントに追加される |
6 | addPrincipalToGroup | ユーザーがグループに追加される |
7 | changeDatabricksSqlAcl | ユーザーの Databricks SQL アクセス許可が変更される |
8 | changeDatabricksWorkspaceAcl | ワークスペースへのアクセス許可が変更される |
9 | changeDbTokenAcl | トークンに対するアクセス許可が変更されるとき |
10 | changeServicePrincipalAcls | サービス プリンシパルのアクセス許可が変更されるとき |
11 | createGroup | グループが作成される |
12 | createIpAccessList | IP アクセス リストがワークスペースに追加される |
13 | delete | ユーザーが Azure Databricks アカウントから削除される |
14 | deleteIpAccessList | IP アクセス リストがワークスペースから削除される |
15 | garbageCollectDbToken | ユーザーが期限切れのトークンに対してガベージ コレクト コマンドを実行する |
16 | generateDbToken | [ユーザー設定] からトークンを生成するとき、またはサービスがトークンを生成するとき |
17 | IpAccessDenied | ユーザーが拒否された IP 経由でサービスへの接続を試みる |
18 | ipAccessListQuotaExceeded | |
19 | jwtLogin | ユーザーが JWt を使用して Databricks にログインする |
20 | login | ユーザーがワークスペースにログインする |
21 | logout | ユーザーがワークスペースからログアウトする |
22 | oidcTokenAuthorization | 汎用 OIDC/OAuth トークン経由で API 呼び出しが承認されるとき |
23 | passwordVerifyAuthentication | |
24 | reachMaxQuotaDbToken | 期限切れでないトークンの現在の数がトークン クォータを超えるとき |
25 | removeAdmin | ユーザーが管理者のアクセス許可を取り消される |
26 | removeGroup | グループがアカウントから削除される |
27 | removePrincipalFromGroup | ユーザーがグループから削除される |
28 | revokeDbToken | |
29 | setAdmin | ユーザーに管理者アクセス許可が付与される |
30 | tokenLogin | ユーザーがトークンを使用して Databricks にログインする |
31 | updateIpAccessList | IP アクセス リストが変更される |
32 | updateUser | Azure portal 経由で Azure Databricks ユーザーに変更が加えられる |
5.7 Genieのアクション
1 | アクション | 説明 |
2 | databricksAccess | Databricks の担当者が顧客環境へのアクセスを承認される |
5.8 SSHのアクション
アクション | 説明 | |
1 | login | Spark ドライバーへの SSH のエージェント ログイン |
2 | logout | Spark ドライバーからの SSH のエージェント ログアウト |
6.まとめ
Databricksで診断ログを保存する方法について説明しました。
今回の記事が少しでもDatabricksを知るきっかけや、業務のご参考になれば幸いです。
日商エレクトロニクスでは、Azure Databricksの環境構築パッケージを用意しています。
Azure DatabricksやAzure活用、マイクロソフト製品の活用についてご相談事がありましたらぜひお問い合わせください!
・Azure Databricks連載シリーズはこちら
この記事を読んだ方へのオススメコンテンツはこちら
この記事を書いた人
- quanna