用途
Observability Setup 用于为应用实现完整的可观测性,围绕三大支柱展开:Traces(追踪)、Metrics(指标)和 Logs(日志)。它提供可直接参考的代码示例与配置片段,帮助开发者把追踪、指标采集、结构化日志、仪表盘和告警规则接入到服务中。
主要能力
OpenTelemetry 追踪
示例使用 @opentelemetry/sdk-trace-node 创建 NodeTracerProvider,通过 Resource 与 SemanticResourceAttributes 设置服务名和服务版本,并注册 HttpInstrumentation、ExpressInstrumentation、PrismaInstrumentation 等自动埋点。还演示了使用 trace.getTracer 创建自定义 span,通过 setAttribute 记录业务属性(如 order.id),并在成功或异常时用 setStatus 标记状态。
Prometheus 指标
示例基于 prom-client 的 Registry、Counter、Histogram、Gauge 定义指标,包括:HTTP 请求总数 http_requests_total、请求耗时直方图 http_request_duration_seconds(含分桶)、活跃连接数 active_connections,以及业务指标 orders_processed_total。同时给出 Express 中间件示例,在响应结束时记录请求计数与耗时,并暴露 /metrics 端点输出指标。
结构化日志
示例使用 pino 创建 logger,支持通过 LOG_LEVEL 环境变量控制级别,配置 formatters.level 与 base 字段(服务名、环境),并演示以对象形式记录上下文(如 userId、action、err、orderId)。
仪表盘与告警
提供 Grafana 仪表盘 JSON 示例,包含请求速率、错误率、p95 延迟、活跃连接数四个面板,查询表达式基于 PromQL。还提供 Prometheus 告警规则示例(alerts.yml),包括 HighErrorRate、HighLatency、LowAvailability 三条规则,含表达式、持续时间、严重级别标签和摘要注解。
输出检查清单
文末给出检查项:OpenTelemetry 追踪已配置、Prometheus 指标已埋点、结构化日志已实现、示例仪表盘已创建、告警规则已定义、指标端点已暴露、埋点已测试。
使用方式
资料以代码片段和配置文件形式呈现,未提供安装命令或具体集成步骤。使用者需自行将示例代码适配到自己的项目结构中,并安装相应依赖(如 OpenTelemetry 相关包、prom-client、pino)。
适用场景
适用于需要为 Node.js/TypeScript 服务建立可观测性的场景,尤其是使用 Express 和 Prisma 的应用,希望统一接入追踪、指标、日志、仪表盘与告警。
限制
资料未说明支持的运行环境版本、依赖安装方式、部署要求、收费模式或实际效果;示例中的服务名、版本、端口、阈值等均为演示值,需按实际情况调整。