在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 Duplicati,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Duplicati,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 Duplicati 中配置
Duplicati 2.0.9.106 及以上版本支持
--send-http-json-urls 选项,本集成基于 2.4.0.0 验证。
1
为备份任务添加高级选项
- 打开 Duplicati 的网页界面,编辑要监控的备份任务,进入 选项 步骤(新建任务时为第 5 步)
- 展开 高级选项,点击 添加高级选项,选择
send-http-json-urls - 将 Flashduty 集成的完整推送地址(含
integration_key)填入该选项
--send-http-json-urls="<推送地址>" 即可。2
保持默认的发送级别
--send-http-level 的默认值是 All,即每次备份都发送报告,包括成功的备份。成功报告就是恢复信号,因此请不要把它改成 Warning、Error 或 Fatal,否则告警无法自动恢复。3
验证生命周期
- 手动运行一次备份,确认请求被接受(Duplicati 日志中没有 HTTP 错误)。此时没有已打开的告警可供恢复,Flashduty 不会新建告警,这是正常现象
- 临时让备份失败,例如把某个备份源文件夹改名,再运行一次,确认 Flashduty 出现一条 Critical 告警
- 还原改动并再次运行备份,确认原告警恢复
Alert Key
Flashduty 用 Duplicati 报告里的
Extra.machine-id 和 Extra.backup-id 共同生成 Alert Key。Duplicati 官方文档把 %machine-id% 定义为分配给这台机器的唯一随机标识,把 %backup-id% 定义为分配给该备份任务的标识;我们在真实的 Duplicati 2.4.0.0 上验证过,同一个备份任务先失败、后成功时,两个字段保持不变。
backup-id在同一台机器上是DB-1、DB-2这样的序号,不同机器上会重复,所以必须和machine-id组合使用- 通过命令行直接运行(不经过 Duplicati 服务)时,
machine-id为空,backup-id是目标地址的哈希,此时只由backup-id区分任务 - 备份名称、结果、时间和日志内容的变化都不会改变 Alert Key
- 缺少
backup-id的请求会被拒绝,因为无法可靠关联后续恢复
backup-id,旧任务上未恢复的告警需要手动关闭。
状态和告警等级
空值或其他值(包括
Unknown)会被拒绝。Duplicati 只在备份运行时发送报告:如果任务被停用或不再运行,已有告警不会恢复,需要手动关闭。
排查问题
- Flashduty 没有收到事件:确认选项名是
send-http-json-urls,Push URL 完整且包含integration_key - Flashduty 返回参数错误:确认没有误用
--send-http-url或表单格式,报告必须是 JSON,且包含Extra.backup-id - 告警没有恢复:确认没有设置
--send-http-level,或者其值包含Success - 备份只有警告也触发了告警:
Warning结果同样会触发 Warning 告警,例如部分源文件夹不存在;修复原因后下一次备份成功即恢复