用途:让服务在生产出错时主动通知人,而不是静默失败。核心思路是统一上报入口,再分发到日志、Sentry 与 Slack,并做去重与开关控制。
主要能力:提供单一上报模块,含 report(error, context)(日志+Sentry+Slack,处理未捕获或已捕获异常)与 notify(message, context)(仅 Slack,用于已返回 200 但未完整处理等需人工知晓的事件)。要求内置去重(约 5 分钟窗口,按类型+消息+调用点生成稳定键)、上报器自身绝不抛异常、每次携带环境/服务/请求或 trace id 与简短摘要、仅在服务端运行(Slack webhook URL 属凭证,不得下发到浏览器)。接入点包括全局异常处理器、后台 worker 的 try/except 与关闭时 flush、返回 200 的 webhook 分支、前端错误边界。
使用方式:先探测技术栈与部署路径,再放置统一入口,然后管理密钥:Slack 传入 webhook URL 按密钥存于密钥管理器、仅服务端、不记录不提交;Sentry DSN 可作普通环境变量。建议每个环境一个密钥,由应用按自身环境选择。随后用配置开关控制投递(默认 false),先发代码后按环境开启;上线顺序为:写密钥 → 设开关 → 部署(重新注入配置)。
限制与陷阱:密钥若被 JSON 包裹存储而应用按原始值注入,会导致静默失败;空值密钥在部分容器平台会令启动失败;克隆式部署不会自动带出新密钥,需先注册含新密钥的新版本、再写入值、再强制部署一次;YAML 开关缩进错误会静默失效;必须通过真实入口触发一次真实错误验证告警落到频道,并确认去重、worker 关闭 flush 与恢复通知生效。避免在代码中散落临时 Slack 调用,或部署成功即认为完成。