在 Flashduty On-call
- 进入 Flashduty 控制台,选择 集成中心 → 变更事件
- 选择 Rundeck,填写集成名称
- 如需把变更分派到指定协作空间,在集成的 路由 中按标签(例如
project、job)配置规则 - 点击 保存,复制生成的 推送地址
在 Rundeck 中配置
1
打开作业的通知设置
打开要同步的作业,点击 Edit,切换到 Notifications 页签。
2
添加 Webhook 通知
分别为 On Start、On Success、On Failure 和 On Retryable Failure 添加通知,类型选择 Send Webhook:
- URL(s):填写 Flashduty 集成的完整推送地址
- Payload Format:选择
JSON。Rundeck 的默认格式是 XML,Flashduty 不接受 - Method:选择
POST
notification 段中,由 rd jobs load 或项目导入生效。3
运行一次作业
保存后运行一次作业,在 Flashduty 的变更列表中即可看到对应的变更。Webhook 通知没有测试按钮。Rundeck 向 Flashduty 推送失败时,只在 Rundeck 服务日志中记录
Notification failed,Flashduty 拒绝的推送不会显示在作业页面。一条变更是什么
每一次作业执行是一条变更,变更标识(change_key)为 Rundeck 的执行 ID(execution id),例如
4711。
- 同一次执行的开始、结束通知更新同一条变更
- 同一作业的两次执行是两条变更
- 作业失败后自动重试,每次重试是一次新的执行,因此是一条新的变更
- 执行 ID 在一个 Rundeck 服务内唯一。多个 Rundeck 服务请分别创建集成,否则不同服务上相同的执行 ID 会被合并为一条变更
状态映射
Done、Failed 和 Canceled 是结束状态,Flashduty 会记录变更结束时间。
On Average Duration Exceeded 报告的是仍在运行的执行,不是新的阶段,Flashduty 接收但不记录。
变更内容
标签可用于路由和在变更列表中筛选:
作业选项(Option)的值可能包含敏感信息,不会被记录。
常见问题
为什么没有收到变更?
为什么没有收到变更?
- 确认 Payload Format 选择的是
JSON - 确认 On Start、On Success、On Failure、On Retryable Failure 都添加了通知
- 只有作业(Job)的执行才会触发通知;从 Commands 页面直接运行的临时命令(ad hoc)不发送
- 在 Rundeck 服务日志中搜索
Notification failed,查看推送失败的原因
变更为什么一直是 Processing?
变更为什么一直是 Processing?
结束通知没有送达。常见原因是作业配置了重试却没有添加 On Retryable Failure,或 Rundeck 到 Flashduty 的网络不通。Rundeck 只对每次通知尝试一次,失败后不会重发。
Flashduty 会拒绝哪些推送?
Flashduty 会拒绝哪些推送?
Flashduty 在以下情况拒绝推送:
must use format JSON:通知的 Payload Format 选择了XMLexecution is missing或execution.id is missing:推送内容缺少执行信息,请确认推送来自 Rundeck 的 Webhook 通知unsupported status:收到了 Flashduty 尚未支持的执行状态,例如作业返回了自定义状态(other),请联系我们