共计 2016 个字符,预计需要花费 6 分钟才能阅读完成。
毫无疑问,在过来几年里,你可能曾经屡次听到过可观测性这个词。对于很多人来说,很难了解这个词的真正含意。对许多人来说,他们谬误地将其等同于 ” 监控 ”。尽管可观测性的基本定义以及它所蕴含的所有都不在本系列博文的探讨范畴之内,但我强烈建议您购买一本由 Charity Majors (twitter)、Liz Fong-Jones (twitter) 和 George Miranda (twitter) 合著的《可观测性工程》(Observability Engineering)一书。
不过,本系列博文将介绍应用 OpenTelemetry 实现可观测性的残缺示例和阐明,OpenTelemetry 是 CNCF 的一个我的项目,致力于让可观测性变得更简略。
什么是 OpenTelemetry?
OpenTelemetry 是几年前 OpenCensus 和 OpenTracing 合并的产物。从那时起,OpenTelemetry(也简称为 “OTel”)就很好地将本人定位为在古代软件世界中获取遥测数据且厂商中立的办法。很多人会说 OpenTelemetry 是可观测性的将来,依据我的教训和接触,我偏向于批准这种说法。
OTel 组件
在 OpenTelemetry 中典型的 OTel 计划能够被细分为几个逻辑组件,他们包含 APIs, SDKs, 收集器.
APIs and SDKs
在开始应用 OpenTelemetry 时,首先要理解的重要事项之一是该我的项目如何辨别 API 和 SDK。简而言之,API 负责收集遥测数据及其中的所有数据,而 SDK 则负责将这些数据从以后被观测的过程中提取进去,转给另一个实体进行剖析。随着咱们对这个示例的深入研究,这一点将变得更有意义,但值得了解的是 API 和 SDK 之间的职责拆散。
因为它们是关注点拆散的,通过什么是观测(API)与如何解决(SDK)来辨别它们。它们反对多种编程语言,包含(但不限于):Go、Python、Java、Ruby、JavaScript、.NET 等!无关语言反对的更多信息,请查看埋点文档。咱们将在稍后的博文中介绍埋点常识。
Collector
SDK 的职责之一就是从正在被观测的过程中获取数据,然而须要一个中央来汇总接管这些数据。咱们将这个独立的过程称为收集器。
收集器的整个工作可分为三个不同阶段:
- 接管遥测数据
- 解决遥测数据
- 导出遥测数据
收集器是一个解决遥测数据的 ETL(Extract, Transform, Load)管道。尽管不肯定要应用 OTel 解决方案,不过想要找个一个罕用且好用的收集器例子,举荐用 OpenTelemetry Collector,它将是本系列的重点,并将在前面的博文中具体介绍。
Traces, metrics, and logs
在链路追踪和可观测性中,有三方面信息:链路追踪,指标数据和服务日志。尽管咱们长期以来始终应用服务日志和指标数据,然而许多人认为链路追踪才是真正解锁可观测性能力的要害。
通过收集具备高基数(基数是指某个属性或维度的惟一值的数量,高基数数据能够认为是提供更全面和详尽的上下文信息)特点的链路追踪数据,咱们就具备了不必批改代码也可能疾速解答局部问题的能力。剖析数据是能够有多种手段,例如说咱们能够比照异样数据和惯例数据等。
本系列博文将会专一于解说链路追踪,如果你想进一步理解可观测性,以及三种信息之间差别能够参阅前文提到的《可观测性工程》一书。
示例利用
本系列博文的次要工作是介绍如何应用 OpenTelemetry 来让软件系统具备可观测性。为此,我创立了一个示例应用程序,并在后续文章中阐明在利用过程中的一些要点。该应用程序的设计可参见下图:
这是一个购物车应用程序示例,按功能模块分成了不同的 web 服务:
- 购物车 – 解决用户购物车数据申请的服务(用 Go 语言编写)
- 用户服务 – 解决来自购物车服务的用户验证和查问申请(用 Go 语言编写)
- 定价服务 – 为产品提供更新定价信息服务(用 Python 编写)
后端依赖 MySQL 对数据进行长久化存储。
应用 OpenTelemetry 的 API 和 SDK 进行埋点。遥测数据是通过 OpenTelemetry Collector 向 Jaeger 发送数据来实现的。
上面是应用 OpenTelemetry 采集并展现分布式链路跟踪数据在 Jaeger 中的示例:
所有代码和构建运行阐明都能够在 GitHub 上找到:trstringer/otel-shopping-cart。
总结
心愿通过下面介绍让您当初对 OpenTelemetry 曾经有所理解,晓得它由哪些组件形成,以及咱们将如何在本系列的其余部分深刻施行。这仅仅是个开始!请持续关注本系列博文的其余部分,理解如何应用 OpenTelemetry 来让应用程序具备可观测性。
本文翻译自:https://trstringer.com/otel-part1-intro/
扩大浏览:
- 方法论:面向故障解决的可观测性体系建设
- 好工具:FlashDuty – 一站式告警解决平台:告警降噪、排班 OnCall