搭建可观测性基础栈

适用场景

为应用和基础设施搭建指标、日志、追踪和告警。典型组合:Prometheus + Alertmanager + Grafana + Loki + Tempo + OpenTelemetry Collector。

前置条件

步骤

  1. 部署 Prometheus 和 Alertmanager:
# prometheus.yml
global:
  scrape_interval: 15s
scrape_configs:
  - job_name: node
    static_configs:
      - targets: ['node1:9100', 'node2:9100']
  - job_name: app
    static_configs:
      - targets: ['app:8080']
  1. 部署 node_exporter、应用 metrics 和告警规则。

  2. 部署 Grafana,添加 Prometheus/Loki/Tempo 数据源。

  3. 部署 Loki + 采集器(Alloy/Promtail/Fluent Bit):

clients:
  - url: http://loki:3100/loki/api/v1/push
  1. 部署 Tempo 和 OpenTelemetry Collector,接收 OTLP 追踪。

  2. 配置告警路由、静默和通知渠道。

  3. 导入/编写看板,覆盖黄金指标(延迟、流量、错误、饱和度)。

验证

回滚

常见坑

相关命令

读完自测

合上页面,先回答,再展开对照。

  1. 搭建前需要明确哪些采集范围、保留期和告警前置条件?
  2. 如何验证可观测性栈端到端可用?
  3. 为什么不能把请求 ID 做成日志标签?告警规则缺少 for 会怎样?
答案
  1. 需要明确采集范围、保留期和告警接收渠道,并准备独立磁盘,长期存储可准备对象存储。
  2. 验证 Prometheus targets 全部 UP、Grafana 能查询指标/日志/追踪、告警能触发并送达、保留期和磁盘使用符合预期。
  3. 请求 ID 做标签会让 Loki 标签基数过高而拖垮它;告警规则缺少 for 会导致告警抖动。