亲眼看追踪接上,又断开
本实验在真实的 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
步骤
- 发出一个请求,将span 连续相接的情况记录到
/root/otca/flow.txt。 - 拆解
traceparent,记录到/root/otca/traceparent.txt。 - 确认通过 OTLP 发送的内容,记录到
/root/otca/otlp.txt。 - 在 Collector 管道中加入 Processor,并将顺序就是处理顺序这一点记录到
/root/otca/pipeline.txt。 - 中断传播,将 trace 分裂成两条的情况记录到
/root/otca/broken.txt。 - 将资源属性和语义约定记录到
/root/otca/semconv.txt。 - 应用采样,并将哪些内容被丢弃记录到
/root/otca/sampling.txt。 - 在
/root/otca/report.md中写入services=、broken_traces=、pipeline_order=三行及说明。
参考
- 使用
traces frontend查看近期 trace。请使用| jq进行过滤。 - 修改 Collector 配置后,使用
apply_col应用。Collector 没有重新读取配置的方法,因此会重新创建 Pod。 - 常见错误:span 已经到达,却未在界面中显示。**请检查时间戳。**如果填入很小的数字,它会被索引到 1970 年。
- 常见错误:查询 Jaeger API 时不提供时间范围。这样会返回空结果。
一个请求会留下什么
发出一个请求,将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= 三行及说明。