我们不仅可以使用任何我们想要的编程语言,还可以挑选任何兼容的存储后端,从而避免被绑定在特定的商业供应商上面 。
开发人员可以检测他们的应用程序,而无需知道数据将存储在哪里 。
OpenTelemetry 为我们提供了创建跟踪数据的工具,为了获取这些数据,我们首先需要检测应用程序来收集数据 。为此,我们需要使用 OpenTelemetry SDK 。
检测(埋点)应用程序的检测数据可以使用自动或手动(或混合)方式生成 。要使用 OpenTelemetry 检测应用程序,可以前往访问 OpenTelemetry 存储库,选择适用于的应用程序的语言,然后按照说明进行操作 。
自动检测使用自动检测是一个很好的方式,因为它简单、容易,不需要进行很多代码更改 。
如果你没有必要的知识(或时间)来创建适合你应用程序量身的追踪代码,那么这种方法就非常合适 。
当使用自动检测时,将创建一组预定义的 spans,并填充相关属性 。
手动检测手动检测是指为应用程序编写特定的埋点代码 。这是向应用程序添加可观测性代码的过程 。这样做可以更有效地满足你的需求,因为可以自己添加属性和事件 。这样做的缺点是需要导入库并自己完成所有工作 。

文章插图
传播器可以将 W3C tracecontext、baggage 和b3 等传播器(Propagators)添加到配置中 。
不同的传播器定义特定的行为规范,以便跨进程边界传播带上上下文数据 。
- Trace Context:用于在 HTTP headers 中编码 trace 数据,以便在不同的服务间传递这些数据 。
- Baggage:用于在 span 之间传递键值对数据,例如用户 ID、请求 ID 等 。
- B3:用于在 HTTP headers 中编码 trace 数据,以便在不同的服务间传递这些数据(主要用于 Zipkin 或其兼容的系统) 。
可以告诉 OpenTelemetry 根据要发送的追踪/流量的数量执行采样 。(比如只采样 10% 的追踪数据) 。

文章插图
两种常见的采样技术是头采样和尾采样 。
OpenTelemetry 协议(OTLP)OpenTelemetry 协议(OTLP)规范描述了遥测数据在遥测源、收集器和遥测后端之间的编码、传输和传递机制 。
每种语言的 SDK 都提供了一个 OTLP 导出器,可以配置该导出器来通过 OTLP 导出数据 。然后,OpenTelemetry SDK 会将事件转换为 OTLP 数据 。
OTLP 是代理(配置为导出器)和收集器(配置为接收器)之间的通信 。
OpenTelemetry Collectors应用程序的遥测数据可以发送到 OpenTelemetry Collectors 收集器 。

文章插图
收集器是 OpenTelemetry 的一个组件,它接收遥测数据(span、metrics、logs 等),处理(预处理数据)并导出数据(将其发送到想要的通信后端) 。

文章插图
Receivers接收器 Receivers 是数据进入收集器的方式,可以是推送或拉取 。OpenTelemetry 收集器可以以多种格式接收遥测数据 。

文章插图
以下是接收器在端口 4317(gRPC) 和 4318(http) 上接受 OTLP 数据的配置示例:
otlp:protocols:http:grpc:endpoint: "0.0.0.0:4317"同样下面的示例,它可以以 Jaeger Thrift HTTP 协议方式接收遥测数据 。jaeger: # Jaeger 协议接收器protocols: # 定义接收器支持的协议thrift_http: # 通过 Jaeger Thrift HTTP 协议接收数据endpoint: "0.0.0.0:14278"Processors一旦接收到数据,收集器就可以处理数据 。处理器在接收和导出之间处理数据 。处理器是可选的,但有些是推荐的 。比如 batch 处理器是非常推荐的 。批处理器接收跨度、指标或日志,并将它们放入批次中 。批处理有助于更好地压缩数据,减少传输数据所需的传出连接数量 。该处理器支持基于大小和时间的批处理 。
processors:batch:需要注意的是配置处理器并不会启用它 。需要通过 service 部分的 pipelines 启用 。service:pipelines:traces:receivers: [jaeger]processors: [batch]exporters: [zipkin]
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 玻璃种漂彩小葫芦——翡翠入门的首选
- K8S 入门到实战--部署应用到 K8S
- Java 应用通过 OpenTelemetry API 实现手动埋点
- 法国女人为什么不会胖?看看这4个好习惯,或许值得借鉴学习
- Python爬虫如何快速入门学习?
- 还不会主动向前端通过SSE推送消息? 看这篇就会了![Delphi版]
- 谁说下属“整”不了领导?看看这些操作,够阴够狠!
- Bash 脚本编程入门
- Django 入门:构建Python Web应用的全面指南
- 魔方新手入门玩法视频 魔方新手入门玩法
