システムテーブルでアカウントアクティビティを監視する
この記事では、Databricksのシステムテーブルの概念を説明し、システムテーブルデータを最大限に活用するために使用できるリソースを紹介します。
システムテーブルとは
システムテーブルは、system
カタログにある、Databricksがホストするアカウントの運用データの分析ストアです。システムテーブルは、アカウント全体の履歴の確認に使用できます。
注:
system.information_schema
のドキュメントについては、情報スキーマを参照してください。
要件
システムテーブルにアクセスするには、ワークスペースでUnity Catalogが有効になっている必要があります。詳細については、「システムテーブルスキーマを有効にする」を参照してください。
システムテーブルはAWS GovCloudリージョンでは使用できません。
利用可能なシステムテーブル
現在、Databricksは次のシステムテーブルをホストしています。
テーブル |
説明 |
場所 |
ストリーミングをサポート |
無料保存期間 |
グローバルまたは地域データを含む |
---|---|---|---|---|---|
監査ログ (パブリック プレビュー) |
リージョン内のワークスペースから取得したすべての監査イベントの記録が含まれます。取得可能な監査イベントの一覧については、「監査ログのリファレンス」を参照してください。 |
|
はい |
365日 |
ワークスペースレベルのイベントの場合はリージョン。アカウントレベルのイベントの場合はグローバル。 |
Table リネージ (パブリック プレビュー) |
Unity Catalogテーブルまたはパス上の各読み取りまたは書き込みイベントのレコードが含まれます。 |
|
はい |
365日 |
リージョン |
Column リネージ (Public Preview) |
Unity Catalogの各読み取りまたは書き込みイベントのレコードが含まれます(ただし、ソースのないイベントは含まれません)。 |
|
はい |
365日 |
リージョン |
アカウント全体のすべての請求対象使用量のレコードが含まれます。 |
|
はい |
365日 |
グローバル |
|
SKU価格の履歴ログ。SKU価格が変更されるたびにレコードが追加されます。 |
|
いいえ |
無制限 |
グローバル |
|
クラスター (パブリック プレビュー) |
任意のクラスターの時間の経過に伴うコンピュート構成の全履歴を含む、ゆっくりと変化するディメンションテーブル。 |
|
はい |
N/A |
リージョン |
Node タイムライン (パブリック プレビュー) |
汎用コンピュートリソースおよびジョブコンピュートリソースの使用状況メトリクスを取得します。 |
|
はい |
30日 |
リージョン |
ノードの種類 (パブリック プレビュー) |
現在利用可能なノードタイプと、その基本的なハードウェア情報をキャプチャします。 |
|
いいえ |
N/A |
リージョン |
SQLウェアハウス (パブリック プレビュー) |
任意の SQLウェアハウスの経時的な構成の完全な履歴が含まれています。 |
|
はい |
365日 |
リージョン |
SQLウェアハウス イベント (パブリック プレビュー) |
SQLウェアハウスに関連するイベント(開始、停止、実行、スケールアップ、スケールダウンなど)をキャプチャします。 |
|
はい |
365日 |
リージョン |
ジョブ (パブリック プレビュー) |
アカウントで作成されたすべてのジョブを追跡します。 |
|
はい |
365日 |
リージョン |
ジョブ タスク (パブリック プレビュー) |
アカウントで実行されるすべてのジョブタスクを追跡します。 |
|
はい |
365日 |
リージョン |
ジョブ実行タイムライン (パブリック プレビュー) |
ジョブ実行の開始時刻と終了時刻を追跡します。 |
|
はい |
365日 |
リージョン |
ジョブ タスク タイムライン (パブリック プレビュー) |
ジョブタスクの実行に使用される開始時刻と終了時刻、およびコンピュートリソースを追跡します。 |
|
はい |
365日 |
リージョン |
Marketplace ファネル イベント (パブリック プレビュー) |
リスティング用の消費者インプレッションとファネルデータが含まれます。 |
|
はい |
365日 |
リージョン |
Marketplace 登録情報へのアクセス (パブリック プレビュー) |
リスティング上の完了済みリクエストデータやデータ取得イベントの消費者情報が含まれます。 |
|
はい |
365日 |
リージョン |
予測的最適化 (Public Preview) |
予測的最適化機能の操作履歴を追跡します。 |
|
いいえ |
180日 |
リージョン |
Databricks Assistant イベント (パブリック プレビュー) |
Databricks Assistantに送信されたユーザーメッセージを追跡します。 |
|
いいえ |
365日 |
リージョン |
クエリ履歴 (パブリック プレビュー) |
SQLウェアハウスで実行されるすべてのクエリーのレコードをキャプチャします。 |
|
はい |
90日 |
リージョン |
クリーンルームイベント (パブリックプレビュー) |
クリーンルームに関連するイベントをキャプチャします。 |
|
はい |
365日 |
リージョン |
モデルサービング endpoint usage (Public Preview) |
モデルサービング エンドポイントへの各要求とその応答のトークン数をキャプチャします。 このテーブルでエンドポイントの使用状況をキャプチャするには、 配信エンドポイントで使用状況の追跡を有効にする必要があります。 |
|
はい |
90日 |
リージョン |
モデルサービング endpoint data (Public Preview) |
モデルサービングエンドポイントに提供される各外部モデルのメタデータを格納する、ゆっくりと変化するディメンションテーブル。 |
|
はい |
365日 |
リージョン |
ネットワーク アクセス イベント (パブリック プレビュー) |
アカウントからのインターネットアクセスが拒否されるたびにイベントを記録するテーブル。 |
|
はい |
365日 |
リージョン |
課金利用テーブルと価格テーブルは無料でご利用いただけます。 パブリック プレビューのテーブルもプレビュー中は無料で使用できますが、将来的には料金が発生する可能性があります。
注:
アカウントには、上記のもの以外にも、他のシステムテーブルが表示される場合があります。これらのテーブルは現在プライベートプレビュー段階であり、デフォルトでは空になっています。これらのテーブルの使用にご興味がある場合は、Databricksアカウントチームに連絡してください。
システムテーブルスキーマを有効にする
システムテーブルはUnity Catalogによって管理されるため、システムテーブルを有効にしてアクセスするには、アカウントに少なくとも1つのUnity Catalog対応ワークスペースが必要です。システムテーブルには、アカウント内のすべてのワークスペースのデータが含まれますが、Unity Catalog対応のワークスペースからしかアクセスできません。
システムテーブルはスキーマレベルで有効になります。システムスキーマを有効にすると、そのスキーマ内のすべてのテーブルが有効になります。新しいスキーマがリリースされた場合、アカウント管理者は手動でスキーマを有効にする必要があります。
システムテーブルは、アカウント管理者が有効にする必要があります。 システムテーブルを有効にするにはsystem-schemas
Databricks CLIのコマンドを使用するか、SystemSchemas API.
注:
billing
スキーマはデフォルトで有効になっています。その他のスキーマは手動で有効にする必要があります。
使用可能なシステムスキーマの一覧表示
利用可能なシステムスキーマを一覧表示するには、以下のcurlコマンドを使用します。
curl -v -X GET -H "Authorization: Bearer <PAT Token>" "https://<workspace>.cloud.databricks.com/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas"
以下はGET
コマンドの出力例です。
{"schemas":[{"schema":"access","state":"<AVAILABLE OR EnableCompleted>"},{"schema":"billing","state":"<AVAILABLE OR EnableCompleted>"},{"schema":"information_schema","state":"<AVAILABLE OR EnableCompleted>"}]}
state: AVAILABLE
: システムスキーマは利用可能ですが、まだ有効化されていません。
state: EnableCompleted
: システムスキーマが有効になっており、カタログエクスプローラーに表示されます。
システムスキーマを有効にする
システムスキーマを有効にするには、以下のcurlコマンドを使用します。
curl -v -X PUT -H "Authorization: Bearer <PAT Token>" "https://<workspace>.cloud.databricks.com/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas/<SCHEMA_NAME>"
システムスキーマが正常に有効化されると、結果コード200
が返されます。
システムスキーマを再度有効にしようとすると、次の結果が返されます。"error_code":"SCHEMA_ALREADY_EXISTS","message":"Schema <schema-name> already exists"
システムテーブルへのアクセス権を付与する
システムテーブルへのアクセスは、 Unity Catalogによって管理されます。 デフォルトでは、これらのシステムスキーマにアクセスできるユーザーはいません。 アクセス権を付与するには、メタストア管理者とアカウント管理者の両方であるユーザーが、システム スキーマに対する USE
権限と SELECT
権限を付与する必要があります。 「Unity Catalog での特権の管理」を参照してください。
システムテーブルは読み取り専用で、変更できません。
注:
2023年11月8日以降に作成されたアカウントの場合、デフォルトではメタストアの管理者がいない可能性があります。詳細については、「Unity Catalogの設定と管理」を参照してください。
システムテーブルには、アカウントのすべてのワークスペースのデータが含まれていますか?
システムテーブルには、同じクラウドリージョン内にデプロイされたアカウント内のすべてのワークスペースの運用データが含まれています。 請求システムテーブルには、アカウント全体のデータが含まれています。
システムテーブルには Unity Catalog ワークスペースからのみアクセスできますが、テーブルにはアカウント内の非Unity Catalog ワークスペースの運用データも含まれています。
システムテーブルのデータはどこに保存されますか?
アカウントのシステムテーブルデータは、メタストアと同じリージョンにある Databricksホスト型ストレージアカウントに保存されます。 データは、Delta Sharing を使用して安全に共有されます。
各テーブルには、無料のデータ保持期間があります。 保持期間の延長に関する情報については、 Databricks アカウントチームにお問い合わせください。
カタログエクスプローラーのシステムテーブルはどこにありますか?
アカウント内のシステムテーブルは、すべてのUnity Catalogメタストアにあるsystem
というカタログにあります。system
カタログには、システムテーブルがあるaccess
やbilling
などのスキーマが表示されます。
ストリーミングシステムテーブルに関する注意事項
DatabricksはDelta Sharingを使用してシステムテーブルデータを顧客と共有します。Delta Sharingを使用してストリーミングする場合は、次の点に注意してください。
システムテーブルでストリーミングを使用している場合は、
skipChangeCommits
オプションをtrue
に設定します。これにより、システムテーブル内の削除によってストリーミングジョブが中断されないようにします。詳しくは、「更新と削除を無視する」を参照してください。Trigger.AvailableNow
は、Delta Sharingストリーミングではサポートされません。これはTrigger.Once
に変換されます。
ストリーミングジョブでトリガーを使用していて、そのジョブが最新のシステムテーブルバージョンに対応していないことがわかった場合は、スケジュール設定しているそのジョブの頻度を増やすことを推奨します。
既知の問題
現在、リアルタイムモニタリングはサポートされていません。データは終日にわたって更新されます。最近のイベントのログが表示されない場合は、後でもう一度確認してください。
ワークスペースで顧客管理VPCを使用している場合、ログが保存されているS3バケットへのアクセスが拒否される可能性があります。その場合は、ご利用のリージョンのシステムテーブルデータが保存されているS3へのアクセスを許可するように、VPCエンドポイントのポリシーを更新する必要があります。リージョンバケットは、ストレージバケットアドレステーブルのシステムテーブルバケット列にリスト化されています。
システムスキーマ
system.operational_data
およびsystem.lineage
は非推奨であり、内容は空のテーブルになります。__internal_logging
システムテーブルスキーマは、推論テーブルを使用したペイロードロギングをサポートするために使用されます。このスキーマはアカウント管理者に表示されますが、有効にすることはできず、顧客のワークフローには使用しないでください。