一、定义
wiki百科的定义
In software engineering, more specifically in distributed computing,
observability is the ability to collect data about programs’
execution, modules’ internal states, and the communication among
components.[1][2] To improve observability, software engineers use a
wide range of logging and tracing techniques to gather telemetry
information, and tools to analyze and use it. Observability is
foundational to site reliability engineering, as it is the first step
in triaging a service outage. One of the goals of observability is to
minimize the amount of prior knowledge needed to debug an issue.
在软件工程中,具体地尤其在分布式系统中,可观测性是指收集程序执行、模块内部状态和组件间通讯的相关数据的能力。
Observability relies on three main types of telemetry data: metrics, logs and traces
可观测性依赖于三种观测数据: 指标,日志和链路追踪。
框架标准
OpenTelemetry,也称为 OTel,是一个与供应商无关的开源可观测性框架,用于检测、生成、收集和导出遥测数据,如链路追踪(traces)、指标(metrics)和日志(logs)。
作为一个行业标准,OpenTelemetry 得到了40多个可观测性供应商的支持,被许多 库、服务和应用程序集成,并被众多终端用户采用。
协议
开放遥测协议(OTLP)规范描述了遥测源、中间节点(如采集器和遥测后端)之间的遥测数据编码、传输和交付机制。
OTLP 是在 OpenTelemetry 项目范围内设计的通用遥测数据传输协议。
二、Tracing
1. 框架标准
micrometer tracing
Micrometer Tracing为最流行的链路追踪系统库提供了一个简单的外观,对于框架层的服务来说引入这样的门面是非常实用的,对于第三方链路追踪系统只需要根据内部规范实现桥接的代码即可,无需让框架层耦合。
2. 常见的tracers:
zipkin
Zipkin是一个分布式跟踪系统, 2012年 Twitter 开源了 Zipkin。它有助于收集解决服务架构中的延迟问题所需的计时数据。功能包括收集和查找此数据。
Jaeger
2015年 Uber 发布了 Jaeger 的开源版本。目前 Zipkin 和 Jaeger 仍然是最流行的分布式链路追踪工具之一。
pinpoint
Pinpoint 是一个来自韩国的APM(Application performance management)工具,相对于其他APM工具(例如ZipKin)有一个强大的优势,那就是应用程序无需修改一行代码就能直接使用,例如Java程序直接使用Pinpoint提供的Java agent(jar包)就能使用。
Skywalking
国产的优秀APM组件,是一个对JAVA分布式应用程序集群的业务运行情况进行追踪、告警和分析的系统。
三、 tracking vs tracing
埋点(tracking)可以说是tracing的一种在业务分析上的具体应用。埋点的目的是为了对用户或者系统行为进行快照记录,方便我们在进行数据或者业务分析时对这些行为回放。埋点可以依托于tracing来设计。