核心是通过opentelemetry agent零代码自动采集traces/metrics/logs,经otel collector统一打标分流至jaeger/prometheus/loki,并在grafana中基于trace_id等字段联动展示。

用 Docker Compose 整合监控探针实现全链路应用画像,核心是让 traces、metrics、logs 三类数据自动打上统一上下文(如 trace_id、service.name、env),并在 Grafana 中联动展示。不靠写代码埋点,而是靠标准化探针 + 统一 Collector + 分层编排来“画出”服务真实运行状态。
选对探针,零代码自动采集
Java/Python/Go 应用无需改一行业务代码,只需挂载对应语言的 OpenTelemetry Agent:
-
Java:启动时加 JVM 参数
-javaagent:/path/to/opentelemetry-javaagent.jar,自动注入 HTTP、DB、Redis、MQ 等常见组件的追踪逻辑 -
Python:用
opentelemetry-instrument --traces-exporter otlp_proto_http python app.py包裹启动命令 -
Go:在 main 函数中初始化 SDK(几行代码),配合
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317环境变量即可上报 - 所有探针默认暴露
/metrics端点(Prometheus 可抓),并自动注入 trace context 到日志(如 logback 的%X{trace_id})
用 OTel Collector 做统一“粘合剂”
它不是简单转发器,而是数据路由中枢。一份 config.yaml 就能同时处理三类信号:
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
- 接收 traces(来自 Java/Python/Go Agent 的 OTLP 协议)→ 分流到 Jaeger 或 Tempo
- 接收 metrics(来自应用 /metrics 或自身 exporter)→ 转成 Prometheus remote_write 格式 → 推给 Prometheus
- 接收 logs(通过 OTLP Log Bridge 或 Fluent Bit)→ 打标后推给 Loki(或直接存本地)
- 关键配置项:
resource_attributes补充 service.name、environment、version;batch和memory_limiter防止 OOM
分层 Compose 编排,避免配置纠缠
把不同职责拆开,启动灵活、复用方便:
-
docker-compose.base.yml:定义共享网络monitoring-net、时区Asia/Shanghai、全局环境变量(如OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317) -
docker-compose.monitoring.yml:部署otel-collector、prometheus(配置 scrape targets 含 collector 自身)、grafana(预置 Prometheus + Jaeger 数据源)、jaeger(all-in-one 模式) -
docker-compose.app.yml:你的 Spring Boot 或 Flask 服务,挂载探针卷、声明健康检查、设置depends_on确保 collector 先就绪 - 启动命令:
docker compose -f docker-compose.base.yml -f docker-compose.monitoring.yml -f docker-compose.app.yml up -d
在 Grafana 里真正“画出”应用画像
不是堆仪表盘,而是用关联字段打通数据孤岛:
- 在 Trace Diagram 页面点击某个 span → 右键 “View in Logs” → 自动跳转到该 trace_id 对应的所有日志
- 在 Metrics 面板 hover 某个高延迟时间点 → 点击 “Explore Traces” → 自动筛选出该时段内慢请求的完整调用链
- 用
label_values(service_name)做变量,在 Dashboard 上切换服务,所有图表(QPS、P99、错误率、依赖图)实时联动 - 关键技巧:Grafana 的
Tempo数据源支持 trace-to-metrics 查询,可直接从链路中提取 DB 查询耗时、HTTP 状态码等指标










