无法查询到所需的Tracing

问题描述

在服务网格中查询Tracing时,可能会遇到无法获取目标Tracing的情况。

根因分析

1. Tracing采样率配置过低

当Tracing的采样率参数设置过低时,系统只会按比例采集Tracing数据。在请求量不足或低峰期时,可能导致采样数据低于可见阈值。

2. Elasticsearch实时性限制

Elasticsearch索引的默认配置为 "refresh_interval": "10s",这导致数据从内存缓冲刷新到可搜索状态存在10秒的延迟。查询最近生成的Tracing时,可能因数据尚未持久化而出现结果缺失。

该索引配置可以有效降低Elasticsearch的数据合并压力,提高索引速度和首次查询速度,但也在一定程度上降低了数据的实时性。

根因1的解决方案

  • 根据需求适当提高采样率。
  • 使用更丰富的采样方式,如尾部采样(tail sampling)。

根因2的解决方案

通过 jaeger-collector 的启动参数 --es.asm.index-refresh-interval 调整刷新间隔,默认值为 10s

如果该参数值为 "null",则不会对索引的 refresh_interval 进行配置。

注意:设置为 "null" 会影响Elasticsearch的性能和查询速度。