运维、OTA 与 SLA
运维要回答三件事:出问题多久有人管、升级怎么发不翻车、承诺的数字怎么统计。本页把告警分级、维护窗口、灰度发布、回滚与可用性口径写在同一处,便于写进运维手册与合同附件。
四级告警,每级有明确触发条件
分级的目的是让值班知道先看哪一条。触发条件写成可判定的数字,避免「严重」「一般」这类主观分级。
| 级别 | 触发条件 | 通知方式 | 响应 / 恢复 | 处置 |
|---|---|---|---|---|
| P1 | 接入不可用,或单项目离线设备占比 >10% | 电话 + 值班群 | 15 分钟 / 4 小时 | 立即介入,先切备用链路再定位 |
| P2 | 单服务降级,或延迟 P99 超阈值 2 倍持续 5 分钟 | 值班群 + 邮件 | 1 小时 / 24 小时 | 当班处理,必要时限流保护 |
| P3 | 单设备离线、磁盘使用率 >80%、证书 30 天内到期 | 工单 + 邮件 | 1 个工作日 / 下个维护窗口 | 按计划处理,纳入巡检记录 |
| P4 | 配置变更、版本发布、报表生成完成 | 控制台通知 | 无需响应 | 例行知会 |
维护窗口固定,变更提前通知
例行维护排在北京时间每月第二个周四 02:00—04:00;平台侧滚动升级不掉线,设备侧升级按批次在窗口内完成。
窗口与通知
提前 5 个工作日通知,单次影响控制在 30 分钟以内;紧急修复可例外,但需在事后 1 个工作日内补发说明。
- 平台滚动升级:连接不中断,重连由服务端主动迁移
- 设备侧升级:按批次下发,单批 500 台
变更三件套
任何影响在网设备的变更都要有:变更单、回滚方案、验证清单。缺一项不进窗口。
- 变更单写明影响范围与预计时长
- 回滚方案写明触发条件与最大耗时
- 验证清单写明由谁在多久内确认
封网期
客户生产高峰期可申请封网,封网期内只做安全修复与故障恢复,不做功能发布。
- 封网申请提前 10 个工作日提交
- 封网期内的紧急修复需双方值班确认
先出包、再灰度、最后全量
升级包必须有签名与版本台账;灰度按 1% → 10% → 100% 三档推进,每档观察 24 小时。错误率超过 2% 自动熔断回滚。
# 1) 生成差分包(含签名)
huayun ota build --board hy-edge-x1 \
--from v2.3.0 --to v2.4.0 --diff --sign
# BSP diff 48 MB → 5.2 MB (-89%) signed
# Model diff 3.2 MB → 418 KB (-87%) signed
# 2) 上传并做灰度策略
huayun ota upload --file ota_v2.4.0_diff.bin
huayun ota rollout --version v2.4.0 \
--strategy canary:1%→10%→100% \
--auto-rollback error>2% --timeout 48h
# 3) 观察进度与失败码分布
huayun ota status v2.4.0 --by error-code
# 升级状态与最近一次结果
hy-ota-agent status
# slot: b (staged) target v2.4.0 progress 100%
# verify: sha256 ok signature ok boot_pending
# 失败详情与断点
hy-ota-agent logs --tail 50
hy-ota-agent resume # 断点续传
# 手动回滚(非活跃槽仍在)
hy-ota-agent rollback --to previous --wait
| 阶段 | 批次 | 观察期 | 熔断条件 | 动作 |
|---|---|---|---|---|
| 灰度一档 | 1%,按地域分散选取 | 24 h | 失败率 >2% 或出现 P1 | 立即停止并回滚已升级设备 |
| 灰度二档 | 10%,含各类板型与网络制式 | 24 h | 失败率 >1% | 停止推进,定位后重发 |
| 全量 | 剩余设备,单批 500、并发 50 | 48 h 内完成 | 失败率 >0.5% | 暂停剩余批次,人工确认 |
| 收尾 | 失败设备逐一重试 | 发布后 72 h | — | 到达率纳入发布单归档 |
板端验签通过才写入
传输加密解决「路上不被看」,签名解决「装上的是不是我们出的包」。两件事都要做,缺一不可。
签名算法
固件与模型包使用 ECDSA P-256 签名,附 X.509 证书链;私钥在签名服务内,不落构建机。
- 包哈希与签名一并进入发布单
- 签名服务调用留审计日志
板端验签
写入非活跃槽之前完成验签与哈希校验,任一项失败立刻终止并保留旧槽。
hy-ota-agent verify --file *.bin- 失败码
OTA_E_SIGN上报平台
防回滚
设备保存防回滚计数器,目标版本低于计数器时拒绝升级,避免用降级绕过安全修复。
- 计数器只增不减,随固件安全版本递增
- 需要合法降级时走临时许可流程并留痕
配置可恢复,数据可追溯
平台侧配置每日增量、每周全量,保留 30 天;设备侧点位表与模型台账随项目交付物归档,换板卡时按台账恢复。
| 对象 | 备份策略 | 保留 | 恢复目标 |
|---|---|---|---|
| 平台配置(产品、物模型、规则) | 每日增量 + 每周全量 | 30 天 | RTO ≤30 min,RPO ≤5 min |
| 时序数据 | 三副本 + 冷归档 | 热 90 天 / 温 2 年 | 持久性 ≥99.9999% |
| 设备侧配置(点位表、采集配置) | 随交付物归档 + 平台留副本 | 随项目 | 换板 30 min 内恢复采集 |
| 模型与固件台账 | 随发布归档 | 两个大版本 | 可按台账回退到任一记录版本 |
承诺按三态标注,不写笼统的「高可用」
下表口径为自然月、按 1 分钟粒度统计,排除提前通知的维护窗口与客户侧网络与供电故障。状态分「已上线 / 进行中 / 不适用」三档。
| 指标 | 承诺 | 统计口径 | 状态 |
|---|---|---|---|
| 接入与消息服务月度可用性 | ≥99.9% | 自然月,1 分钟粒度,排除维护窗口 | 已上线 |
| 管理控制台可用性 | ≥99.5% | 同上;页面首屏可用即计为可用 | 已上线 |
| OTA 到达率 | ≥99.5% | 发布后 72 h 内成功升级设备占比,实测 99.76% | 已上线 |
| P1 故障响应 / 恢复 | 15 min / 4 h | 7×24,从平台告警或客户工单受理时刻起算 | 已上线 |
| 现场备件先发 | 72 h | 工作日从确认故障件型号起算 | 已上线 |
| 异地多活可用性 | ≥99.95% | 按项目合同约定机房与切换演练要求 | 进行中 |
| 海外区域可用性承诺 | — | 业务不涉及海外节点 | 不适用 |
失败码看板用来定位,不是用来解释
发布看板按失败码分组统计。单一失败码占比超过 20% 就暂停推进,先定位再继续。
| 失败码 | 含义 | 处置 |
|---|---|---|
OTA_E_SIGN | 验签失败 | 核对签名链与设备证书;重新出包 |
OTA_E_DOWNLOAD | 下载中断 | 断点续传自动重试 5 次;仍失败则查现场网络 |
OTA_E_SPACE | 存储空间不足 | 清理非活跃槽,确保预留 ≥2 倍包体 |
OTA_E_VERIFY | 哈希不符 | 重新下发;连续出现则检查存储介质 |
OTA_E_ROLLBACK | 防回滚拒绝 | 确认目标版本号高于设备计数器 |
OTA_E_BOOT | 新槽启动失败 | 已自动切回旧槽;收集串口启动日志 |
huayun ota status v2.4.0 --by error-code
# total 12,480 success 12,451 (99.76%)
# OTA_E_DOWNLOAD 17 (0.14%)
# OTA_E_SPACE 8 (0.06%)
# OTA_E_BOOT 4 (0.03%) → 已自动回滚
本文档由平台研发组维护,最近复核 2026-09-12。运维口径与现场执行不一致时,请附事件时间线、告警截图与 hy-ota-agent logs 输出发至 contact@huayuniot.com.cn。
- 2026-09-12:SLA 表改为三态标注;补充 OTA 失败码分组统计示例。
- 2026-08-27:新增封网期与变更三件套说明。