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 后缀来精简命名。现在,您将直接看到 AdCartCheckout,而不是 ad-servicecart-servicecheckout-service
  • Accounting 服务重写为 .NET:我们希望在 Demo 中展示 OTel 的 .NET 自动仪器化,而无需添加额外的服务。由于 Accounting 服务最初是用 Go 编写的——而且我们已经有了另一个该语言的服务——我们决定用 .NET 重写它。现在,Demo 同时包含 AccountingCart 服务,每个服务都演示了对 .NET 应用程序进行仪器化的不同方法。
  • 添加 ExemplarsCart 服务现在为 GetCartAddItem 操作记录 Exemplars,从而可以在指标和跨度之间进行关联。有关更多信息,请参阅 Cart 文档的 Exemplars 部分
  • React Native 示例应用程序:本次发布最重要的功能之一是全新的 React Native 应用程序示例。它可以构建用于 Android 或 iOS(目前仅支持本地运行)。有关如何运行和测试它的说明,请参阅 React Native 应用程序文档页面
  • 消息传递跨度的 Span 链接:遵循 OTel 始终链接生产者和消费者跨度的建议(消息传递跨度 - Trace 结构),Demo 现在演示了这一最佳实践。AccountingFraud-Detection 的消费者跨度链接到生产者跨度(Checkout/orders publish)。
  • 多架构构建:为了确保各种用户都能在本地运行 Demo,我们引入了新的 make 目标,以支持构建多平台镜像(支持 arm64amd64 架构)。
  • 配置 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 愉快!

最后修改于 2025 年 2 月 21 日: [demo] Add blog post about Demo 2.0 (#6362) (4ebd4f4a)