在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 Dolphinscheduler,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Dolphinscheduler,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 DolphinScheduler 中配置
1
创建 HTTP 告警实例
- 使用有权限的账号登录 DolphinScheduler,进入 安全中心 → 告警实例管理,点击 创建告警实例
- 选择插件 选
Http,填写 告警实例名称 - 按下表填写插件参数:
- 保存。DolphinScheduler 服务端需要能访问公网上的 Flashduty。
${msg} 替换为告警内容。不写 ${msg},Flashduty 收不到任何告警内容。请求体中的 content 值必须是 "${msg}",其余键会被忽略。替换后的 content 是一个 JSON 字符串,里面是告警对象数组,Flashduty 会再解析一次。2
创建告警组
- 进入 安全中心 → 告警组管理,点击 创建告警组
- 填写 告警组名称,在 告警组实例 中选中上一步的告警实例,保存
3
在工作流上选择告警组和通知策略
启动工作流(或为工作流设置定时调度)时:
- 告警组 选中上一步的告警组
- 通知策略 选 成功或失败都发(
ALL)。选 失败发 只能收到失败告警,Flashduty 中的告警不会恢复
4
验证
在 告警实例管理 中点击该告警实例的编辑,在弹出的对话框中点击 测试发送,确认 Flashduty 出现一条 Info 告警,标题为
DolphinScheduler test notification。再让一个工作流中的任务失败(例如 Shell 任务执行 exit 1),确认出现标题为 DolphinScheduler workflow failed: <工作流实例名称> 的 Critical 告警。告警恢复和自动关闭
DolphinScheduler 按工作流实例结束时的状态发送通知:
在 DolphinScheduler 中对失败的实例执行 重跑失败任务(英文界面为 Recovery Failed)(
START_FAILURE_TASK_PROCESS)时,实例 ID 不变,runTimes 加 1。重跑仍然失败,会更新同一条告警;重跑成功且通知策略为 成功或失败都发,告警恢复。
工作流或任务超时的告警只发送一次,不会恢复。如果工作流失败后没有人重跑,也不会有恢复通知。请在接收该集成的协作空间中开启 超时自动关闭,建议 12 小时,并按团队处理失败任务的时效调整。
子工作流的状态不会单独通知。
告警类型
一次请求的
content 数组中可以有多个告警对象,每个对象对应一条 Flashduty 告警。
- 工作流实例失败或成功:标题为
DolphinScheduler workflow failed: <工作流实例名称>或DolphinScheduler workflow succeeded: <工作流实例名称> - 工作流超时:标题为
DolphinScheduler workflow timeout: <工作流实例名称>,Warning 等级 - 任务超时:标题为
DolphinScheduler task timeout: <任务名称>,Warning 等级 - 测试发送:告警实例的测试发送内容是固定的,Flashduty 会识别它并创建一条独立的 Info 告警,每次发送都是新告警,不会合并或关闭真实告警。需要手动关闭这条告警
Alert Key
工作流实例名称、状态、运行次数、时间的变化不会改变 Alert Key。同一个实例的失败和后续成功使用同一个 Alert Key,所以成功会恢复失败。缺少
projectCode 或 workflowInstanceId 的告警对象会使整个请求被拒绝。
状态和告警等级
标签
排查问题
- Flashduty 没有收到事件:确认工作流启动时选了告警组且通知策略不是 都不发;确认告警组包含该告警实例;确认推送地址完整且包含
integration_key。在告警实例的创建或编辑对话框中点击 测试发送 可以验证网络 - Flashduty 返回参数错误:多半是 请求体 没有写成
{"content":"${msg}"},或收到了不带工作流信息的告警(例如服务下线) - 告警一直不关闭:失败后没有成功的重跑,或通知策略不是 成功或失败都发。请开启协作空间的超时自动关闭
- 看不到成功通知:通知策略选了 失败发