使用系統 tables 監視帳戶活動
本文說明 Azure Databricks 中的系統 tables 概念,並重點介紹可用來 get 系統 tables 資料的資源。
什麼是系統 tables?
系統 tables 是 Azure Databricks 裝載的分析存放區,其中包含您在 system
catalog中找到的帳戶作業數據。 系統 tables 可用於在您的帳戶中實現歷史性可觀測性。
注意
如需 system.information_schema
的相關文件,請參閱 的資訊 schema。
需求
若要存取系統 tables,您的工作區必須啟用支援 Unity Catalog的功能。 如需詳細資訊,請參閱 啟用系統 table 架構。
系統 tables 不適用於下列區域:
- Azure 中國區域
- Azure Government 區域
- 印度西部
- 瑞士西部
有哪些系統 tables 可用?
目前,Azure Databricks 會裝載下列系統 tables:
Table | Description | Location | 支援串流 | 免費保留期間 | 包含全域或區域資料 |
---|---|---|---|---|---|
稽核記錄 (公開預覽) | 包含您區域中工作區所有稽核事件的記錄。 如需可用稽核事件的 list,請參閱 診斷記錄參考。 | system.access.audit |
Yes | 365 天 | 工作區層級的區域性事件。 帳戶層級的全域事件。 |
Table 譜系(公開預覽) | 包含在 Unity Catalogtable 或者路徑上的每個讀取或寫入事件的記錄。 | system.access.table_lineage |
Yes | 365 天 | Regional |
Column 譜系(公開預覽) | 在 Unity Catalogcolumn 中包含每個讀取或寫入事件的記錄(但不包含沒有來源的事件)。 | system.access.column_lineage |
Yes | 365 天 | Regional |
計費使用量 | 包含帳戶中所有可計費使用量的記錄。 | system.billing.usage |
Yes | 365 天 | 全球 |
定價 | SKU 價格的歷程記錄。 凡是 SKU 價格變更,就會新增記錄。 | system.billing.list_prices |
No | 不限定 | 全球 |
叢集 (公開預覽) | 緩時變維度 table,其中包含任何叢集一段時間計算組態的完整歷程記錄。 | system.compute.clusters |
Yes | N/A | Regional |
節點時間軸 (公開預覽) | 擷取通用和工作運算資源的使用率計量。 | system.compute.node_timeline |
Yes | 30 天 | Regional |
節點類型 (公開預覽) | 使用基本硬體資訊擷取目前可用的節點類型。 | system.compute.node_types |
No | N/A | Regional |
SQL 倉儲 (公開預覽) | 包含任何 SQL 倉儲一段時間的組態完整歷程記錄。 | system.compute.warehouses |
Yes | 365 天 | Regional |
SQL 倉儲事件 (公開預覽) | 擷取與 SQL 倉儲相關的事件。 例如,啟動、停止、執行、擴大和縮小。 | system.compute.warehouse_events |
Yes | 365 天 | Regional |
工作工作 (公開預覽) | 追蹤在帳戶中建立的所有工作。 | system.lakeflow.jobs |
Yes | 365 天 | Regional |
工作任務 (公開預覽) | 追蹤在帳戶中執行的所有工作任務。 | system.lakeflow.job_tasks |
Yes | 365 天 | Regional |
工作執行時間軸 (公開預覽) | 追蹤工作執行的開始和結束時間。 | system.lakeflow. job_run_timeline |
Yes | 365 天 | Regional |
工作任務時間軸 (公開預覽) | 追蹤用於工作任務執行的開始和結束時間和運算資源。 | system.lakeflow. job_task_run_timeline |
Yes | 365 天 | Regional |
Marketplace 漏斗圖事件 (公開預覽) | 包含清單的家庭用戶印象和漏斗圖資料。 | system.marketplace.listing_ funnel_events |
Yes | 365 天 | Regional |
Marketplace 清單存取權 (公開預覽) | 包含已完成 要求數據 或清單上 get 事件的取用者資訊。 | system.marketplace.listing_ access_events |
Yes | 365 天 | Regional |
預測性最佳化 (公開預覽) | 追蹤預測性最佳化功能的操作歷程記錄。 | system.storage.predictive_ optimization_operations_history |
No | 180 天 | Regional |
Databricks Assistant 活動 (公開預覽) | 追蹤傳送至 Databricks Assistant 的使用者訊息。 | system.access.assistant_events |
No | 365 天 | Regional |
查詢歷史記錄 (公開預覽) | 擷取在 SQL 倉儲和無伺服器計算上執行的所有查詢記錄,適用於 筆記本、 和 作業。 | system.query.history |
No | 90 天 | Regional |
無塵室活動 (公開預覽) | 擷取與無塵室相關的事件。 | system.access.clean_room_events |
Yes | 365 天 | Regional |
模型服務端點的使用量 (公開預覽) | 擷取模型服務端點每項要求及其回覆的權杖計數。 若要擷取在 |
system.serving.endpoint_usage . |
Yes | 90 天 | Regional |
模型服務端點資料 (公開預覽) | 緩慢變化的維度 table 用於在模型服務端點儲存每個提供服務的外部模型的元數據。 | system.serving.served_entities |
Yes | 365 天 | Regional |
網路存取事件 (公開預覽) | table 每次拒絕您帳戶的網路存取時,會記錄一次事件。 | system.access.outbound_network |
Yes | 365 天 | Regional |
計費使用量和定價 tables 是免費的。 公開預覽版中的 Tables 也可以在預覽期間免費使用,但未來可能會產生費用。
注意
除了上面所列的系統以外,您可能會在帳戶中看到其他系統 tables。 這些 tables 目前處於私人預覽狀態,且預設為空白。 如果您有興趣使用上述任何 tables,請連絡您的 Databricks 帳戶小組。
啟用系統 table 架構
由於系統 tables 受 Unity Catalog管理,因此您必須在帳戶中至少有一個已啟用 Unity Catalog的工作區,才能啟用和存取系統 tables。 系統 tables 包含您帳戶中所有工作區的數據,但只能從已啟用 Unity Catalog的工作區存取這些數據。
系統 tables 在 schema 層級被啟用。 如果您啟用系統 schema,則該 schema中的所有 tables 都會被啟用。 發行新的架構時,帳戶管理員必須手動啟用 schema。
帳戶管理員必須啟用系統 tables。您可以在 Databricks CLI 中使用 system-schemas
命令或使用 SystemSchemas API來啟用系統 tables。
注意
預設情況下會啟用 billing
schema。 其他結構描述必須手動啟用。
List 可用的系統架構
使用下列 curl 命令來 list 可用的系統架構:
curl -v -X GET -H "Authorization: Bearer <PAT Token>" "https://adb-<xxx>.azuredatabricks.net/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
:系統 schema 可供使用,但尚未啟用。
state: EnableCompleted
:您已啟用系統 schema,並且可以在 Catalog 資源管理器中看到。
啟用系統 schema
使用下列 curl 命令來啟用系統 schema:
curl -v -X PUT -H "Authorization: Bearer <PAT Token>" "https://adb-<xxx>.azuredatabricks.net/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas/<SCHEMA_NAME>"
如果成功啟用系統 schema,則會傳回結果碼 200
。
如果您試著重新啟用系統 schema,則會返回以下內容:"error_code":"SCHEMA_ALREADY_EXISTS","message":"Schema <schema-name> already exists"
。
停用系統 schema
使用下列 curl 命令來停用系統 schema:
curl -v -X DELETE -H "Authorization: Bearer <PAT Token>" "https://adb-<xxx>.azuredatabricks.net/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas/<SCHEMA_NAME>"
Grant 系統 tables 的存取權
系統 tables 的存取權是由 Unity Catalog所控管。 根據預設,使用者無法存取這些系統結構描述。 若要 grant 存取權,身為中繼存放區管理員和帳戶管理員的用戶必須 grantUSE
和 SELECT
系統架構的許可權。 請參閱 在 Unity Catalog中管理許可權。
系統 tables 是唯讀的,無法修改。
注意
如果帳戶是在 2023 年 11 月 9 日之後建立,您預設可能沒有中繼存放區管理員。 如需詳細資訊,請參閱 Set 設定和管理 Unity Catalog。
系統 tables 是否包含您帳戶中所有工作區的數據?
系統 tables 包含您帳戶中部署在相同雲端區域中之所有工作區的操作數據。 計費系統 tables 包含全帳戶的數據。
即使系統 tables 只能透過 Unity Catalog 工作區存取,tables 也會在您的帳戶中包含非 Unity Catalog 工作區的操作數據。
系統 Where 的數據儲存在 table 嗎?
您的帳戶系統 table 資料會儲存在由 Azure Databricks 寄存的儲存帳戶中,該帳戶與您的中繼資料庫位於相同區域。 使用 Delta Sharing 安全地與您共用資料。
每個 table 都有免費的數據保留期間。 如需有關延長保留期間的資訊,請連絡您的 Azure Databricks 帳戶團隊。
Where 系統 tables 位於 Catalog Explorer 中嗎?
您的帳戶中的系統 tables 位於一個名為 system
的 catalog 中,這個 catalog 包含在每個 Unity Catalog 的中繼存放區中。 在 system
catalog 中,您會看到包含系統 tables的架構,例如 access
和 billing
。
串流系統 tables 的考量因素
Azure Databricks 會使用 Delta Sharing 與客戶共用系統 table 數據。 使用 Delta Sharing 串流時,請注意下列考量事項:
- 如果您使用串流搭配系統 tables,set
skipChangeCommits
選項來true
。 這確保串流作業不會因系統 tables中的刪除而受到干擾。 請參閱忽略更新和刪除。 - Delta Sharing 串流不支援
Trigger.AvailableNow
。 它會轉換成Trigger.Once
。
如果您在串流作業中使用觸發器,並發現它無法趕上最新的系統 table 版本,Databricks 建議您增加作業的排程頻率。
從串流系統讀取增量變更 tables
spark.readStream.option("skipChangeCommits", "true").table("system.billing.usage")
已知問題
目前不支援即時監視。 資料會全天更新。 如果您沒有看到最近的事件記錄,請稍後再返回檢查。
若要啟用系統 tables,您可能需要 grant 對系統 tables Blob 記憶體端點的網路存取。 若要檢視每個區域系統 tables' 記憶體端點的 list,請參閱 記憶體端點 IP 位址。
系統架構
system.operational_data
和system.lineage
已被取代,且將包含空白 tables。系統 用於透過推理 來支援 負載記錄。 帳戶管理員可以看到此 schema,但無法啟用,也不應該用於客戶工作流程。