用途
Sentry Ruby SDK 技能用于在 Ruby 项目中完整接入 Sentry,实现错误监控与可观测性。当用户要求为 Ruby 应用添加 Sentry、安装 sentry-ruby、在 Rails/Sinatra/Rack 中配置 Sentry,或从其他监控工具迁移到 Sentry 时,该技能会扫描项目并给出针对性的接入方案。
主要能力
该技能覆盖以下功能:
- 错误监控:捕获异常、HTTP 请求和后台任务错误,始终推荐启用。
- 追踪(Tracing):适用于 Rails、Sinatra、Rack 等 HTTP 框架,通过 traces_sample_rate 控制采样。
- 日志(Logging):通过 enable_logs: true 启用结构化日志捕获。
- 指标(Metrics):默认开启,检测到 Sidekiq 或已有指标库(StatsD、Prometheus)时推荐。
- 性能分析(Profiling):Beta 功能,需 stackprof 或 vernier gem。
- 定时任务(Crons):检测到 ActiveJob、Sidekiq-Cron、Clockwork、Whenever 等调度任务时推荐。
- OTLP 集成:检测到 OpenTelemetry 追踪时,通过 config.otlp.enabled = true 将 OTel span 路由到 Sentry,此时不应设置 traces_sample_rate。
- 迁移支持:检测到 AppSignal、Honeybadger、Bugsnag、Rollbar、Airbrake 时,加载迁移参考文件并删除竞品初始化器。
使用方式
技能按四个阶段执行:
阶段 1:检测。通过 grep 扫描 Gemfile 和源码,识别已有 Sentry gem、框架(Rails/Sinatra)、Web 服务器(Puma)、后台任务(Sidekiq/Resque/DelayedJob)、竞品监控工具、调度任务、OpenTelemetry 追踪与日志、已有指标模式以及前端 Sentry SDK。根据检测结果路由到对应方案。
阶段 2:推荐。基于检测结果给出具体建议,而非开放式提问。例如检测到 OTel 追踪但无 OTel 日志时,推荐 OTLP 集成 + 错误监控 + Sentry 日志。
阶段 3:引导。安装对应 gem 并配置初始化。Rails 使用 sentry-rails,初始化文件位于 config/initializers/sentry.rb;Rack/Sinatra 使用 sentry-ruby 并在 config.ru 顶部添加 Sentry::Rack::CaptureExceptions 中间件;Sidekiq 需额外添加 sentry-sidekiq。环境变量包括 SENTRY_DSN、SENTRY_ENVIRONMENT、SENTRY_RELEASE。
阶段 4:交叉链接。检测前端项目并建议对应的前端 SDK(React/Next.js 用 sentry-react-sdk,Svelte 用 sentry-svelte-sdk,Vue 用 @sentry/vue),并支持前后端追踪串联。
适用场景
- 为 Rails、Sinatra、Rack 或纯 Ruby 应用添加 Sentry 错误监控。
- 监控 Rails/Sinatra 中的异常、HTTP 请求和后台任务。
- 从 AppSignal、Honeybadger、Bugsnag、Rollbar、Airbrake 迁移到 Sentry。
- 在已有 OpenTelemetry 的项目中通过 OTLP 集成 Sentry。
- 需要追踪、日志、指标、性能分析或定时任务监控的 Ruby 项目。
限制
- SDK API 基于 sentry-ruby v6.4.0,实施前需对照 docs.sentry.io/platforms/ruby/ 验证。
- 性能分析(Profiling)为 Beta 功能,需要 stackprof 或 vernier gem。
- 使用 otlp.enabled = true 时不应设置 traces_sample_rate。
- 日志功能需要 sentry-ruby ≥ 5.27.0。
- Rails 异常捕获必须使用 sentry-rails,单独使用 sentry-ruby 不会挂钩 Rails 错误处理器。
- Puma/Unicorn fork 模式下需在 on_worker_boot 或 after_fork 中重新初始化,否则子进程中的后台工作线程会失效。
- Process.exit! 会跳过 at_exit 钩子,强制退出前需显式调用 Sentry.flush。
- 请求队列时间捕获(v6.4.0+)需要反向代理设置 X-Request-Start 头。
- 具体收费、价格和平台支持信息暂未提供。