调用链数据不完整
目录
问题描述
调用链查询结果出现以下数据不完整现象:
- 近期(30分钟内)查询结果缺失部分跨度。
- 超过 1 小时的调用链出现断链现象。
根因分析
1. 数据持久化延迟
Elasticsearch 的写入过程需要经过内存缓冲区(buffer)→ 操作日志(translog)→ 段文件(segment)的处理流程,最新写入的数据可能存在可见性延迟。
2. 时间范围限制
默认情况下,jaeger-query 查询跨度对应的调用链时,时间范围会在跨度的起始时间前后各延伸一个小时。
例如,某个跨度的起始时间为 08:12:30,结束时间为 08:12:32,则查询该调用链的时间范围为 07:12:30 到 09:12:32。
因此,若调用链跨度超过 1 小时,通过此跨度进行查询时,可能无法获得完整的调用链。
根因1的解决方案
稍作等待并刷新页面重新尝试查询。
根因2的解决方案
如果您环境中的调用链跨度较长,可以通过 jaeger-query 的 --es.asm.span-trace-query-time-adjustment-hours 启动参数来调整单个调用链的查询时间范围。
该参数默认值为 1 小时,您可以根据需求适当增大该值。