OpenTelemetry Demo 实战:用官方微服务演示应用学 OTel
OpenTelemetry Demo(Astronomy Shop)是官方维护的多语言微服务演示应用,内置完整埋点,是学习 OTel 数据采集与导出的最佳实验场。本文讲解 Demo 架构、本地启动方法,以及如何把它的遥测数据导入观测云分析。
OpenTelemetry Demo 是官方维护的虚构电商应用「Astronomy Shop」,由十几个不同语言(Go/Java/Python/Node.js/.NET 等)编写的微服务组成,全部预置 OTel 埋点——它是学习 OTel 最快的方式:不用写一行埋点代码,就能看到多语言环境下的完整链路、指标与日志。
核心要点速览
- Demo 包含前端、购物车、支付、广告、推荐等十几个微服务,覆盖主流语言;
- Docker Compose 一条命令拉起,内置 Collector、Jaeger、Prometheus、Grafana;
- 是学习上下文传播、采样、Collector 管道的理想沙箱;
- 把导出端点指向观测云 DataKit,即可在真实平台上体验分析闭环。
Demo 里有什么?
Astronomy Shop 模拟电商场景:前端展示商品,调用推荐、广告、购物车、结算、支付、物流等服务,并带有消息队列(Kafka)异步链路与特性开关(可人为注入故障)。预置的埋点覆盖:
- 每个服务的入站/出站调用(HTTP/gRPC/Kafka);
- 运行时指标(CPU、内存、自定义业务指标);
- 与链路关联的日志(trace_id 注入)。
本地启动步骤
git clone https://github.com/open-telemetry/opentelemetry-demo.git
cd opentelemetry-demo
docker compose up -d
启动后可访问:Web 商店界面(产生流量)、Jaeger UI(看链路)、Grafana(看指标)、负载发生器(持续造流量)。用特性开关打开「支付服务故障」等开关,可以模拟真实排障场景。
用 Demo 学什么?
- 上下文传播:观察 Kafka 异步消息中的 trace 上下文如何串联(见《上下文传播》);
- Collector 管道:Demo 的 Collector 配置展示了 OTLP 接收、批处理、多导出的典型写法;
- 语义约定:对照 Span 属性理解语义约定的实际形态;
- 采样:修改采样率观察数据量与细节保留的变化。
观测云落地:把 Demo 数据导入观测云
把 Demo 的遥测数据导入观测云只需改一处——Collector 的 exporter 指向 DataKit:
exporters:
otlp:
endpoint: "http://datakit-host:4318"
headers:
Authorization: "Token <观测云Token>"
重启 Demo 后:链路出现在观测云 APM(服务拓扑自动绘制出十几个微服务的依赖关系)、指标进指标模块、日志进日志查看器——直接在真实平台上练习服务拓扑分析、慢链路下钻与监控器告警配置。
常见问题(FAQ)
Q:Demo 对机器配置要求高吗? 十几个容器建议 4C8G 以上;资源紧张可裁剪 compose 文件中的部分服务。
Q:Demo 的埋点代码值得抄吗? 值得参考但注意它是演示性质——生产埋点还需加上采样、脱敏(见《敏感数据脱敏》)与资源限制。
Q:可以在 K8s 里跑 Demo 吗? 官方提供 Helm Chart,可部署到测试集群,配合 K8s 版 Collector 练习真实部署形态。
Q:Demo 数据量会不会很大? 负载发生器默认持续造流量但量级可控;导入观测云体验时可调低流量或提高采样比。