在作业上添加通知

可以为以下事件设置在作业运行和单个作业任务时发送的通知:

  • 开始
  • 成功完成
  • 失败
  • 持续时间超出配置的阈值

可以将通知发送到一个或多个电子邮件地址或第三方目标,例如 Slack、Microsoft Teams、PagerDuty 或任何基于 Webhook 的服务。 本文介绍设置作业级通知的不同方式。

添加第三方系统目的地

可以设置要传递到第三方系统的通知。 第三方系统目标与常用的通知工具(包括 Slack、PagerDuty、Microsoft Teams 和 HTTP Webhook)集成。 管理员必须配置系统目标。

若要配置系统目标,请转到“管理员设置”页,单击“编辑系统通知”,然后单击“创建新目标”。 对于每个作业或任务,最多可以为每种通知事件类型配置 3 个系统目标。 请参阅管理员设置页

重要

Slack 和 Microsoft Teams 消息的内容可能会在将来的版本中更改。 不应实现依赖于这些消息的特定内容或格式的客户端或处理。 如果需要通知的特定架构或格式,Databricks 建议配置用户定义的 Webhook。

配置作业通知

在开始之前,请注意以下各项:

  • 重试失败的任务时,不会发送作业级通知。 要在每次失败的任务后接收失败通知,请改用任务通知。 要为任务运行添加通知,请在添加或编辑作业任务时,在任务面板中单击“通知”旁边的“添加”。
  • 对于每个作业或任务,最多可以为每种通知事件类型配置 3 个系统目标。
  • 成功但有失败状态下完成的作业被视为处于成功状态。 若要在此状态下完成作业时收到通知,必须在配置通知时选择“成功”。
  • 若要在作业超出持续时间限制时收到通知,必须设置该限制。

若要在作业运行开始、完成或失败时添加一个或多个通知,请执行以下操作:

  1. 在作业的“作业详细信息”面板中,向下滚动到“作业通知”部分,然后单击“编辑通知”
  2. 在左下角,单击“添加通知”
  3. 在“目标”中,选择“电子邮件地址”或“系统目标”。
  4. 选中要通知的每种事件类型的复选框:“启动”、“成功”、“失败”、“持续时间警告”或“流式传输积压工作”
  5. 若要配置另一个目标,请再次单击“添加通知”,并按照前面的步骤操作。
  6. 配置所有通知后,单击“保存”

为慢速作业配置通知

如果为作业配置了预期的持续时间,则可以在作业或任务超出配置的阈值时添加电子邮件或系统通知。 若要接收针对超出持续时间阈值的作业或任务的通知,请在添加或编辑通知时选中“持续时间警告”复选框。 若要接收超出流式处理积压工作指标的作业或任务的通知,请在添加或编辑通知时选择“流式处理积压工作”

以下内容适用于流式处理积压工作指标:

  • 当 10 分钟内的平均积压工作超出定义的阈值时,将发送通知。
  • 为了防止消息过多,Azure Databricks 会等待 30 分钟,然后再确定是否发送另一条消息。 虽然积压工作仍然很高,但仍会以 30 分钟的间隔接收更新。

过滤掉已跳过或取消的运行的通知

可以通过筛选掉跳过或取消运行时发送的通知来减少发送的通知数。 若要筛选通知,请在添加或修改电子邮件通知或系统通知时,选择为已跳过运行的通知静音”或“为已取消运行的通知静音”。

默认情况下,在完全失败之前,将重试三次任务。 配置任务通知时,可以选择“忽略最后一次重试之前的通知”,以筛选出所有通知,直到最后一次重试。

注意

为作业选择“忽略已跳过运行的通知”或“忽略已取消运行的通知”时,不会筛选掉为作业任务配置的通知。 若要筛选已跳过或取消的运行的所有通知,还必须过滤掉所有已配置的任务级通知。

HTTP Webhook 有效负载

可以将 HTTP Webhook 配置为在下表中列出的事件上发送。

Event_type 代码 何时发送?
jobs.on_start 在运行启动时发送。
jobs.on_success 在运行停止并在成功或成功但有失败状态下完成时发送。
jobs.on_failure 在运行停止且状态为失败时发送。
jobs.on_duration_warning_threshold_exceeded 在运行的运行时间已超过配置的预期持续时间时发送。

下面是 Azure Databricks 发送到配置的端点的示例有效负载。 这些 Webhook 可以应用于作业或任务。

作业运行启动事件的通知:

{
  "event_type": "jobs.on_start",
  "workspace_id": "your_workspace_id",
  "run": {
    "run_id": "run_id"
  },
  "job": {
    "job_id": "job_id",
    "name": "job_name"
  }
}

任务运行启动事件的通知:

{
  "event_type": "jobs.on_start",
  "workspace_id": "your_workspace_id",
  "task": {
    "task_key": "task_name"
  },
  "run": {
    "run_id": "run_id_of_task"
    "parent_run_id": "run_id_of_parent_job_run"
  },
  "job": {
    "job_id": "job_id",
    "name": "job_name"
  }
}

作业运行失败的通知:

{
  "event_type": "jobs.on_failure",
  "workspace_id": "your_workspace_id",
  "run": {
    "run_id": "run_id"
  },
  "job": {
    "job_id": "job_id",
    "name": "job_name"
  }
}

任务运行成功的通知:

{
  "event_type": "jobs.on_success",
  "workspace_id": "your_workspace_id",
  "task": {
    "task_key": "task_name"
  },
  "run": {
    "run_id": "run_id_of_task"
    "parent_run_id": "run_id_of_parent_job_run"
  },
  "job": {
    "job_id": "job_id",
    "name": "job_name"
  }
}