监控、日志与告警
视频故障跨越设备、信令、媒体和存储。监控必须覆盖整条链路,并能用关联标识把一次操作串起来。
flowchart LR
A[用户请求] --> B[设备与协议]
B --> C[MediaServer]
C --> D[播放或录像]
D --> E[最终用户结果]
T[TraceId / CommandId / StreamId] -.贯穿.-> A
T -.贯穿.-> E
监控层次
| 层次 | 关键观察 |
|---|---|
| 宿主 | CPU、内存、swap、文件描述符、网卡、时钟、磁盘 |
| AKStream.Next | 请求错误、GC、线程池、配置版本、任务状态 |
| NodeAgent | 心跳、Provider、版本、最近操作、离线补交 |
| MediaServer | 进程、版本、节点 ID、流、播放器、录像、WebRTC |
| 数据库 | 连接、慢查询、锁、空间、备份、Schema |
| 协议 | 设备在线、注册、命令成功/超时、订阅、信令错误 |
| 录像 | 活跃会话、文件产出、扫描/裁剪积压、失败 |
| RTC | 房间、成员、媒体会话、ICE、释放与事件积压 |
日志来源
统一收集应用结构化日志、NodeAgent 操作日志、MediaServer stdout/stderr 与模块日志、协议消息摘要、配置/生命周期/安全审计和通道运行时间线。
日志时间必须同步,并包含环境、节点和组件。不得记录数据库密码、API Token、MediaServer secret、设备明文凭据、完整 Cookie 或授权私钥。
关联标识
按场景记录:
- HTTP:TraceId、用户/Token 摘要、路由、状态码。
- 异步命令:commandId/jobId、目标资源、最终状态。
- GB28181:设备 ID、通道 ID、Call-ID、SN、RTP 端口。
- ONVIF:设备 ID、Profile/VideoSource token、操作名。
- 媒体:mediaServerId、vhost、app、stream。
- 录像:sessionId、fileId、物理节点、时间范围。
- RTC:roomId、participantId、mediaSessionId。
支持人员拿到任一稳定标识后,应能向前追到请求、向后追到业务结果。
推荐告警
- 主服务 health 连续失败或 readiness 阻断。
- NodeAgent 或 MediaServer 超过心跳窗口。
- 配置版本漂移或长期待重启。
- 协议超时率、认证失败率或设备离线率突增。
- 活跃录像超过分片周期没有新文件。
- 字节、inode 或写入探针低于阈值。
- WebHook、录像扫描、裁剪或异步任务积压增长。
- RTC 会话释放失败持续增长。
- TLS 证书接近到期或续期失败。
告警应说明“受影响对象、当前值、阈值、持续时间、最近变更和第一篇处理文档”。
保留与采样
安全审计、授权和删除操作保留时间通常长于普通调试日志。高频成功事件可以采样,失败、超时、权限拒绝和状态迁移不能被无条件采样掉。
告警闭环
告警触发后记录确认、处置人、影响、关联工单、恢复时间和根因。批量告警处置中的确认、忽略和恢复必须分别保留结果;不要把 ONDUTY/OFFDUTY 等设备布防状态当作新的报警事件。