前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >统一云原生可观测性:Elastic 与 OpenTelemetry 的最佳实践指南

统一云原生可观测性:Elastic 与 OpenTelemetry 的最佳实践指南

原创
作者头像
点火三周
发布于 2024-10-14 10:05:16
发布于 2024-10-14 10:05:16
5380
举报
文章被收录于专栏:Elastic Stack专栏Elastic Stack专栏

OpenTelemetry 不仅是开放标准

OpenTelemetry 不仅仅是成为可观测性的开放标准。作为云原生计算基金会(CNCF)下的主要项目之一,OpenTelemetry 得到了大量企业软件供应商和云服务提供商的支持。来自金融、保险、科技等行业的全球企业正在逐步标准化使用 OpenTelemetry。通过 OpenTelemetry,DevOps 团队可以一致地收集和摄取遥测数据,从而为可观测性提供事实上的标准。

Elastic® 正在战略性地将 OpenTelemetry 作为其主要的数据收集架构,用于可观测性和安全性。此外,Elastic 承诺帮助 OpenTelemetry 成为可观测性生态系统中最佳的数据收集基础设施。除了最近向 OpenTelemetry 贡献 Elastic 通用模式(ECS)之外,Elastic 还在进一步加深与 OpenTelemetry 的关系。

自 Elastic 7.14 版本起,Elastic 已经原生支持 OpenTelemetry,可以直接摄取基于 OpenTelemetry 协议(OTLP)的追踪、指标和日志。

otel 配置选项
otel 配置选项

在本文中,我们将回顾 Elastic 目前提供的 OpenTelemetry 支持,包括以下内容:

将 OpenTelemetry 数据摄取到 Elastic

如果您有兴趣了解如何简单地将 OpenTelemetry 追踪和指标摄取到 Elastic,请按照本文中的步骤进行操作。

以下是 Elastic 提供的摄取 OpenTelemetry 数据的选项:

流程图
流程图

使用 OpenTelemetry Collector

使用 OpenTelemetry Collector 是最常见的配置选项,只需添加两个关键变量。

这些说明使用了一个特定的 opentelemetry-collector 配置来适配 Elastic。基本上,elastic/opentelemetry-demo 项目中的 values.yaml 文件配置了 opentelemetry-collector,使其指向 Elastic APM Server 使用两个主要值:

  • OTEL_EXPORTER_OTLP_ENDPOINT:Elastic 的 APM 服务器
  • OTEL_EXPORTER_OTLP_HEADERS:Elastic 授权头

这些值可以在 OpenTelemetry 设置说明中的 APM 集成说明(Integrations->APM)中找到。

嵌入代码中的 OpenTelemetry 代理

如果您打算在代码中使用 OpenTelemetry 库,只需将服务指向 Elastic 的 APM 服务器即可,因为它支持原生 OLTP 协议,无需特殊的 Elastic 转换。

为了更有效地展示这一点并提供一些有关如何使用 OpenTelemetry 的教育,我们提供了两个示例应用程序供您学习:

  • Elastic 的 OpenTelemetry 演示版本:与其他可观测性供应商一样,我们有自己分叉的 OpenTelemetry 演示版本。
  • Elastiflix:这个演示应用程序是一个帮助您学习如何在各种语言和遥测信号上进行仪器化的示例。

请查看我们关于使用 Elastiflix 应用程序和 OpenTelemetry 进行仪器化的博客:

我们还制作了相关主题的 YouTube 视频:

鉴于 Elastic 和 OpenTelemetry 的广泛用户基础,这些资源为任何希望学习 OpenTelemetry 仪器化复杂性的用户提供了丰富的教育资源。

支持 OpenTelemetry 的 Elastic 代理

如果您已经实施了 OpenTelemetry,仍然可以与 OpenTelemetry 一起使用它们。Elastic APM 代理目前能够传输 OpenTelemetry 跨度,作为追踪的一部分。这意味着如果您的应用程序中有任何组件发出 OpenTelemetry 跨度,它将成为 Elastic APM 代理捕获的追踪的一部分。

Elastic 中的 OpenTelemetry 日志

如果您查看 OpenTelemetry 文档,会发现许多语言库仍处于实验状态或尚未实现。根据文档,Java 处于稳定状态。根据您的服务语言以及您对新技术的接受度,存在几种从您的服务和应用程序导出日志并将它们整合到您的可观测性后端的选项。

在之前的一篇博客中,我们讨论了将日志数据正确导入 Elastic 的三种不同配置。博客探讨了 OpenTelemetry 日志的最新状态,并提供了有关可用方法的指导,主要包括以下原则:

  • 在适用的情况下,将服务日志与 OTel 生成的追踪相关联
  • 正确捕获异常
  • 跨追踪、指标和日志的通用上下文
  • 支持 slf4j 键值对(“结构化日志”)
  • 自动附加通过 OTel 行李传递的元数据
  • 使用 Elastic 可观测性后端
  • 无论采用何种方法,在 Elastic 中保持一致的数据保真度

博客中涵盖的三种将应用程序或服务日志与 OTel 追踪和行李相关联的方法包括:

  • 使用嵌入的 OpenTelemetry 仪器化库将服务的日志(与追踪和指标一起)输出到 Elastic,通过 OTLP 协议
  • 将服务的日志写入文件,由 OpenTelemetry Collector 抓取,然后通过 OTLP 协议转发到 Elastic
  • 将服务的日志写入文件,由 Elastic Agent(或 Filebeat)抓取,然后通过 Elastic 定义的协议转发到 Elastic

需要注意的是,相比于方法 (2) 和 (3),方法 (1) 不涉及在将服务日志摄取到 Elastic 之前将其写入文件。

OpenTelemetry 是 Elastic 的首选模式

Elastic 最近向 OpenTelemetry(OTel)项目贡献了 Elastic 通用模式(ECS),在 OTel 语义约定框架内实现了安全和可观测性数据的统一数据规范。

ECS 是一个开源规范,由 Elastic 用户社区支持开发,用于定义存储在 Elasticsearch® 中的事件数据的通用字段集。ECS 有助于减少数据重复带来的管理和存储成本,提高运营效率。

类似地,OTel 的语义约定(SemConv)也为各种操作和数据指定了通用名称。使用 OTel SemConv 的好处在于,它为 OTel 用户在代码库、库和平台之间提供了统一的命名方案。

ECS 和 OTel SemConv 的融合将有助于推动 OTel 的采用以及可观测性和安全性领域的持续演进和融合。

Elastic 可观测性 APM 和机器学习功能

Elastic 可观测性平台的所有 APM 功能都可以与 OTel 数据一起使用(在我们的博客 《使用 OpenTelemetry 实现独立性》 中了解更多):

  • 服务地图
  • 服务详情(延迟、吞吐量、失败事务)
  • 服务之间的依赖关系
  • 事务(追踪)
  • 机器学习相关性(特别是延迟)
  • 服务日志
服务
服务

除了 Elastic 的 APM 和统一的遥测数据视图之外,您还可以使用 Elastic 强大的机器学习功能来减少分析和警报,从而帮助减少平均修复时间(MTTR)。以下是我们的一些基于机器学习的 AIOps 功能:

  • 异常检测:Elastic 可观测性在开启时(参见文档),通过持续建模 OpenTelemetry 数据的正常行为,自动检测异常——学习趋势、周期性等。
  • 日志分类:Elastic 还快速识别 OpenTelemetry 日志事件中的模式,以便您更快采取行动。
  • 高延迟或错误事务:Elastic 可观测性的 APM 功能帮助您发现哪些属性导致事务延迟增加,并识别出区分事务失败和成功的最重要属性。
  • 日志峰值检测器:帮助识别 OpenTelemetry 日志速率增加的原因。通过使用分析工作流视图,轻松找到并调查异常峰值的原因。
  • 日志模式分析:帮助您在非结构化日志消息中找到模式,使您更容易检查数据。

Elastic 允许您按自己的节奏迁移到 OTel

虽然 OpenTelemetry 支持多种编程语言,但其主要功能组件(状态)——指标、追踪和日志——仍处于不同阶段。因此,迁移使用 Java、Python 和 JavaScript 编写的应用程序是一个不错的选择,因为这些语言的指标、追踪和日志(适用于 Java)是稳定的。

对于尚未支持的其他语言,您可以轻松使用 Elastic Agents 进行仪器化,从而在混合模式下运行您的全栈可观测性平台(Elastic agents 和 OpenTelemetry agents)。

以下是一个简单的示例:

服务 2
服务 2

上图显示了我们标准的 Elastic Agent 应用程序的一个简单变体,其中一个服务被切换为 OTel——newsletter-otel 服务。但是我们可以根据需要轻松地将每个服务转换为 OTel,具体取决于开发资源的允许情况。

因此,您可以随着特定语言达到稳定状态时,按需迁移到 OpenTelemetry,然后继续将您的应用程序迁移到 OpenTelemetry 代理。

在 Elastic 中集成 Kubernetes 和 OpenTelemetry 视图

Elastic 使用 Elastic Agent 管理您的 Kubernetes 集群,您可以在运行 OpenTelemetry 应用程序的 Kubernetes 集群上使用它。因此,您不仅可以为您的应用程序使用 OpenTelemetry,Elastic 还可以监控相应的 Kubernetes 集群。

Kubernetes 有两种配置:

1. 在 Kubernetes 集群上简单部署 Elastic Agent 守护进程集。 我们在文章 《使用 Elastic 可观测性管理您的 Kubernetes 集群》 中概述了这一点。这也会将 Kubernetes 的指标和日志推送到 Elastic。

elastic 云节点
elastic 云节点

2. 部署 Elastic Agent,不仅包括 Kubernetes 守护进程集,还包括 Elastic 的 APM 集成、安全集成和网络数据包捕获集成,以提供更全面的 Kubernetes 集群可观测性。我们在文章 《使用 Elastic 和 OpenTelemetry 实现现代可观测性和安全性》 中概述了这一配置。

流程图
流程图

这两种 OpenTelemetry 可视化 示例都使用 OpenTelemetry 演示版,在 Elastic 中,我们将 Kubernetes 信息与应用程序绑定,使您能够从 APM 的追踪中查看 Kubernetes 信息。这提供了一种在排除故障时更为集成的方法。

pod 详情
pod 详情

总结

总之,Elastic 的承诺不仅仅是支持 OpenTelemetry。我们致力于确保客户不仅采用 OpenTelemetry,还能成功使用它。通过我们的解决方案、专业知识和资源,我们旨在提升每个企业的可观测性之旅,将数据转化为推动增长和创新的可操作见解。

开发者资源:Elastiflix 应用程序,指导如何在不同语言中使用 OpenTelemetry 进行仪器化_ Python: 自动仪器化, 手动仪器化 Java: 自动仪器化, 手动仪器化 Node.js: 自动仪器化, 手动仪器化 .NET: 自动仪器化, 手动仪器化 Go: 手动仪器化 OpenTelemetry 的最佳实践

通用配置和使用案例资源:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
OpenTelemetry:Go可观测性指南
现代应用程序通常是复杂的分布式系统。调试它们可不是一件有趣的事情:你必须跟踪跨服务的请求,日志会丢失,而且指标通常难以关联。这就像大海捞针——只不过这个草堆正在燃烧,而且针还在移动。这就是 OpenTelemetry (OTel) 可以提供帮助的地方。
云云众生s
2025/02/09
1550
OpenTelemetry:Go可观测性指南
基于OpenTelemetry进行全链路追踪
Hello folks,我是 Luga,今天我们来分享一下与云原生体系有关的话题- 云原生可观测性-OpenTelemetry。 作为一个云原生“核心”标准,OpenTelemetry在观测分布式微服务应用程序和云基础设施的可见性和控制自动化层面具有举足轻重的意义。
Luga Lee
2023/04/28
4K1
基于OpenTelemetry进行全链路追踪
使用 Elastic 3 个步骤实现基于原生 OTel 的 K8s 和应用可观测性
最近,Elastic 发布了其 OpenTelemetry (OTel) 的 Elastic 发行版(EDOT),旨在增强标准 OpenTelemetry 发行版的能力,并改进现有的 Elastic 对 OpenTelemetry 的支持。EDOT 帮助 Elastic 提供了全新的统一 OpenTelemetry 体验。SRE 不再需要通过繁琐的步骤来配置和摄取 OTel 数据到可观测性中,而是可以通过简单的步骤来配置 OTel 收集器和应用程序,并将所有 OTel 数据摄取到 Elastic 中。这一体验的组成部分包括(详细信息请参阅概述博客):
点火三周
2024/12/27
1331
使用 Elastic  3 个步骤实现基于原生 OTel 的 K8s 和应用可观测性
一文搞懂基于 OpenTelemetry 进行 Kubernetes 全链路观测
Hello folks,我是 Luga,今天我们来聊一下云原生生态核心技术—— 可观测性,即 “基于 OpenTelemetry 进行 Kubernetes 全链路观测” 。
Luga Lee
2023/09/25
4K1
一文搞懂基于 OpenTelemetry 进行 Kubernetes 全链路观测
使用 AI 助手、OTel 标准化、持续性能分析和增强日志分析来变革可观测性
Elastic Observability 提供精准的洞察,通过 AI 助手、基于 OpenTelemetry (OTel) 的标准化解决方案、扩展至性能分析功能以及增强的日志分析,加速问题解决。
点火三周
2024/10/14
2040
使用 AI 助手、OTel 标准化、持续性能分析和增强日志分析来变革可观测性
OpenTelemetry Collector 如何扩展可观测性
在KubeCon+CloudNativeCon 2023的两场演讲中展示了可观测性领域中的各种工具和服务。
云云众生s
2024/03/28
2130
OpenTelemetry Collector 如何扩展可观测性
揭谜可观测性 — 深入了解 OpenTelemetry 的顶级使用场景
OpenTelemetry可以用于生成和收集遥测数据,如日志、指标和追踪。使用OpenTelemetry进行可观测性的优点是其开源免费,能够避免您受制于某一供应商。您可以把OpenTelemetry应用于多个场景中。
云云众生s
2024/03/28
1.5K0
揭谜可观测性 — 深入了解 OpenTelemetry 的顶级使用场景
利用本机 OpenTelemetry 发掘无限可能:优先考虑可靠性,而非专有限制
OpenTelemetry (OTel) 正在成为数据摄取的标准,因为它提供了一种与供应商无关的方式来摄取所有遥测信号的数据。Elastic Observability 在 OTel 的发展中处于领先地位,以下是一些重要的公告:
点火三周
2024/12/26
1090
利用本机 OpenTelemetry 发掘无限可能:优先考虑可靠性,而非专有限制
KubeCon上的可观测性和AI:新的连接
New Relic和Splunk在KubeCon + CloudNativeCon北美峰会上宣布了新的基于AI的功能,而OpenTelemetry正准备进入大型机。
云云众生s
2024/12/07
1040
KubeCon上的可观测性和AI:新的连接
使用 OpenTelemetry 提升 Elastic Observability 中的基础设施监控
在 Elastic,我们最近决定全面采用 OpenTelemetry 作为主要的数据收集框架。作为一名可观测性工程师,我坚信供应商中立对于为客户提供最大价值至关重要。通过承诺使用 OpenTelemetry,我们不仅保持技术的前沿,还推动其发展。这项投资使我们处于行业的前沿,倡导更开放和灵活的可观测性方法。
点火三周
2024/07/31
1890
使用 OpenTelemetry 提升 Elastic Observability 中的基础设施监控
使用OpenTelemetry Operator解锁Kubernetes可观测性
随着 Kubernetes 环境规模和复杂性的增长,可观测性对于维持性能和可靠性至关重要。本文探讨了 OpenTelemetry Operator 如何简化遥测数据的收集,从而能够无缝监控 Kubernetes 本身以及在其上运行的应用程序。
云云众生s
2025/03/10
1550
使用OpenTelemetry Operator解锁Kubernetes可观测性
使用 OpenTelemetry 和 SigNoz 实现 LLM 可观测性
在快速发展的大语言模型(LLM)世界中,确保最佳性能和可靠性比以往任何时候都更为关键。这就是'LLM 可观测性'的概念发挥作用的地方。这不仅仅是监控输出;更是深入洞察这些复杂系统内部运作的关键。
云云众生s
2024/03/28
5940
使用 OpenTelemetry 和 SigNoz 实现 LLM 可观测性
OpenTelemetry实践指南:历史、架构与基本概念
这些内容的前提是最好有一些 OpenTelemetry 的背景知识,看起来就不会那么枯燥,为此这篇文章就来做一个入门科普,方便一些对 OpenTelemetry 不是那么熟的朋友快速掌握一些 OpenTelemetry 的基本概念。
crossoverJie
2024/07/07
3800
OpenTelemetry入门看这一篇就够了|公开课
在本文结束时,您将了解如何使用 OpenTelemetry Operator 在应用程序中实现跟踪,而无需更改任何代码。
我是阳明
2023/09/11
17.9K2
OpenTelemetry入门看这一篇就够了|公开课
Elastic APM 和 OpenTelemetry 集成 (使用otel collector)
OpenTelemetry是一个云原生计算基金会 (CNCF) 沙盒项目,它提供了供应商中立的、特定于语言的代理、SDK 和 API,您可以使用它们从所有受监控的应用程序中收集分布式跟踪、指标和日志数据。OpenTelemetry 代理能够自动检测应用程序代码以显示性能数据,这些数据对于帮助您了解服务的健康状况非常重要——为应用程序开发人员提供了选择和选择哪些代理监控其应用程序的灵活性。
点火三周
2022/05/30
4.9K3
云原生环境中可观测性日益增长的重要性
云原生可观测性迎来AI驱动时代!预测性监控、异常检测助力快速定位问题。拥抱OpenTelemetry标准化遥测数据,降低运营成本。DevSecOps融合安全与可观测性,FinOps实现成本优化。未来可观测性将更智能、更安全、更经济!
云云众生s
2025/03/17
780
OpenTelemetry 与 Prometheus - 架构和指标的差异
在不断发展的软件开发世界中,可观察性使软件工程师能够实时洞察复杂的系统。OpenTelemetry 和 Prometheus 是著名的云原生计算基金会 (CNCF) 毕业项目,但用于监控和调试应用程序的可观察性工具不同。
用户5166556
2024/01/10
1.7K0
OpenTelemetry 与 Prometheus - 架构和指标的差异
使用OpenTelemetry监控你的CI/CD流水线
今天的软件比 20 多年前的软件复杂了数个数量级,这给我们调试代码带来了新的挑战。幸运的是,通过在系统中实现可观测性,我们已经相当远程地理解了我们的应用程序正在执行什么以及问题正在发生在哪里。
云云众生s
2024/03/28
1930
使用OpenTelemetry监控你的CI/CD流水线
Elastic APM 和 OpenTelemetry 集成
OpenTelemetry是一个云原生计算基金会 (CNCF) 沙盒项目,它提供了供应商中立的、特定于语言的代理、SDK 和 API,您可以使用它们从所有受监控的应用程序中收集分布式跟踪、指标和日志数据。OpenTelemetry 代理能够自动检测应用程序代码以显示性能数据,这些数据对于帮助您了解服务的健康状况非常重要——为应用程序开发人员提供了选择和选择哪些代理监控其应用程序的灵活性。
点火三周
2022/05/30
4K0
Elastic APM 和 OpenTelemetry 集成
OpenTelemetry 如何与 Kubernetes 协同工作
翻译自 How OpenTelemetry Works with Kubernetes 。
云云众生s
2024/03/27
2580
推荐阅读
相关推荐
OpenTelemetry:Go可观测性指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档