LabHub
学习 学习路径 课程

OTCA — OpenTelemetry 认证助理

亲眼看追踪接上,又断开

在 LabHub 中继续学习

本实验在真实的 OpenTelemetry 中运行

VM 中实际运行着OTel Collector、Jaeger 以及两个相互调用的服务。 请求会来回传递,生成 span,经过 Collector 后存入 Jaeger。

前一个模块的跟踪实验运行在模拟集群中。由于没有实际请求传递, **传播中断的现象本身不会发生。**尽管这正是 OTCA 最常考查的部分。

**无需安装 SDK。**服务使用标准库直接生成 OTLP/HTTP。 由于 OTCA 考查的是 traceparent 的结构和 OTLP 的形态, 手动创建反而更贴近考试范围。

首次启动大约需要 4 分钟。

已准备的内容

frontend   http://127.0.0.1:30080   backend 를 부릅니다
backend    obs 네임스페이스 안
컬렉터     설정은 /etc/otelcol/config.yaml
Jaeger     http://127.0.0.1:30686
질의 도구  traces frontend

步骤

  1. 发出一个请求,将span 连续相接的情况记录到 /root/otca/flow.txt
  2. 拆解 traceparent,记录到 /root/otca/traceparent.txt
  3. 确认通过 OTLP 发送的内容,记录到 /root/otca/otlp.txt
  4. 在 Collector 管道中加入 Processor,并将顺序就是处理顺序这一点记录到 /root/otca/pipeline.txt
  5. 中断传播,将 trace 分裂成两条的情况记录到 /root/otca/broken.txt
  6. 将资源属性和语义约定记录到 /root/otca/semconv.txt
  7. 应用采样,并将哪些内容被丢弃记录到 /root/otca/sampling.txt
  8. /root/otca/report.md 中写入 services=broken_traces=pipeline_order= 三行及说明。

参考

一个请求会留下什么

发出一个请求,将span 连续相接的情况记录到 /root/otca/flow.txt

请比较两个服务响应中的 traceId

一行请求头的结构

拆解 traceparent,记录到 /root/otca/traceparent.txt

它由 00-<32자리>-<16자리>-<2자리> 四部分组成。

OTLP 是协议,而不是存储

确认通过 OTLP 发送的内容,记录到 /root/otca/otlp.txt

Collector 的 debug Exporter 日志中会记录收到的 span 数量。

Processor 顺序就是处理顺序

在 Collector 管道中加入 Processor,并将顺序就是处理顺序这一点记录到 /root/otca/pipeline.txt

memory_limiter 放在最前面,batch 放在最后。请思考为什么。

传播中断时会看到什么

中断传播,将 trace 分裂成两条的情况记录到 /root/otca/broken.txt

两个 span 都会保留,只是不会连接成一条 trace。

为什么不能随意命名

将资源属性和语义约定记录到 /root/otca/semconv.txt

service.name 是资源属性,http.request.method 是 span 属性。

应该丢弃什么

应用采样,并将哪些内容被丢弃记录到 /root/otca/sampling.txt

头部采样在最开始决定,无法撤销。尾部采样先收集全部内容,再在之后选择。

学到了什么

/root/otca/report.md 中写入 services=broken_traces=pipeline_order= 三行及说明。

写入 services=broken_traces=pipeline_order= 三行及说明。