Supabase Observability 用于对 Supabase 项目进行端到端的监控与可观测性配置。其目标是通过 Supabase 提供的 Dashboard 报表、CLI 诊断命令、数据库扩展、日志外发、Edge Functions 与告警机制,帮助开发者获取 API、数据库、认证等层面的运行指标与诊断信息。
用途 本技能面向需要监控 Supabase 项目健康状态、排查数据库性能问题、外发日志以及设置配额告警的场景。它整合了从高层指标到深层 Postgres 诊断的工作流,并给出相应命令与代码骨架。
主要能力
- Dashboard 报表:涵盖 API Requests、Database、Auth Usage、Storage、Realtime 等高层指标。
- CLI 诊断:使用 supabase inspect db 子命令获取 Postgres 诊断,例如 cache-hit(建议缓存命中率 > 99%,低于 95% 提示升级计算资源)与 seq-scans(识别需要索引的表)。文档还列出九种 inspect 子命令,包括表大小、索引使用、长时查询、膨胀、阻塞、复制槽等。
- 查询分析:通过 pg_stat_statements 扩展获取查询级指标,示例 SQL 按平均执行时间排序,筛选 mean_exec_time > 50 的慢查询,并展示 calls 与平均毫秒数。
- 日志外发:使用 supabase log-drains add 将日志转发至外部聚合工具,示例为 Datadog(指定 api key、region),也支持 webhook、list、remove 等命令。
- 自定义指标与告警:通过定时 Edge Function 采集配额相关数据(如数据库大小接近 8GB Pro 计划上限 85% 时输出告警),每 15 分钟调度;提供多服务健康检查端点,返回各服务状态与延迟;以及 Prometheus AlertManager 告警规则参考。
使用方式 前置条件包括:安装 Supabase CLI(npx supabase --version)、链接项目(supabase link --project-ref <ref>)、Pro 及以上计划(日志外发与延长日志保留)、应用级监控需 @supabase/supabase-js v2+。 工作流分三步:
- 从 Dashboard > Reports 查看高层指标,并用 supabase inspect db 进行深层诊断,先执行 cache-hit 与 seq-scans。
- 启用 pg_stat_statements 并运行慢查询 SQL;通过 log-drains 命令将日志外发到外部聚合工具。
- 由定时 Edge Function 产生自定义指标,配置配额阈值告警,并暴露健康检查端点。调度通过 config.toml 中的 [functions.collect-metrics] 配置,每 15 分钟运行。
适用场景
- 需要监控 Supabase 项目 API、数据库、认证、存储、实时等指标的开发者。
- 排查数据库性能问题(缓存命中率低、缺少索引、长时查询、阻塞等)。
- 将 Supabase 日志接入外部聚合或告警系统(如 Datadog、Logflare、webhook)。
- 需要采集业务级指标、设置配额告警或提供健康检查端点的运维与开发团队。
限制与注意事项
- 日志外发与延长日志保留需要 Pro 计划或更高。
- 具体告警阈值、配额数值与配置细节需以实际项目与官方文档为准;本简介仅复述资料中明确给出的示例。
- 未提供的费用、价格、平台支持范围、效果数据等信息暂未提供。
- 常见错误处理:pg_stat_statements 无行需在 Dashboard > Database > Extensions 启用;inspect db 失败需先链接项目;日志外发无事件需检查凭据与区域;缓存命中率低于 95% 需升级计算或优化查询;健康检查返回 503 需查看响应 detail 字段并验证 service role key;Edge Function cron 不触发需在 config.toml 补 schedule 字段并重新部署;长时查询增多需检查索引与锁竞争。
扩展资源 资料还引用诊断脚本、应用级 Prometheus 埋点、日志分析、CLI 命令、日志外发、Edge Functions 调度、pg_stat_statements、Supabase JS 客户端等参考文档,以及 incident runbook 与 performance tuning 后续步骤。