当Databricks的SQL警报发生状态变化时,webhook通知目的地会收到描述警报及其评估过程的JSON有效载荷。 此有效负载格式适用于最新版本的 Databricks SQL 警报。 遗留警报 使用不同的有效载荷。
Important
警报配置决定有效载荷包含哪些额外字段。 没有取值的字段被省略。 配置你的 webhook 接收器忽略未知字段,处理缺失的可选字段。
有效负载示例
以下示例展示了变为 TRIGGERED 状态的警报的有效负载。 标识符、姓名和时间戳都是虚构的例子。
{
"event": "alert_state_change",
"url_base": "https://<workspace-url>/sql?o=1234567890123456",
"alert": {
"title": "Alert \"Daily revenue\" changed status to TRIGGERED",
"description": "Daily revenue exceeded the configured threshold.",
"alert": {
"id": "9876543210987654",
"name": "Daily revenue",
"owner": {
"id": 2468013579246801,
"name": "Alex Smith",
"email": "alex.smith@example.com"
},
"created_at": 1767225600000,
"parent": "folders/1357924680135792",
"query_text": "SELECT SUM(revenue) AS total_revenue FROM main.sales.daily",
"warehouse_id": "4b9b953939869799",
"custom_summary": "Alert \"{{ALERT_NAME}}\" changed status to {{ALERT_STATUS}}",
"custom_description": "Daily revenue exceeded the configured threshold.",
"evaluations": [
{
"id": "9a1f0fc0-7d18-4f42-8ec0-9c1f8e72d3a4",
"source": {
"name": "total_revenue",
"display": "total_revenue",
"aggregation": "AGGREGATION_UNSPECIFIED"
},
"comparison_operator": "GREATER_THAN",
"threshold": {
"value": {
"double_value": 100000.0
}
},
"empty_result_state": "OK",
"notification": {
"seconds_to_retrigger": 3600,
"notify_on_ok": true,
"subscriptions": [
{
"destination_id": "6d1f7e62-a9d4-4b32-b79d-2b1f9f5a6c80"
}
]
},
"state": "TRIGGERED",
"last_evaluated_at": 1767229200000,
"last_triggered_at": 1767229200000
}
],
"schedule": {
"quartz_cron_schedule": "0 0 * * * ?",
"timezone_id": "UTC",
"paused": false
},
"custom_template_format": "HTML"
}
}
}
负载字段
有效负载包含以下信封字段:
| 领域 | 类型 | Description |
|---|---|---|
event |
String | 事件类型。 对于警报状态变化,值为 alert_state_change。 |
url_base |
String | 工作区中Databricks SQL的基础URL。 |
alert |
Object | 通知和警报细节。 |
alert.title |
String | 渲染后的自定义通知主题。 当提醒未定义自定义主题时,该字段被省略。 |
alert.description |
String | 渲染的自定义通知主体。 当警报未定义自定义主体时,该字段被省略。 |
alert.alert |
Object | 通知发出时的警报快照。 |
嵌套alert.alert对象可以包含以下字段:
| 领域 | 类型 | Description |
|---|---|---|
id |
String | 警报资源ID。 |
name |
String | 警报名称。 |
owner |
Object | 警报所有者的ID、姓名和电子邮件地址。 当所有者信息不可得时,该字段会被省略。 |
created_at |
Integer | 警报创建时间,以毫秒计,自 Unix 纪元以来。 |
parent |
String | 包含警报的文件夹资源名称。 |
query_text |
String | 警报评估的SQL查询。 |
warehouse_id |
String | 运行查询的SQL仓库的ID。 |
custom_summary |
String | 自定义通知主题模板。 当未配置自定义主题行时,该字段会被省略。 |
custom_description |
String | 自定义通知主体模板。 当未配置自定义正文时,该字段会被省略。 |
custom_template_format |
String | 自定义模板的格式,如 HTML 或 MARKDOWN。 |
evaluations |
Array | 配置的评估条件及其状态。 该 state 值反映了导致通知的状态变化。 |
schedule |
Object | Quartz 的 cron 时间表、时区和暂停状态。 当警报没有时间表时,该字段会被省略。 |
根据警报配置,嵌套对象还可以包含 parameters、 genie_analysis_enabled、 genie_analysis_custom_prompt和 genie_analysis_references。
数组中的 evaluations 每个对象可以包含以下字段:
| 领域 | 类型 | Description |
|---|---|---|
id |
String | 评估条件编号。 |
source |
Object | 条件评估的查询结果列与聚合。 |
comparison_operator |
String | 比较算符,如 GREATER_THAN、 EQUAL,或 IS_NULL。 |
threshold |
Object | 与源列进行比较的值或查询结果列。 |
empty_result_state |
String | 查询未返回任何行时使用的状态。 当警报未定义空结果状态时,该字段被省略。 |
notification |
Object | 重触发间隔、通知on-OK 设置和通知目的地ID。 |
state |
String | 导致通知的评估状态为: TRIGGERED, OK, 或 ERROR。 |
last_evaluated_at |
Integer | 评估时间,以毫秒计,自 Unix 纪元以来。 |
last_triggered_at |
Integer | 最后一次触发的时间,以毫秒计,自 Unix 时期以来。 当警报未触发时,该字段会被省略。 |
确保 Webhook 负载安全
有效载荷可以包含敏感的工作区元数据,包括SQL查询、警报所有者身份以及自定义通知内容。 保护接收端点并限制对存储有效载荷的访问。 关于Webhook网络和认证选项,请参见 管理通知目的地。