监控数据是指系统及其行为所发出的数据,包括追踪、指标和日志。
追踪记录了请求(无论是来自应用程序还是最终用户)在多服务架构(例如微服务和无服务器应用程序)中传播的路径。
一个追踪由一个或多个跨度组成。第一个跨度被称为根跨度,它表示请求从开始到结束的整个生命周期。根跨度下的子跨度提供了关于请求处理过程的更多详细上下文信息(或构成请求的各个步骤)。
如果没有追踪,在分布式系统中识别性能问题的根本原因将相当困难。追踪通过分解请求在系统中的流动,使得调试和理解分布式系统变得更加容易。
跨度是分布式追踪的基本构建块,代表一个特定的操作或工作单元。每个跨度记录请求中的特定操作,有助于我们理解操作执行期间发生的细节。
一个跨度包含一个名称、与时间相关的数据、结构化的日志消息以及其他元数据(属性),这些共同描绘了操作的完整图景。
根据跨度在追踪中的位置,可以区分两种特殊类型的跨度:
在分布式系统中,跨度标签是附加到每个跨度上的键值对信息,提供操作细节、资源标识符、性能指标和错误信息。它们为理解和分析服务性能和行为提供必要的上下文,是调试和优化分布式应用程序的重要工具。
操作名称是跨度的一个属性,指定跨度内的具体操作名称。这个名称通常用于识别跨度所代表的特定业务逻辑或系统调用,例如 HTTP 请求的方法加上 URL 路径、数据库查询的简要描述,或内部函数调用的名称。
Jaeger是一个开源的分布式追踪系统。它旨在基于微服务架构监控和诊断复杂的分布式系统,帮助开发人员可视化请求追踪、分析性能瓶颈和排查异常。Jaeger 兼容OpenTracing标准(现为 OpenTelemetry 的一部分),支持多种编程语言和存储后端,是云原生领域的一个关键可观察性工具。
OpenTelemetry Collector 是一个与供应商无关的代理,可以接收、处理和导出监控数据。它支持以各种格式接收监控数据(如 OTLP、Jaeger、Prometheus 以及许多商业/专有工具),并将这些数据发送到一个或多个后端。它还支持在导出之前处理和过滤监控数据。
有关更多信息,请参见 Collector。