依赖健康
PostgreSQL 连接、连接池耗尽、Redis 连接、Redis 延迟和 Redis key 前缀是否混用。
生产环境的观测不是只看进程是否存活,而是要确认:
主服务健康检查:
curl -fsS http://localhost:8080/health/ready建议:
开启 metrics:
metrics: enabled: true host: "0.0.0.0" port: 9090 auth: mode: "bearer_token" bearer_token_file: "/run/secrets/metrics_token"抓取测试:
curl -fsS \ -H "Authorization: Bearer $METRICS_TOKEN" \ http://localhost:9090/metrics生产要求:
生产建议使用 JSON 日志:
logging: level: "info" format: "json"排障时可以临时调高:
logging: level: "debug" filter: "synctv=debug,tower_http=info"注意:
trace 级别可能输出大量日志,不适合长期开启。依赖健康
PostgreSQL 连接、连接池耗尽、Redis 连接、Redis 延迟和 Redis key 前缀是否混用。
认证安全
登录失败率、MFA 失败率、邮箱验证码发送失败、OAuth2 state 错误和 brute-force 锁定。
实时连接
WebSocket 连接数、每用户/房间连接限制、消息限流和断开重连峰值。
媒体路径
Provider 错误率、上游超时、proxy bypass、slice cache 命中率、Range 异常和直播拉流重试。
| 告警 | 可能原因 | 第一检查点 |
|---|---|---|
| readiness 持续失败 | DB/Redis 不可用、migration 问题、配置错误 | synctv db status、服务日志 |
| 登录失败率突增 | 密码爆破、OAuth2 回调错误、JWT secret 错误轮换 | 限流日志、OAuth2 配置、secret 变更 |
| 邮件发送失败 | SMTP 凭据错误、TLS 错误、发送频率限制 | synctv settings test-email、SMTP 日志 |
| WebSocket 大量断开 | Ingress 超时、Pod 滚动更新、连接限制过低 | Ingress timeout、shutdown drain、连接限制 |
| Provider 错误突增 | 上游不可用、header 不一致、凭据过期 | Provider 配置、代理 header、上游响应 |
| Redis 错误 | Redis 重启、网络抖动、Sentinel 配置错误 | Redis 日志、redis.deployment_mode、连接串 |
排查生产问题时,先收集可共享信息,不要直接贴 secret。
synctv config show --output yaml 的打码输出。/health/ready 和 /metrics 的可用性结果。synctv db status 输出。kubectl describe pod、kubectl get ingress,svc,pod 和 rollout 状态。kubectl -n synctv get pod -o widekubectl -n synctv describe pod <pod>kubectl -n synctv logs <pod> --tail=200kubectl -n synctv get svc,ingresskubectl -n synctv describe ingress synctvkubectl -n synctv describe ingress synctv-grpckubectl -n synctv rollout status deploy/synctvkubectl -n synctv rollout history deploy/synctv