警報系統表參考

Important

此系統資料表處於公開預覽狀態。

本頁包含警報系統資料表的資訊,包括每個資料表結構的概要。 使用這些表格直接以 SQL 查詢您的工作區 警示 及其評估歷史,讓您能審計警示定義、分析評估趨勢,並大規模監控警示工作負載。

system.alert 結構包含兩個資料表:

Requirements

預設情況下,只有同時擁有帳號管理員和元儲存管理員角色的使用者才能存取警報系統資料表。 為了與使用者或群組分享資料表資料,Databricks 建議為每個使用者或群組建立動態檢視。 請參閱建立動態檢視

警報配置表架構

system.alert.alerts 張桌子是一張緩慢變化的尺寸表。 每一列都捕捉警示在某一時刻的設定,因此當一個警示的設定變更時,會有多個列。

資料表路徑:此系統資料表位於 system.alert.alerts

表格 system.alert.alerts 使用下列架構:

欄位名稱 資料類型 Description 範例
account_id 字串 帳戶的標識碼。 23e22ba4-87b9-4cc2
-9770-d10b894b7118
workspace_id 字串 定義警示的工作區 ID。 1234567890123456
alert_id 字串 警示的識別碼。 2762099691916865
display_name 字串 警報的顯示名稱。 Test Alert
owned_by 字串 警報擁有者的用戶名稱。 設定為 Unavailable 如果使用者已被刪除。 example@databricks.com
compute 結構 一個結構體,代表與警示所附的運算資源。 其type值為WAREHOUSESERVERLESS_COMPUTE或 。 {
type: WAREHOUSE,
cluster_id: NULL,
warehouse_id: 802f6d5283291c0d
}
run_as 字串 使用者或服務主體的識別碼,其憑證用於執行警報。 2967555311742259
schedule 結構 一個結構體代表警示的排程,包括暫停狀態、cron 排程和時區。 {
pause_status: UNPAUSED,
quartz_cron_schedule: 0 0 10 * * ?,
timezone_id: UTC
}
evaluation_source 結構 一個結構體,代表查詢結果中的來源欄位,用於評估警示,包括應用於該警示的彙整。 {
aggregation: SUM,
display: x,
name: x
}
evaluation_comparison_operator 字串 運算子在評估時會將來源值與閾值進行比較。 例如:GREATER_THANLESS_THANEQUAL LESS_THAN
evaluation_threshold 結構 一個結構體,代表與來源值比較的閾值。 閾值要麼是靜態值,要麼是另一個欄位。 {
value: {
double_value: 1.25
}
}
evaluation_empty_result_state 字串 當查詢回傳為空結果時,警示所報告的狀態。 可能的值是 OKTRIGGEREDERROR OK
notify_on_ok boolean 當警報返回 OK 州政府時,是否要通知訂閱者。 true
retrigger_seconds int 警報被觸發後等待的秒數,才能再次觸發。 若 0,警報不會再次觸發。 0
subscriptions 陣列 接收警報通知的訂閱者陣列。 每位訂閱者皆以使用者電子郵件或通知目的地 ID 識別。 [
{
user_email: example@databricks.com,
destination_id: null
}
]
change_time 時間戳記 配置最後一次更改的時間。 時區資訊會記錄在數值末尾,並代表 +00:00 UTC。 2023-01-01T01:01:01.123+00:00
create_time 時間戳記 警報產生的時間。 時區資訊會記錄在數值末尾,並代表 +00:00 UTC。 2023-01-01T01:01:01.123+00:00
delete_time 時間戳記 警報被永久刪除的時間。 移至垃圾桶的警報不會被記錄。 時區資訊會記錄在數值末尾,並代表 +00:00 UTC。 2023-01-01T01:01:01.123+00:00

警報評估歷史表架構

system.alert.alert_evaluation_history 表格記錄每個警示評估的一列,記錄評估狀態及相關統計資料。

資料表路徑:此系統資料表位於 system.alert.alert_evaluation_history

表格 system.alert.alert_evaluation_history 使用下列架構:

欄位名稱 資料類型 Description 範例
account_id 字串 帳戶的標識碼。 23e22ba4-87b9-4cc2
-9770-d10b894b7118
workspace_id 字串 定義警示的工作區 ID。 1234567890123456
alert_id 字串 評估警報的識別碼。 加入 alert_idsystem.alert.alerts 2762099691916865
job_id 字串 執行警報的任務ID。 加入 job_idsystem.lakeflow.jobsNULL 當警報是依照自己的排程執行,而非作為工作的一部分時。 LEFT JOIN當你對 system.lakeflow.jobs. 906851285941474
task_key 字串 工作中任務的參考鍵。 加入 task_keysystem.lakeflow.job_tasksNULL 當警報是依照自己的排程執行,而非作為工作的一部分時。 LEFT JOIN當你對 system.lakeflow.job_tasks. evaluate_alert
alert_run_id 字串 警報評估的識別碼。 4104302562320643
evaluated_state 字串 警報的評估狀態。 可能的值是 OKTRIGGEREDERROR TRIGGERED
evaluated_source_result 結構 一個結構體,代表評估所產生的原始值。 {
double_value: 1.25
}
evaluated_threshold_result 結構 一個結構體,代表評估的閾值,或警示設定中設定的靜態值。 {
double_value: 1.25
}
error_code 字串 如果評估失敗且出現錯誤,則使用錯誤代碼。 INTERNAL_ERROR
error_message 字串 若評估失敗且出現錯誤,則顯示使用者可見的錯誤訊息。 Query execution failed
notified_subscriptions 陣列 這是成功通知的訂閱者陣列。 每位訂閱者皆以使用者電子郵件或通知目的地 ID 識別。 [
{
user_email: example@databricks.com,
destination_id: null
}
]
failed_subscriptions 陣列 一組通知未發送的訂閱者陣列。 每位訂閱者皆以使用者電子郵件或通知目的地 ID 識別。 [
{
user_email: example@databricks.com,
destination_id: null
}
]
start_time 時間戳記 評估開始的時間。 時區資訊會記錄在數值末尾,並代表 +00:00 UTC。 2023-01-01T01:01:01.123+00:00
end_time 時間戳記 評估結束的時間。 時區資訊會記錄在數值末尾,並代表 +00:00 UTC。 2023-01-01T01:01:01.123+00:00

範例查詢

以下範例查詢展示了分析警示設定與評估歷史的常見方法。 每個查詢都會使用 命名參數標記 來標示警示和工作區 ID,所以執行查詢時會提示你輸入這些值。

查詢最新的評估以獲取警示

此查詢會回傳特定警示的最新配置及其最新的評估結果。

SELECT
  c.alert_id,
  c.display_name,
  c.compute,
  c.schedule.quartz_cron_schedule AS schedule,
  c.evaluation_comparison_operator AS operator,
  c.evaluation_threshold.value.double_value AS threshold,
  c.change_time AS config_last_updated,
  e.evaluated_state,
  e.start_time AS evaluation_time,
  e.end_time,
  TIMESTAMPDIFF(SECOND, e.start_time, e.end_time) AS eval_duration_seconds
FROM (
  SELECT *
  FROM system.alert.alerts
  WHERE alert_id = :your_alert_id
    AND delete_time IS NULL
  ORDER BY change_time DESC
  LIMIT 1
) c
LEFT JOIN (
  SELECT *
  FROM system.alert.alert_evaluation_history
  WHERE alert_id = :your_alert_id
  ORDER BY start_time DESC
  LIMIT 1
) e ON TRUE;

找出過去七天內觸發最多的警示

此查詢計算過去七天內,每個警報在工作區觸發的次數。

SELECT
  alert_id,
  COUNT(*) AS trigger_count_7d
FROM system.alert.alert_evaluation_history
WHERE workspace_id = :your_workspace_id
  AND start_time >= CURRENT_DATE() - INTERVAL 7 DAY
  AND evaluated_state = 'TRIGGERED'
GROUP BY alert_id
ORDER BY trigger_count_7d DESC;

追蹤警示狀態隨時間的變化

此查詢彙整過去 30 天內,針對特定警示的每個評估狀態的每日計數。 用它來建立一個監控警報可靠性的儀表板。

SELECT
  DATE_TRUNC('day', start_time) AS eval_day,
  COUNT_IF(evaluated_state = 'OK') AS ok_count,
  COUNT_IF(evaluated_state = 'TRIGGERED') AS triggered_count,
  COUNT_IF(evaluated_state = 'ERROR') AS error_count
FROM system.alert.alert_evaluation_history
WHERE alert_id = :your_alert_id
  AND start_time >= CURRENT_DATE() - INTERVAL 30 DAY
GROUP BY 1
ORDER BY eval_day ASC;

在工作區中列出活躍的警示

此查詢會回傳每個未被刪除且未暫停於工作區的警示的最新設定。

WITH latest AS (
  SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY alert_id ORDER BY change_time DESC) AS rn
  FROM system.alert.alerts
  WHERE workspace_id = :your_workspace_id
    AND delete_time IS NULL
)
SELECT
  alert_id,
  display_name,
  compute,
  schedule.quartz_cron_schedule AS cron_schedule,
  schedule.pause_status
FROM latest
WHERE rn = 1
  AND schedule.pause_status != 'PAUSED';