警报系统表参考

Important

此系统表为公共预览版

本页包含关于警报系统表的信息,包括每个表的结构概要。 使用这些表直接在SQL中查询您的工作区 警报 及其评估历史,以便审计警报定义、分析评估趋势,并大规模监控警报工作负载。

system.alert 模式包含两个表:

Requirements

默认情况下,只有同时拥有账户管理员和元存储管理员角色的用户才能访问警报系统表。 为了与用户或组共享表的数据,Databricks 建议为每个用户或组创建一个动态视图。 请参阅创建动态视图

警报配置表模式

system.alert.alerts 表格是一块缓慢变化的维度表。 每一行记录警报在某一时刻的配置,因此当一个警报配置变更时,会有多个行。

表路径:此系统表位于 system.alert.alerts.

system.alert.alerts 表使用以下架构:

列名称 数据类型 Description 示例
account_id 字符串 帐户 ID。 23e22ba4-87b9-4cc2
-9770-d10b894b7118
workspace_id 字符串 定义警报的工作空间ID。 1234567890123456
alert_id 字符串 警报的 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 字符串 用于运行警报的用户或服务主体的凭证的ID。 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 字符串 帐户 ID。 23e22ba4-87b9-4cc2
-9770-d10b894b7118
workspace_id 字符串 定义警报的工作空间ID。 1234567890123456
alert_id 字符串 评估警报的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 字符串 警报评估运行的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';