Files
crmdesk/deploy/docker/readme/readme.observability.md
T
2026-09-19 16:35:35 +08:00

5.4 KiB
Raw Blame History

可观测性 / ObservabilityPrometheus + Grafana + Zipkin + OTel Collector

组合关键字 obs = prometheus + grafana + zipkin + otelcol 四个组件(一镜像一文件),也可单独使用。

快速开始

# 中间件 + 观测栈
./start.sh middleware obs

# 线上全量 + 观测栈
./start.sh all obs

# 停止(关键字保持一致)
./stop.sh middleware obs down

# 单独启动某个组件(在 deploy/docker 目录执行)
docker compose --env-file .env -f compose/compose-prometheus.yaml up -d
docker compose --env-file .env -f compose/compose-grafana.yaml up -d
docker compose --env-file .env -f compose/compose-zipkin.yaml up -d
docker compose --env-file .env -f compose/compose-otelcol.yaml up -d

注意:otelcol 若要转发 trace 到 Zipkin,需与 zipkin 在同一 compose 项目中启动(即通过 ./start.sh zipkin otelcolobs 组合),单独 docker compose -f compose/compose-otelcol.yaml up 会因网络隔离解析不到 zipkin-bytedesk

组件说明

关键字 compose 文件(位于 compose/ 服务名 访问地址
prometheus compose/compose-prometheus.yaml bytedesk-prometheus http://127.0.0.1:19090
grafana compose/compose-grafana.yaml bytedesk-grafana http://127.0.0.1:13000admin/admin.env 可覆盖)
zipkin compose/compose-zipkin.yaml bytedesk-zipkin http://127.0.0.1:19411
otelcol compose/compose-otelcol.yaml bytedesk-otelcol OTLP HTTP http://127.0.0.1:14318/v1/traces、OTLP gRPC 127.0.0.1:14317

应用侧要求

  • 应用需暴露 /actuator/prometheusPrometheus 采集业务指标)
  • Grafana 已预置 compose/grafana/provisioning 中的数据源与 AI 观测仪表板(ai-observability.json

分布式追踪:两种模式(二选一)

应用侧同时引入了 spring-boot-starter-zipkinBrave)与 spring-boot-starter-opentelemetry(OTLP),运行时只能有一种 tracer 生效(共存时 Brave 优先,需显式排除才能切到 OTel)。配置见 starter/src/main/resources/properties/<profile>/actuator.properties

默认策略:local profile 默认开启 Zipkin/Brave 模式(便于日常本地调试);prod/open/noai 等 profile 默认全部关闭(避免后端未启动时产生连接拒绝告警)。均可通过环境变量覆盖。

模式一:Zipkin / Brave(默认推荐)

后端直连 Zipkinspan 走 Zipkin v2 HTTP 协议(/api/v2/spans)。

# 1. 启动 Zipkin(或直接用 obs 组合)
./start.sh zipkin

# 2. 启动应用(local profile 已默认开启,无需额外环境变量)
./starter/mvnw -f starter/pom.xml spring-boot:run
# 若临时不需要追踪:MANAGEMENT_TRACING_ENABLED=false ./starter/mvnw ...
环境变量 local 默认值 其他 profile 默认值 说明
MANAGEMENT_TRACING_ENABLED true false 追踪总开关
MANAGEMENT_ZIPKIN_TRACING_ENABLED true false Zipkin 导出开关
MANAGEMENT_TRACING_SAMPLING_PROBABILITY 1.0 0.0 采样率(0.0~1.0,本地调试建议 1.0,生产调低)
MANAGEMENT_ZIPKIN_TRACING_ENDPOINT http://127.0.0.1:19411/api/v2/spans 同左 Zipkin 上报地址

模式二:OpenTelemetry / OTLP(经 OTel Collector

应用以 OTLP 协议上报到 otelcolcollector 再转发到 ZipkinUI 查询不变);也可指向任意 OTLP 兼容后端(Jaeger、Tempo、阿里云 ARMS 等)。

# 1. 启动 collector(转发依赖 Zipkin,建议一并启动;或使用 obs 组合)
./start.sh zipkin otelcol

# 2. 应用侧开启(关键:排除 Brave 自动配置;local 下 MANAGEMENT_TRACING_ENABLED 已默认 true
SPRING_AUTOCONFIGURE_EXCLUDE=org.springframework.boot.micrometer.tracing.brave.autoconfigure.BraveAutoConfiguration \
MANAGEMENT_OPENTELEMETRY_ENABLED=true \
./starter/mvnw -f starter/pom.xml spring-boot:run
环境变量 默认值 说明
MANAGEMENT_OPENTELEMETRY_ENABLED false OTel SDK 总开关
MANAGEMENT_OPENTELEMETRY_TRACING_EXPORT_OTLP_ENDPOINT http://127.0.0.1:14318/v1/traces OTLP 上报地址(改后端只需改此变量)
MANAGEMENT_OPENTELEMETRY_TRACING_EXPORT_OTLP_TRANSPORT http OTLP 传输方式:httpgrpc
MANAGEMENT_OTLP_METRICS_EXPORT_ENABLED false OTLP 指标导出(开启后每分钟向 4318 推指标)
SPRING_AUTOCONFIGURE_EXCLUDE (空) 切 OTel 模式时填 Brave 自动配置类全名

Spring Boot 4.x 注意:旧属性 management.tracing.enabled / management.zipkin.tracing.* 已废弃(deprecation: error,不生效),新属性为 management.tracing.export.enabled / management.tracing.export.zipkin.* / management.opentelemetry.*

说明

  • 四个组件相互独立,均已配置健康检查自愈;grafana 不声明对 prometheus 的 depends_on
  • Zipkin 默认内存存储(STORAGE_TYPE=mem),重启后 trace 数据不保留;生产环境建议接 elasticsearch/mysql
  • otelcol 配置文件为 compose/otelcol/otelcol-config.yamlOTLP 接收 → batch → zipkin exporter),可通过挂载替换以对接其他后端
  • prod/open/noai 等非 local profile 追踪默认全关,后端未启动时应用日志干净无连接告警;local profile 默认开启,未启动 Zipkin 时会有 span 上报失败告警,可临时 MANAGEMENT_TRACING_ENABLED=false 关闭