2.3 KiB
2.3 KiB
项目监控与可观测性方案
本文档梳理了为 XControl 项目添加监控、日志与追踪能力的计划,涵盖 Prometheus 指标、Loki 日志以及 OpenTelemetry 链路追踪。
1. 整体监控架构设计
- 监控栈:Prometheus + Loki + OpenTelemetry Collector。
- 统一指标、日志、trace 的命名规范。
- 通过环境变量或配置文件控制监控开关、采样率与导出端点。
2. Prometheus Metrics
- Go 服务:使用
prometheus/client_golang,在gin中挂载/metrics,提供请求延迟、状态码、数据库与 Redis 访问指标。 - Node/Next.js 前端:使用
prom-client,暴露基础 HTTP 指标及自定义业务计数。 - 其他语言组件:根据语言选择对应 SDK 并添加核心指标。
- 提供 docker-compose/Helm 配置,让 Prometheus 抓取各服务的
/metrics。
3. Loki LogQL 日志
- Go 端:采用
slog或logrus+ Loki hook,输出 JSON 结构化日志并包含{job, service, trace_id}等标签。 - Node 端:使用
pino或winston,输出 JSON 日志,通过 Loki transport 或promtail收集。 - 在所有日志中注入
trace_id、span_id,便于与 tracing 关联。 - 更新部署脚本以配置 Loki 接收端或 promtail。
4. OpenTelemetry Tracing
- Go 服务:集成
go.opentelemetry.io/otel,启用 gin/pgx/redis 自动 instrumentation,使用 OTLP exporter。 - Node/Next.js:引入
@opentelemetry/api与@opentelemetry/sdk-node,启用 HTTP/Fetch 等自动 instrumentation,发送 trace 到 OTel Collector。 - 其他语言组件按需选择对应 OTel SDK,实现上下文传递。
- 将
trace_id、span_id加入日志,指标中添加 exemplar/label 实现跨链接。
5. 部署与配置管理
- 提供示例配置或环境变量(
PROMETHEUS_ENDPOINT,LOKI_URL,OTEL_EXPORTER_OTLP_ENDPOINT)。 - 编写 docker-compose 或 Kubernetes manifests,将 Prometheus、Loki 与 OTel Collector 纳入基础设施。
- 更新文档说明如何在本地与生产环境启用监控以及常用查询示例。
6. 验证与测试
- 为关键监控点编写单元或集成测试,保证指标、日志格式正确。
- 在 CI/CD 流程中增加 lint/test 防止监控代码被破坏。
- 本地启动后通过
curl /metrics、Loki 查询以及 Jaeger/Tempo UI 验证输出。