概述
OpenTelemetry Astronomy Shop Demo(项目地址)是由 OpenTelemetry 社区维护的分布式电商系统参考实现。它模拟了商品浏览、购物车管理、支付处理、商品推荐等真实电商业务场景的完整链路。
云监控 2.0 Demo 基于此项目进行增强开发。该Demo包含两大核心模块:
电商应用模块:包含 20 个采用不同语言(Java, C++, Rust, Python 等)编写的微服务应用。
故障注入模块:用于模拟各类应用问题场景。
在可观测性数据采集方面:
入口服务(淡紫色和砖红色):用于产生流量的负载和接收、转发请求的前端服务。
中间件层(暗蓝色):业务服务所依赖的三方中间件,如控制特性开关的Flagd和用于故障注入的Chaos设施。
Otel Demo服务组(翠绿色):用于演示电商业务的服务群,包含如下核心业务和核心服务。
基础设施层(淡橘色):依赖的三方服务和数据接收的远端平台。
下图展示了 Demo 的完整架构:
功能体验
演示环境
阿里云 Playground 提供了云监控 2.0 主要功能的演示环境,便于您快速了解和体验其核心能力。
请访问 Playground Demo 演示环境,默认进入工作空间:
o11y-demo-cn-hangzhou
。
查看实体
在左侧导航栏中,单击实体查询。
在右侧页面中,展示当前环境下的所有实体(Entity)。实体指可观测的独立对象,例如一个 Kubernetes 集群(ACK)、一台 ECS 服务器或一个应用服务等。完成数据接入后,实体信息将自动生成。
查看调用链数据
在左侧导航栏中,单击
。在应用监控导航栏中,单击应用列表,选择目标应用checkout。
在滑出的应用页面导航栏中,单击调用链分析,在右侧快捷筛选区域,选择应用名称,单击勾选
checkout
。页面将显示筛选后的链路信息:
调用次数和 HTTP 错误数 的统计柱状图。
调用耗时 的时序曲线图。
Span 列表 和 Trace 列表。
单击任意一条 Trace ID 或 调用链。
在 Trace 详情 面板中:
查看 Trace 轨迹图,直观展示完整的调用链路和 Span 分布。
点击任意一个 Span。
Span 详情 区域将展示该 Span 的详细信息(操作名、耗时、状态码等)、关联的指标、日志和异常信息。您还可以在此区域管理或触发自定义交互事件。
查看指标数据
在左侧导航栏中,单击实体查询。
单击任意一个实体卡片(例如:容器服务Kubernetes版ACK)。
在实体页ACK 集群列表中,选择目标实例ID,您可以查看该实体的相关指标:
实例概览:关键指标概览卡片。
仪表盘:预置或自定义的指标监控仪表盘。
指标库:查看该实体关联的所有指标项及其数据。
查看日志数据
在左侧导航栏中,单击实体查询。
单击任意一个实体卡片(例如:云服务器 ECS)。
在实体页 ECS 列表中,选择目标实例ID,在滑出的页面导航栏中,选择日志库。
在日志库菜单下,可以查看该实体关联的日志库,包括安全告警事件库、ECS系统日志、ECS主机事件,您可以在此进行日志查询与分析。
故障定位与根因分析
OpenTelemetry Astronomy Shop Demo 内置了多种模拟应用故障的场景。本部分以 “数据库表名错误导致服务异常” 场景为例,演示使用云监控 2.0 进行故障定位的完整流程。
场景描述
问题表象:新版本应用因误写数据库表名,导致特定服务接口错误率显著上升。
影响范围:错误集中发生在某一台特定服务器上。
工作流程:
故障触发器界面:
排查路径
告警接收与初步确认:
收到告警通知(如钉钉群告警):提示服务
checkout
的可用率低于阈值。告警详情明确指出接口
/oteldemo.CheckoutService/PlaceOrder
错误率异常升高。
定位问题接口实体:
登录云监控 2.0 控制台。
使用 USearch(快速查询) 功能,输入问题接口名称
/oteldemo.CheckoutService/PlaceOrder
进行搜索。搜索结果中定位到对应的接口实体。
查看实体概览与错误详情:
单击进入该接口实体详情页的概览。
确认错误率突增发生在
10:40 ~ 10:50
时间段内。单击错误指标(如显示错误数:5)进行下钻分析。
分析调用链与定位异常实例:
自动进入 调用链分析 页面,时间范围聚焦在错误时段。
观察 Span 列表 或 Trace 列表,发现所有错误调用均集中来源于特定实例(如
10.1.68.31
)。
查看异常 Trace 详情:
单击一条包含错误状态的 Trace。
在 Trace 详情 视图中,检查链路上各 Span 的状态和日志。
定位到关键错误信息(通常是数据库操作 Span),发现错误原因为 访问了不存在的表名。
定位问题实例与根因关联:
返回 USearch(快速查询),搜索问题实例 IP
10.1.68.31
。在搜索结果中找到对应的 ECS 或 Pod 实体。
进入该实例实体详情页。
检查 关联信息(如部署事件、版本变更记录、关联应用)或 日志。
发现该实例上运行的
checkoutservice
应用 Pod 在故障发生前不久完成了新版本部署。结合步骤 5 发现的错误信息,可确认故障根因是新版本代码中存在错误的数据库表名引用。
结论
通过以上步骤,成功定位到故障由特定实例 (10.1.68.31
) 上部署的新版本 checkoutservice
应用代码中错误的数据库表名引起。解决措施应为回滚该实例上的应用版本或修复代码中的表名错误并重新发布。