通过zipkin服务中的api查询不到elasticsearch中的数据分析

场景

zipkin链路日志在elasticsearch中正常生成链路数据,当数据通过es查询traceId数据是存在的,但是调用zipkin的api却查询不到当天数据之前的数据。

 当天的数据再es中是存在的

 当天之前的数据再es中也是存在的

以上说明zipkin在es中数据是正常写入的是正常。

问题一:为何调用zipkin的接口查询不到当天之前的数据如下

其中gisq_request_id=fe88132e-1190-4e36-b0b2-286bceb39df1是当天之前的id. 

 注:lookback参数是zipkin中api携带的参数默认查询的是当前数据lookback默认是86400000,如果要查询之前的数据需要86400000*nday,我这里查询的是之前10天的数据

其中gisq_request_id=973fa4e7-91e2-4d30-82dd-ad6770144897是当天的id.

 这就很奇怪了,数据在elasticsearch中是存在的,为什么调用zipkin的api查询不到呢?????

问题分析:

   zipkin中api调用异常的索引信息

zipkin中api调用正常的索引信息

数据生成结构分析

异常情况下数据生成的结构中包含有_q字段,因为映射模板mapping中没有排除了该字段

 正常数据清空下_source下面没有_q这个字段,因为映射模板mapping中排除了该字段。

另外异常调用时zipkin/api/v2/traces?annotationQuery=gisq_request_id=fe88132e-1190-4e36-b0b2-286bceb39df1&lookback=864000000&limit=100时,后端报了空指针。
提示的是json解析失败

问题原因:

zipkin索引模板可能被其它人动过,

可能是通过es命令删除索引模板

也可能是通过图形化界面删了当前的zipkin索引,代码中重新创建的索引数据

场景复现:

通过zipkin创建索引后,然后通过图形化界面将当天的索引数据删除掉

删除后再次生成的索引的shard变成0个,未删除之前默认创建索引有5个shard

猜你喜欢

转载自blog.csdn.net/qq_38423256/article/details/128900936