在服务网格中查询跟踪信息时,您可能会遇到无法获取目标跟踪的情况。
当跟踪的采样率参数设置过低时,系统将仅按比例收集跟踪数据。在请求量不足或低峰期,这可能导致采样的数据低于可见性阈值。
Elasticsearch 索引的默认配置是"refresh_interval": "10s"
,这导致数据在从内存缓冲区刷新到可搜索状态之前存在 10 秒的延迟。当查询最近生成的跟踪信息时,结果可能会缺失,因为数据尚未持久化。
此索引配置可以有效减少 Elasticsearch 上的数据合并压力,提高索引速度和首次查询速度,但在一定程度上也降低了数据的实时性。
在进行跟踪查询时,如果对 Span kind
参数背后的技术原理理解不透彻,可能导致没有数据返回。因此,不建议随意使用该参数。特别是同时指定 Client
和 Server
时,可能会导致查询结果为空。
Span kind
设置为Root Span
,同时指定Client
和Server
在这种情况下,查询将返回无数据。原因是当客户和服务器都由 OTel Agent 管理时,跟踪的根 span 通常位于客户端,服务器数据将无法检索。为了解决此问题,请删除 Server
条件或避免选择 Root Span
。
Span kind
设置为Service Entry Span
,同时指定Client
和Server
同样,这个查询也将返回无数据。原因是当客户和服务器都有 Sidecar 注入时,Service Entry Span
指的是服务器接收到的第一个请求,但跟踪数据存储在客户端。为了解决此问题,请删除 Client
条件或避免选择 Service Entry Span
。
通过 jaeger-collector
的 --es.asm.index-refresh-interval
启动参数调整刷新间隔,默认值为 10s
。
如果该参数的值为"null"
,则不会对索引的 refresh_interval
进行配置。
注意:设置为 "null"
将影响 Elasticsearch 的性能和查询速度。
在使用 Span kind
参数进行跟踪查询时:
Client
和 Server
条件Root Span
查询:
Server
条件Root Span
Service Entry Span
查询:
Client
条件Service Entry Span