最近,Elastic 推出了适用于各种 OpenTelemetry 组件的 Elastic 发行版 (EDOT),我们很自豪地宣布,这些 EDOT 组件现在可在 Elastic 的 OpenTelemetry 演示分支中使用。我们还公开了一个 Kibana 端点,让您可以深入了解演示的实时数据并亲身体验其功能。在这篇博客文章中,我们将详细说明分支的原因,并探讨它引入的强大新功能。我们还将全面概述如何将这些增强功能与 OpenTelemetry 的 Elastic 发行版 (EDOT) 结合使用,以实现高级错误检测,以及 EDOT Collector(Elastic Agent 的前沿演变),以实现无缝数据收集和分析。
什么是 OpenTelemetry 演示?
OpenTelemetry 演示是由 OpenTelemetry 社区创建的基于微服务的应用程序,旨在在真实且分布式系统环境中展示其功能。这个演示应用程序,被称为 OpenTelemetry 天文商店,模拟一个由 10 多个互连的微服务(使用多种语言编写:Go、Java、.NET、Node.js 等)组成的电子商务网站,这些微服务通过 HTTP 和 gRPC 进行通信。每个服务都完全使用 OpenTelemetry 进行检测,生成全面的跟踪、指标和日志。该演示是理解如何在实际应用中实施和使用 OpenTelemetry 的宝贵资源。
其中一个名为
Elastic 的分支
Elastic 认识到有机会通过分支并集成高级 Elastic 功能来增强 OpenTelemetry 演示,从而实现更深入的可观测性和更简单的监控。虽然分支是 OpenTelemetry 推荐的方法,但我们的目标是尽可能利用上游版本的强大基础和最新更新。为了实现这一目标,Elastic 的 OpenTelemetry 演示分支每天都会从上游拉取更新,将其与 Elastic 特有的更改无缝集成。为了避免冲突,我们会不断向上游贡献,确保 Elastic 的修改始终是附加的,或者可以通过环境变量进行配置。其中一项贡献是 .env.override 文件,该文件专为供应商分支设计,用于覆盖演示中使用的微服务镜像和配置文件。
使用 Elastic 发行版获得更深入的见解
在我们当前对 Elastic OpenTelemetry 演示分支的更新中,我们已将用于检测的某些微服务 OTel SDK 替换为 Elastic 的专用发行版。这些更改确保与 Elastic 的可观测性工具更深入地集成,从而提供更丰富的见解和更强大的监控功能。以下是分支的一些更改
Java 服务:Ad、Fraud Detection 和 Kafka 服务现在使用 OpenTelemetry Java Agent 的 Elastic 发行版。该发行版中包含的功能之一是堆栈跟踪,它可以提供有关 span 源自代码路径中哪个位置的精确信息。在此处了解有关 Elastic Java Agent 的更多信息:此处。
Cart 服务已升级为使用 OpenTelemetry .NET Agent 的 Elastic 发行版。此替换使您了解如何使用 OpenTelemetry .NET 的 Elastic 发行版 (EDOT .NET),以零代码更改开始在 .NET 应用程序中使用 OpenTelemetry。在 此博客文章中发现有关 Elastic .NET Agent 的更多信息。
在Payment 服务中,我们配置了 OpenTelemetry Node.js Agent 的 Elastic 发行版。该发行版附带 host-metrics 扩展,Kibana 提供了一个精心策划的服务指标 UI。在此处阅读有关 Elastic Node.js Agent 的更多信息:此处。
Recommendation 服务现在利用 EDOT Python,替换了标准的 OpenTelemetry Python Agent。Python 发行版是零代码(或自动)检测的另一个示例,这意味着该发行版将设置 OpenTelemetry SDK 并为您启用所有建议的检测。在 此博客文章中了解有关 Elastic Python Agent 的更多信息。
需要重点指出的是,OpenTelemetry 的 Elastic 发行版不捆绑专有软件,它们构建在 vanilla OTel SDK 的基础上,但它们提供了一些优势,例如用于安装的单个软件包、具有合理默认配置的简单自动检测、自动日志遥测发送等等。沿着这些思路,最终目标是将 EDOT 的尽可能多的功能贡献回上游的 OpenTelemetry Agent;它们的设计方式是,作为扩展实现的附加功能可以直接与 OTel SDK 配合使用。
使用 Elastic Collector 发行版收集数据
OpenTelemetry 演示应用程序生成其信号并将其发送到 OpenTelemetry Collector OTLP 端点。在演示的分支中,EDOT Collector 设置为将微服务中的所有 OTLP 信号转发到 APM 服务器 OTLP 端点。此外,它还将 Collector 收集的所有其他指标和日志发送到 Elasticsearch 端点。
如果分支部署在 Kubernetes 环境中,则 Collector 将自动开始收集系统的指标。Collector 将被配置为使用 hostmetrics 接收器来监视所有 K8s 节点的指标、使用 kuebeletstats 接收器来检索 Kubelet 的指标,并使用 filelog 接收器来收集所有集群的信息。
微服务生成的信号和 EDOT Collector 收集的信号都使用 Kubernetes 元数据进行了丰富,从而允许用户无缝地将它们关联起来。这使得跟踪和观察每个服务在哪个 Kubernetes 节点和 Pod 上运行变得容易,从而深入了解应用程序性能和基础架构运行状况。
了解有关 Elastic OpenTelemetry Collector 发行版的更多信息:https://elastic.ac.cn/observability-labs/blog/elastic-distribution-opentelemetry-collector
使用 Elastic 进行错误检测
OpenTelemetry 演示结合了 flagd,这是一个用于模拟错误场景的功能标志评估引擎。例如,
另一个可用的标志名为
可以在 此链接找到模拟场景的完整列表。
开始您自己的探索
准备好使用 Elastic 探索 OpenTelemetry Demo 及其增强的可观察性功能了吗?点击 Kibana 链接,开始您自己的探索,了解 Elastic 和 OpenTelemetry 如何改变您实现可观察性的方式。
但这还不是全部——如果您想更进一步,您可以直接使用您自己的 Elasticsearch 集群部署 OpenTelemetry Demo。按照此处提供的步骤进行设置,并开始从您自己的环境中获取有价值的见解。