OpenTelemetry Demo 2.0 发布
我们非常激动地宣布 OpenTelemetry Demo 2.0 正式发布!我们一直在幕后辛勤工作,不断完善 Demo,使其更加完整、健壮且用户友好。我们相信这些激动人心的新功能和改进值得一个主要版本!
但在我们深入介绍之前,让我们先来看看项目的一些统计数据。
统计信息
OpenTelemetry Demo 共有 140 位贡献者,获得了 2048 次点赞。在 2022 年 10 月 26 日——通用可用性发布两天后——我们创下了单日 40 次点赞的记录。如果您使用 Demo,请考虑给我们点个赞,以帮助推广该项目。
Demo 总共有 1.8K 个 fork。值得注意的是,Abhishek Veeramalla 的 fork 以 142 次点赞脱颖而出,并被 fork 了 425 次。
Demo 容器已被拉取超过 1200 万次(来自 ghcr.io 的 11.8M 次,加上来自 hub.docker 的 433K 次)。
OpenTelemetry Demo 包含以下 CNCF 项目:
2.0 版本的新功能?
本次发布带来了许多激动人心的升级和变更。以下列表是主要亮点的快速回顾:
- 引入 Flagd-ui:自 1.9.0 版本以来,我们最怀念的功能之一回归了!您现在可以直接在 Demo 中管理功能标志。有关更多详细信息,请参阅 功能标志页面。
- 引入 Image Provider:自 1.10.0 版本发布以来,我们引入了一个名为 Image Provider 的新服务,该服务负责提供静态产品图像。该服务基于 NGINX 构建,为每个产品返回图像,并演示了如何使用 NGINX 原生 OpenTelemetry 模块对 OpenTelemetry 进行仪器化,以代理 NGINX。
- Redis 已被 Valkey 取代:自 1.11.0 版本以来,我们已用 Valkey 替换了 Redis 服务,为 OTel Demo 引入了另一个 CNCF 项目。
- 构建参数移至
.env文件:如果您 fork 了 Demo 并使用了任何自定义镜像,那么让您的 fork 与上游保持同步总是很麻烦。为了简化操作,我们将大部分配置移至了.env文件。我们还添加了一个_DOCKERFILE环境变量,允许您指定构建指令的位置。 - 服务更名:如果您从一开始就在使用 OTel Demo,您可能已经习惯了每个服务的冗长命名。在 2.0 版本中,我们通过删除所有服务名称中的
-service后缀来精简命名。现在,您将直接看到Ad、Cart和Checkout,而不是ad-service、cart-service和checkout-service。 - Accounting 服务重写为 .NET:我们希望在 Demo 中展示 OTel 的 .NET 自动仪器化,而无需添加额外的服务。由于 Accounting 服务最初是用 Go 编写的——而且我们已经有了另一个该语言的服务——我们决定用 .NET 重写它。现在,Demo 同时包含
Accounting和Cart服务,每个服务都演示了对 .NET 应用程序进行仪器化的不同方法。 - 添加 Exemplars:
Cart服务现在为GetCart和AddItem操作记录 Exemplars,从而可以在指标和跨度之间进行关联。有关更多信息,请参阅 Cart 文档的 Exemplars 部分。 - React Native 示例应用程序:本次发布最重要的功能之一是全新的 React Native 应用程序示例。它可以构建用于 Android 或 iOS(目前仅支持本地运行)。有关如何运行和测试它的说明,请参阅 React Native 应用程序文档页面。
- 消息传递跨度的 Span 链接:遵循 OTel 始终链接生产者和消费者跨度的建议(消息传递跨度 - Trace 结构),Demo 现在演示了这一最佳实践。
Accounting和Fraud-Detection的消费者跨度链接到生产者跨度(Checkout/orders publish)。 - 多架构构建:为了确保各种用户都能在本地运行 Demo,我们引入了新的
make目标,以支持构建多平台镜像(支持arm64和amd64架构)。 - 配置 Dependabot:我们之前在某些依赖项上有所滞后,但现在已配置 Dependabot 自动保持 Demo 的更新。
当前面临的挑战
当然,随着重大更新的到来,也会带来一些成长的烦恼。以下是我们目前正在解决的问题:
- Grafana 仪表板:随着语义约定和工具随着新版本的发布而不断发展,确保我们的 Grafana 仪表板保持完全功能是一个挑战。如果您有 Grafana 经验,我们非常希望得到您的帮助!
- Dependabot PR 测试:虽然 Dependabot 有助于保持所有服务依赖项的最新,但我们尚未实施自动化测试来确保更新不会导致崩溃。此测试仍然是一个手动过程。
- Demo 可伸缩性:在扩展 Demo 场景的同时保持 Demo 的本地易用性是我们最大的挑战之一。随着每周涌现的 19 个不同服务和新想法,我们正不断努力维持这种平衡。
下一步?
我们不会止步于此!以下是我们期待的一些后续步骤,我们非常希望得到您的帮助:
- 恢复 Erlang/Elixir:在 2024 年 3 月,我们用 OpenFeature 和 Flagd 替换了最初用 Elixir 编写的功能标志服务。此后,Demo 中就没有该语言的服务了,但我们正致力于重新引入 Erlang/Elixir。我们非常感谢这方面的任何帮助!
- React Native 应用程序的远程访问:我们计划使 React Native 应用程序能够访问远程运行的 Demo,从而扩展其可用性。
- 改进自动化和测试:我们正在努力改进我们的自动化和测试流程——特别是针对 Dependabot PRs——以简化我们的开发工作流程。
参与进来!
您的反馈和贡献是我们项目蓬勃发展的动力。如果您有兴趣提供帮助——无论是完善仪表板、自动化测试还是重新引入 Erlang/Elixir——请加入我们,在我们的 GitHub 仓库 / SIG 会议 (calendar-demo) 上参与讨论,或者加入 #otel-community-demo slack 频道。
感谢您的持续支持,祝您 Demo 愉快!