--- title: "如何使用 Logstash 8 连接 Easysearch" date: 2025-01-07 lastmod: 2025-01-07 description: "Logstash 8连接Easysearch时可能出现版本不兼容问题,提供两种解决方法:1) 使用INFINI Gateway代理;2) 升级Easysearch至1.9.0及以上版本并启用兼容参数。两者均需关闭Logstash自动导入模板功能。" tags: ["Easysearch", "Logstash"] summary: "背景 # 很多小伙伴都在使用 Logstash ,随着各家安全扫描、安全策略的加固,不少小伙伴已经开始使用 Logstash 8 了。在使用 Logstash 8 连接 Easysearch 的时候可能会遇到问题,比如下图。 提示连接的不是兼容版本的 Elasticsearch 。 解决方法有两种 # 两种方法对 Logstash 和 Logstash-oss 两种版本都适用。 一、用 INFINI Gateway 代理 Easysearch # 使用此方法, Logstash 连接的是 INFINI Gateway ,由 INFINI Gateway “通过” Logstash 8 的检查。 优点是对 Easysearch 版本无要求。 默认的网关配置要稍作修改。 修改 router.rules 部分 router: - name: my_router default_flow: default_flow tracing_flow: logging_flow rules: - method: - "GET" pattern: - "/" flow: - overwrite_flow - method: - "GET" pattern: - "/_license" flow: - overwrite_license_flow - method: - "*" pattern: - "/_bulk" - "/{any_index}/_bulk" flow: - async_bulk_flow flow 下增加 overwrite_flow 和 overwrite_license_flow - name: overwrite_flow filter: - elasticsearch: elasticsearch: prod max_connection_per_node: 1000 - set_context: context: _ctx." --- ## 背景 很多小伙伴都在使用 Logstash ,随着各家安全扫描、安全策略的加固,不少小伙伴已经开始使用 Logstash 8 了。在使用 Logstash 8 连接 Easysearch 的时候可能会遇到问题,比如下图。 {{% load-img "/img/blog/2024/logstash-8-connect-easysearch/1.png" "" %}} 提示连接的不是兼容版本的 Elasticsearch 。 ## **解决方法有两种** 两种方法对 Logstash 和 Logstash-oss 两种版本都适用。 ### 一、用 INFINI Gateway 代理 Easysearch 使用此方法, Logstash 连接的是 INFINI Gateway ,由 INFINI Gateway “通过” Logstash 8 的检查。 优点是对 Easysearch 版本无要求。 默认的网关配置要稍作修改。 1. 修改 router.rules 部分 ```plain router: - name: my_router default_flow: default_flow tracing_flow: logging_flow rules: - method: - "GET" pattern: - "/" flow: - overwrite_flow - method: - "GET" pattern: - "/_license" flow: - overwrite_license_flow - method: - "*" pattern: - "/_bulk" - "/{any_index}/_bulk" flow: - async_bulk_flow ``` 2. flow 下增加 overwrite_flow 和 overwrite_license_flow ```plain - name: overwrite_flow filter: - elasticsearch: elasticsearch: prod max_connection_per_node: 1000 - set_context: context: _ctx.response.body_json.version.number: '"8.14.3"' _ctx.response.body_json.version.build_flavor: '"default"' _ctx.response.body_json.tagline: '"You Know, for Search"' _ctx.response.body_json.minimum_wire_compatibility_version: '"7.17.0"' _ctx.response.body_json.minimum_index_compatibility_version: '"7.0.0"' - set_response_header: headers: - X-elastic-product -> Elasticsearch - name: overwrite_license_flow filter: - echo: message: '{"license": "ok"}' - set_context: context: _ctx.response.code: 200 _ctx.response.body_json.license.status: '"active"' _ctx.response.body_json.license.type: '"basic"' _ctx.response.body_json.license.issuer: '"elasticsearch"' _ctx.response.body_json.license.issue_date: '"2024-09-12T13:10:55.848Z"' _ctx.response.body_json.license.start_date_in_millis: "-1" - set_response_header: headers: - X-elastic-product -> Elasticsearch ``` 记住 Logstash 要填写 INFINI Gateway 的地址和端口,并关闭自动导入模板功能。 {{% load-img "/img/blog/2024/logstash-8-connect-easysearch/2.png" "" %}} 连接成功后,如下图。 {{% load-img "/img/blog/2024/logstash-8-connect-easysearch/3.png" "" %}} ### 二、使用 Easysearch 1.9.0 及以上版本 Easysearch 1.9.0 已经增加了适配 Logstash8.x 的请求 header,因此使用 Easysearch 1.9.0 的小伙伴,只需打开对应的设置就可以了。 {{% load-img "/img/blog/2024/logstash-8-connect-easysearch/4.png" "" %}} 在 easysearch.yml 中,打开下面的 elastic 的兼容参数(默认已注释): ```plain elasticsearch.api_compatibility: true elasticsearch.api_compatibility_version: "8.9.0" ``` 注意 Logstash 配置中关闭自动导入模板功能。 {{% load-img "/img/blog/2024/logstash-8-connect-easysearch/5.png" "" %}} ```plain output { elasticsearch { hosts => ["http://127.0.0.1:9200"] index => "logstash8" manage_template => false } } ``` 启动 Logstash 连接到 easysearch 后, Logstash 日志会输出检测到版本 8.9.0 。 {{% load-img "/img/blog/2024/logstash-8-connect-easysearch/6.png" "" %}} 最新 Easysearch 下载地址:[下载](https://infinilabs.cn/download/) 好了,还有其他问题的小伙伴,欢迎加我微信沟通。 {{% load-img "/img/blog/banner/about_yangf.png" "" %}}