在 Flashduty On-call
- 进入 Flashduty 控制台,选择 集成中心 → 变更事件
- 选择 NetBox,填写集成名称
- 如需把变更分派到指定协作空间,在集成的 路由 中按标签(例如
object_type、actor)配置规则 - 点击 保存,复制生成的 推送地址
在 NetBox 中配置
本文基于 NetBox 4.7 的默认 Webhook 请求体。
1
创建 Webhook
- 进入 Operations → Integrations → Webhooks,点击 Add
- Name:填写便于识别的名称,例如
Flashduty - URL:粘贴 Flashduty 集成的完整推送地址
- HTTP method 选择
POST,HTTP content type 保持application/json - Body template 留空,使用 NetBox 默认请求体;Additional headers 无需填写
- Secret 无需填写,Flashduty 通过推送地址中的
integration_key鉴权
2
创建事件规则
- 进入 Operations → Integrations → Event Rules,点击 Add
- Name:填写便于识别的名称,例如
Flashduty - Object types:选择需要同步的对象类型,例如
DCIM > site、DCIM > device、IPAM > prefix - Event types:勾选 Object created、Object updated、Object deleted
- 如只同步部分对象,在 Conditions 中添加 JSON 条件,例如
{"and": [{"attr": "status.value", "value": "active"}]} - Action type 选择 Webhook,Webhook 选择上一步创建的 Webhook,保存
rqworker 进程在运行。
一条变更是什么
批量操作(批量导入、批量编辑、批量删除)在一个请求里改动多个对象,每个对象各生成一条变更,它们的
request_id 标签相同,可据此在变更列表中找到同一次操作改动的全部对象。
状态映射
以下推送返回成功但不生成变更:
job_started、job_ended:后台任务(脚本、数据源同步等)的开始和结束,它们不是配置变更。脚本在运行中创建、修改、删除的对象仍会作为created、updated、deleted推送
变更内容
标签可用于路由和在变更列表中筛选:
常见问题
为什么没有收到变更?
为什么没有收到变更?
- 确认事件规则已启用,且 Object types 包含该对象类型、Event types 勾选了对应事件,没有被 Conditions 排除
- 确认 NetBox 的
rqworker进程在运行;在 NetBox 的 System → Background Tasks 中可以看到失败的 Webhook 任务,并可重新入队 - 事件规则的 Webhook 必须使用默认请求体;填写了自定义 Body template 会改变推送格式,导致推送失败或字段缺失
NetBox 重新推送会重复记录吗?
NetBox 重新推送会重复记录吗?
不会。NetBox 重新入队的失败任务发送的内容与原推送完全相同(包括时间戳),Flashduty 识别为重复推送,只记录一次。
推送返回 InvalidParameter 错误?
推送返回 InvalidParameter 错误?
NetBox 的失败任务中会看到响应内容:
unknown event "<值>":event不是created、updated、deleted或job_*,请确认没有自定义请求体data.id is missing、request.id is missing、object_type is missing:请求体缺少必要字段,请清空 Body templateinvalid timestamp "<值>":timestamp不是 ISO 8601 格式
为什么变更没有链接?
为什么变更没有链接?
NetBox 的 Webhook 推送中,对象地址只有相对路径(例如
/dcim/sites/1/),不包含 NetBox 的域名,Flashduty 无法拼出完整链接。可以通过标题中的对象类型和名称,或 object_id 标签在 NetBox 中定位对象。删除对象也是 Done 吗?
删除对象也是 Done 吗?
是。删除已经在 NetBox 中生效,因此记录为 Done,
event 标签为 deleted。