用途:把 Sentry 接入现有日志、指标、APM 与仪表盘工具链,使每条错误日志与 Sentry 事件双向关联,指标能回溯到根因事件。
主要能力:
- 结构化日志关联。通过 winston 自定义 Transport、pino hooks 或 structlog 处理器,把 error/fatal 级别日志转发到 Sentry,并把返回的 sentry_event_id 与 sentry_url 写回日志行;配合请求 ID 中间件(x-request-id + randomUUID)串联同一请求的所有日志与事件。
- 指标关联。使用 Sentry 内置 metrics 的 increment、distribution、gauge、set,记录结账尝试/失败、接口响应时间、连接池占用、受影响用户数等业务与错误率指标。
- APM 跨链。通过 beforeSend 把 Datadog trace id 写入事件标签并与 trace URL 关联;注意 dd-trace 必须在 @sentry/node 之前初始化。提供 Sentry 性能监控与 Datadog/New Relic 的选型对照(前端后端统一视图、基础设施指标、高基数指标、预算受限场景等)。
- 仪表盘与告警。用 Sentry.setContext('monitoring', …) 在事件侧边栏附上 traceId、spanId、requestId 及 Grafana、Kibana、Datadog 链接;配置 Sentry 内部集成 webhook,将事件转换为 Grafana 注解;按致命错误、错误率突增、延迟回归分级路由到 PagerDuty、Slack 与工单。
使用前提:已安装 Sentry SDK v8+(@sentry/node 或 sentry-sdk),至少配置一种结构化日志器,环境变量中存在 SENTRY_DSN,可访问仪表盘平台,并已确定告警路由策略。
限制与注意:Sentry 自定义指标需 Business 及以上套餐,资料未提供具体价格与档位细节;Sentry 不采集 CPU、内存等基础设施指标;高基数自定义指标查询受限,需评估是否改用 Datadog/New Relic;日志重复事件可用 beforeSend 去重或关闭自动捕获;webhook 建议固定 API v0 并在接收端校验载荷。原文提供的多数为 TypeScript/Python 代码示例,此处不逐条抄录。适用场景:需要将错误、日志、性能与告警统一关联的多服务 Node.js 或 Python 应用。