在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 腾讯云直播,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 腾讯云直播,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在腾讯云直播中配置
回调通过「回调模板」配置,模板需要绑定到推流域名后才会生效。
1
创建回调模板
- 登录 云直播控制台,选择 功能配置 > 直播回调
- 点击 创建模板,填写 模板名称
- 回调密钥 可以留空,也可以沿用已有设置。Flashduty 通过推送地址中的
integration_key识别集成,不校验回调中的sign字段 - 在 回调类型 中,在 推流回调 和 断流回调 两项填写 Flashduty 的推送地址。两项都要填写:只填断流回调时,告警不会在推流恢复后自动关闭
- 点击 保存
如果推流域名已经绑定了回调模板(例如用于录制回调),可以直接在该模板的推流回调和断流回调中填写 Flashduty 推送地址。这两项已填写业务系统的地址时,需要由业务系统把回调转发给 Flashduty。
2
把模板绑定到推流域名
- 在模板创建成功的提示中点击 去绑定域名,或在模板列表中点击 绑定域名
- 选择上一步的回调模板,勾选需要告警的推流域名
- 点击 确定
3
验证生命周期
云直播没有「发送测试回调」按钮。用 OBS 等推流工具向该推流域名推一路测试流:
- 开始推流:Flashduty 收到推流回调,此时没有告警需要关闭,不会产生告警
- 在推流过程中断开推流端的网络:Flashduty 收到断流回调并触发告警
- 恢复网络后重新推流:原告警自动关闭
- 在推流工具中点击停止推流:这是正常停播,不会产生告警
Alert Key
Flashduty 用账号 APPID
appid、推流域名 app、推流路径 appname 和流名称 stream_id 计算 Alert Key。同一路流的推流回调和断流回调携带相同的这四个字段,因此落在同一条告警上。
错误码、错误描述、推流节点、推流端 IP、推流时长和 sequence 的变化都不会改变 Alert Key。sequence 标识一次推流活动,重新推流时会变化,因此不用于计算 Alert Key。
推流回调或断流回调缺少 appid、app、appname 或 stream_id,或回调没有 event_type 时,Flashduty 会拒绝该请求并返回错误,云直播会按回调重试规则重试。
告警生命周期
云直播本身不区分「告警」和「恢复」,只通知推流开始和推流中断。上表是 Flashduty 对这两类通知的约定:异常断流视为故障,同一路流重新推流视为恢复。
告警等级
回调中没有等级字段。异常断流触发的告警一律为 Critical。
errcode 表示断流原因,会写入标签和描述,含义请参阅云直播文档中的错误码表。
告警内容
- 标题:异常断流时为
Live stream interrupted: <推流域名>/<推流路径>/<流名称> - 描述:错误描述
errmsg,后附错误码、推流节点 IP、推流端 IP 和推流时长(毫秒) - 标签:
resource(<推流域名>/<推流路径>/<流名称>)、appid、app、appname、stream_id、event_type、errcode、errmsg、node、user_ip、sequence、push_duration
stream_param(推流 URL 参数,可能包含推流鉴权的 txSecret)、sign 和 t 不会写入标签。
排查问题
- Flashduty 没有收到回调:确认回调模板已绑定到实际推流的域名,且绑定后已等待 5 到 10 分钟;确认模板中的推流回调和断流回调填写的是完整推送地址,包含
integration_key - 主播停播后产生了告警:只有推流端主动停止推流时
errcode才为1。推流端被强制结束(例如进程退出或网络中断)时,断流回调的errcode通常不为1,Flashduty 按异常断流触发告警。可以在告警标签errcode和errmsg中查看云直播给出的断流原因 - 告警没有自动关闭:确认模板中填写了推流回调;确认重新推流时推流域名、推流路径和流名称都与断流前一致
- 云直播重复发送同一条回调:Flashduty 没有返回 HTTP 200 时,云直播每隔 1 分钟重试,最多 12 次。检查推送地址是否正确,以及集成是否已被删除