应用可观测性OpenTelemetry简介
- OpenTelmetry遥测方案
- 可观测性三支柱
- 日志 Logs
- 指标
- 跟踪
- 什么是OpenTelemetry
- OpenTelemetry架构和组件
- OpenTelemetry与OpenCensus、OpenTracing是什么关系
OpenTelmetry遥测方案
可观测性三支柱
日志 Logs
日志是特定事件在特定时间点发生的文本记录。生成日志条目的触发器是应用程序代码的一部分,因此当执行相关代码时,系统会重复产生日志条目。日志条目记录了事件发生的时间,并提供了一个载荷,包括描述事件性质、事件上下文以及其他后续分析可能有用的元数据。
根据日志的创建方式、使用的格式化规则以及自动化逻辑处理的难度,日志可以广泛分为以下几类:
- 无结构化日志:包括供人类处理的文本,可能不包含易于机器处理的元数据。通常被认为是记录的最常见方式,不幸的是通常难以解析以进行分析。
- 结构化日志:包括以易于其他代码解析的标准格式组织的数据(例如JSON)。它包括使查询日志更容易(尤其是过滤和分组)的附加元数据。
日志提供了有关应用程序行为的可靠且易于理解的信息源。开发人员在故障排除代码并验证其执行时常依赖于日志。当故障位于整体应用程序的特定组件中时,此数据可能提供了识别系统故障和其他问题根本原因所需的细粒度信息,但它不一定足以理解故障在分布式系统中的起源以及实际产生的副作用。
指标
指标是与时间戳关联的一系列数据点,这导致了“时间序列”通常被认为是“指标”的同义词。数据点的值通常是数字,例如在某个时间段内提供的请求数的计数,但在某些监控系统中,它也可以是字符串(例如,Prometheus的“INFO”指标)或布尔值。
为了减少存储和处理长时间跨度内的指标所需的计算资源量,通常惯例是“聚合”它们的值,例如将指标的粒度从每秒一个数据点减少到一分钟或十分钟内的数据点的平均值、均值和(在某些情况下,百分位数)。由于指标往往包含比日志更不敏感的数据,因此基础设施提供商和第三方服务更常见地提供有关他们代表用户执行的操作的指标,而不是日志。
跟踪
跟踪描述了请求在分布式系统中的整个路径。随着请求进入系统,处理它们的组件创建跨度(spans),这些跨度记录了操作,比如“接收请求XYZ”或“发出数据库查询ABC”,操作开始的时间点以及完成所花费的时间。
跨度根据它们的跟踪标识符进行分组,并链接到它们的前身跨度,有效地创建了跨度的有向无环图,展示了在分布式系统中如何进行请求处理。根据在跟踪中收集的信息的细粒度程度,通常可以一目了然地看到处理一个请求的错误和延迟从何处起源,以及它们如何在分布式系统中传播。跨度通常包括以下数据:
- 跟踪标识符
- 跨度标识符
- 操作的名称
- 开始和结束时间戳
- 以键值格式编码的元数据,包括有关基础设施的信息(例如,哪个容器处理了此请求)等。
- 事件(例如,日志、异常和错误)
跟踪的价值不仅限于故障排除单个请求。例如,通过汇总多个跟踪中的数据,可以生成关于速率、错误和持续时间(RED)等指标的数据,这些指标是站点可靠性工程(SRE)实践中的所谓“黄金信号”的重要组成部分,正如Google最初定义的那样。
什么是OpenTelemetry
OpenTelemetry架构和组件