OpenTelemetry Astronomy Shop Demo 体验指南

概述

OpenTelemetry Astronomy Shop Demo(项目地址)是由 OpenTelemetry 社区维护的分布式电商系统参考实现。它模拟了商品浏览、购物车管理、支付处理、商品推荐等真实电商业务场景的完整链路。

云监控 2.0 Demo 基于此项目进行增强开发。该Demo包含两大核心模块:

  • 电商应用模块​:包含 20 个采用不同语言(Java, C++, Rust, Python 等)编写的微服务应用。

  • 故障注入模块​:用于模拟各类应用问题场景。

在可观测性数据采集方面:

  • 入口服务(淡紫色和砖红色):用于产生流量的负载和接收、转发请求的前端服务。

  • 中间件层(暗蓝色):业务服务所依赖的三方中间件,如控制特性开关的Flagd和用于故障注入的Chaos设施。

  • Otel Demo服务组(翠绿色):用于演示电商业务的服务群,包含如下核心业务和核心服务。

  • 基础设施层(淡橘色):依赖的三方服务和数据接收的远端平台。

下图展示了 Demo 的完整架构:image

功能体验

演示环境

  • 阿里云 Playground 提供了云监控 2.0 主要功能的演示环境,便于您快速了解和体验其核心能力,演示空间名称:o11y-demo-ap-southeast-singapore

  • 请访问 Playground Demo 演示环境,默认进入工作空间。

查看实体

  1. 在左侧导航栏中,单击实体探索

  2. 在右侧页面中,展示当前环境下的所有​实体(Entity)​​。实体指可观测的独立对象,例如一个 Kubernetes 集群(ACK)、一台 ECS 服务器或一个应用服务等。完成数据接入后,实体信息将自动生成。image.png

查看调用链数据

  1. 在左侧导航栏中,单击应用中心 > 应用可观测 > 应用监控

  2. 应用监控导航栏中,单击应用列表,选择任意目标应用,如:checkout

  3. 页面将显示链路信息:

    • 调用次数​和HTTP 错误数​的统计柱状图;

    • 平均耗时​的时序曲线图;

    • Span列表​和 ​Trace列表​​

  4. 选择Trace列表,单击任意一条 Trace ID​​或​​调用链​​;

  5. Trace 详情​​面板中:

    • 查看 Trace 轨迹图​​,直观展示完整的调用链路和 Span 分布。

    • 点击任意一个Span​​。

    • Span 详情​区域将展示该 Span 的详细信息、关联的​​指标日志​、异常和​附加信息​。您还可以在此区域​​管理​​或​​触发​​自定义交互事件。

查看指标数据

  1. 在左侧导航栏中,单击实体探索​;

  2. 单击任意一个实体卡片(例如:Kubernetes 集群);

  3. 在实体页K8s集群列表中,选择目标集群 ID,您可以查看该实体的相关指标。

查看日志数据

  1. 在左侧导航栏中,单击实体探索​​;

  2. 单击任意一个实体卡片(例如:云服务器 ECS(Instance));

  3. 在实体页ECS 列表中,选择目标实例 ID,在滑出的页面导航栏中,选择日志探索

  4. 日志探索下,可以查看ECS Systemd Journal日志(安全)ECS实例运行时日志云服务器 ECS 事件集

故障定位与根因分析

OpenTelemetry Astronomy Shop Demo 内置了多种模拟应用故障的场景。本部分以“数据库表名错误导致服务异常”​​场景为例,演示使用云监控 2.0 进行故障定位的完整流程。

场景描述

  • 问题表象​:新版本应用因误写数据库表名,导致特定服务接口错误率显著上升。

  • 影响范围​:错误集中发生在某一台特定服务器上。

  • 工作流程​:image.png

  • 故障触发器界面​:image.png

排查路径

  1. 告警接收与初步确认​:

    • 收到告警通知(如钉钉群告警):提示服务 checkout 的可用率​​低于阈值。

    • 告警详情明确指出接口 /oteldemo.CheckoutService/PlaceOrder 错误率异常升高。

    image.png

  2. 定位问题接口实体​:

    • 登录​云监控 2.0 控制台​。

    • 使用 ​USearch(快速查询)​​ 功能,输入问题接口名称 /oteldemo.CheckoutService/PlaceOrder 进行搜索。

    • 搜索结果中定位到对应的接口实体。

    image.png

  3. 查看实体概览与错误详情​:

    • 单击进入该接口实体详情页的概览​​。

    • 确认错误率突增发生在 10:40 ~ 10:50 时间段内。

    • 单击错误指标(如显示错误数:5​​)进行下钻分析。

    image.png

  4. 分析调用链与定位异常实例​:

    • 自动进入调用链分析​​页面,时间范围聚焦在错误时段。

    • 观察Span 列表​​或 ​Trace 列表​​,发现所有错误调用均集中来源于特定实例(如 10.1.68.31)。

    image.png

  5. 查看异常 Trace 详情​:

    • 单击一条包含错误状态的 ​Trace​​。

    • ​Trace 详情​​ 视图中,检查链路上各 Span 的状态和日志。

    • 定位到关键错误信息(通常是数据库操作 Span),发现错误原因为 ​访问了不存在的表名​

    image.png

  6. 定位问题实例与根因关联​:

    • 返回 ​USearch​(快速查询)​,搜索问题实例 IP 10.1.68.31

    • 在搜索结果中找到对应的 ​ECS​​ 或 ​​Pod​​ 实体。

    image.png

    • 进入该实例实体详情页。

    • 检查 ​关联信息​​(如部署事件、版本变更记录、关联应用)或 ​​日志​​。

    • 发现该实例上运行的 checkoutservice 应用 Pod 在故障发生前不久完成了​​新版本部署​​。结合步骤 5 发现的错误信息,可确认故障根因是新版本代码中​​存在错误的数据库表名引用​​。

    image.png

结论​

通过以上步骤,成功定位到故障由特定实例 (10.1.68.31) 上部署的新版本 checkoutservice 应用代码中错误的数据库表名引起。解决措施应为回滚该实例上的应用版本或修复代码中的表名错误并重新发布。