Zipkin 2.23.2连接Elasticsearch 8.2.0报版本不支持错误如何解决
问题现象
Zipkin 2.23.2 对接 Elasticsearch 7.x 版本时配置可正常运行,连接 Elasticsearch 8.2.0 时抛出异常,无法正常存储上报的链路Span数据。
核心报错
2022-06-08 10:58:15.281 DEBUG [/] 1 --- [pool-2-thread-1] z.c.k.KafkaCollectorWorker : Kafka polling returned batch of 1 messages. 2022-06-08 10:58:15.281 DEBUG [/] 1 --- [pool-2-thread-1] z.c.k.KafkaCollector Cannot store spans [62a04135a5f8a5341c7ab0130b77f3ed/1c7ab0130b77f3ed] due to IllegalArgumentException(Elasticsearch versions 5-7.x are supported, was: 8.2) java.lang.IllegalArgumentException: Elasticsearch versions 5-7.x are supported, was: 8.2 at zipkin2.elasticsearch.VersionSpecificTemplates.get(VersionSpecificTemplates.java:227) ~[zipkin-storage-elasticsearch-2.23.2.jar:?] at zipkin2.elasticsearch.ElasticsearchStorage.versionSpecificTemplates(ElasticsearchStorage.java:355) ~[zipkin-storage-elasticsearch-2.23.2.jar:?] at zipkin2.elasticsearch.ElasticsearchStorage.doEnsureIndexTemplates(ElasticsearchStorage.java:337) ~[zipkin-storage-elasticsearch-2.23.2.jar:?] at zipkin2.elasticsearch.ElasticsearchStorage.ensureIndexTemplates(ElasticsearchStorage.java:329) ~[zipkin-storage-elasticsearch-2.23.2.jar:?] at zipkin2.elasticsearch.ElasticsearchStorage.spanConsumer(ElasticsearchStorage.java:248) ~[zipkin-storage-elasticsearch-2.23.2.jar:?] at zipkin2.collector.Collector.store(Collector.java:201) ~[zipkin-collector-2.23.2.jar:?] at zipkin2.collector.Collector$StoreSpans.run(Collector.java:230) ~[zipkin-collector-2.23.2.jar:?] at zipkin2.collector.Collector.accept(Collector.java:136) ~[zipkin-collector-2.23.2.jar:?] at zipkin2.collector.Collector.accept(Collector.java:109) ~[zipkin-collector-2.23.2.jar:?] at zipkin2.collector.Collector.acceptSpans(Collector.java:191) ~[zipkin-collector-2.23.2.jar:?] at zipkin2.collector.Collector.acceptSpans(Collector.java:172) ~[zipkin-collector-2.23.2.jar:?] at zipkin2.collector.kafka.KafkaCollectorWorker.run(KafkaCollectorWorker.java:111) ~[zipkin-collector-kafka-2.23.2.jar:?] at zipkin2.collector.kafka.KafkaCollector$LazyKafkaWorkers.lambda$guardFailures$0(KafkaCollector.java:265) ~[zipkin-collector-kafka-2.23.2.jar:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?] at java.lang.Thread.run(Unknown Source) [?:?]
故障原因
报错核心提示为Elasticsearch versions 5-7.x are supported, was: 8.2,Zipkin 2.23.2 内置的Elasticsearch存储适配模块仅完成了Elasticsearch 5.x-7.x版本的兼容性校验、索引模板适配、API逻辑适配,未覆盖8.x版本的适配逻辑,连接8.x版本时会直接触发版本校验拦截,抛出非法参数异常,导致Span数据无法写入。
解决方法
- 优先选择升级Zipkin至2.24.0及以上版本,官方从2.24.0版本开始正式支持Elasticsearch 8.x,升级后保留原有配置即可正常对接,兼容性和稳定性最优。
- 若暂时无法升级Zipkin,可自行修改源码中
zipkin2.elasticsearch.VersionSpecificTemplates类的版本校验规则,放开8.x版本的拦截,同时适配Elasticsearch 8.x的默认安全配置(SSL、账号密码认证)、API路径变更、索引模板格式要求,重新编译打包后替换原有部署包即可,该方式需要自行维护适配逻辑,存在潜在兼容性风险。 - 若不允许修改Zipkin版本也不做源码适配,可将Elasticsearch降级至7.x系列版本,匹配Zipkin 2.23.2的兼容范围,无需修改Zipkin侧配置即可恢复正常运行。
内容的提问来源于stack exchange,提问作者hamid valizadeh
相关产品推荐
相关产品推荐

