fluidd elasticsearch 插件 - 客户端无法验证服务器是否为 Elasticsearch

rug*_*312 5 elasticsearch fluentd efk

我想将一些 nginx 日志从 Fluentd 发送到 Elasticsearch ,但是,由于以下错误消息,Fluentd 无法启动:

客户端无法验证服务器是否为 Elasticsearch。如果服务器运行不受支持的产品,某些功能可能不兼容。

[error]: #0 意外错误 error_class=Elasticsearch::UnsupportedProductError error="客户端注意到服务器不是 Elasticsearch,我们不支持这个未知产品。"

在此输入图像描述

这是我的流利配置:

<source>
  @type tail  
    <parse>    
      @type nginx 
    </parse>  
  path /tmp/lab4/nginx/access.log  
  pos_file /tmp/lab4/nginx/access.po
  tag nginx.access
</source>

<match nginx.**>
 @type elasticsearch
 scheme http
 host 192.168.1.154 
 port 9200 
 with_transporter_log true
 @log_level debug
</match>
Run Code Online (Sandbox Code Playgroud)

如果我执行curl http://192.168.1.154:9200,我可以看到Elasticsearch 的响应以及系统版本和其他信息。

作为参考,我正在使用:

  • fluidd 版本 1.14.5
  • fluid 弹性搜索插件 5.2.0
  • 弹性搜索 7.12.0

知道我做错了什么吗?

小智 6

对于在 docker 中遇到问题的任何人,以下步骤为我解决了问题:

  • 需要根据所使用的elasticsearch版本使用“elasticsearch gem”构建fleutd,如下所示: Dockerfile:
FROM fluent/fluentd
RUN gem install elasticsearch -v 7.6
RUN gem install fluent-plugin-elasticsearch
RUN gem install fluent-plugin-rewrite-tag-filter
RUN gem install fluent-plugin-multi-format-parser
Run Code Online (Sandbox Code Playgroud)
  • 在 Fluent.conf 中 es 的 out 插件中提及 es 版本:
@type elasticsearch
host 10.10.13.21
port 9200
verify_es_version_at_startup false
default_elasticsearch_version 7
Run Code Online (Sandbox Code Playgroud)


Aze*_*eem 4

在该快照中,elasticsearch客户端 gem 版本(由fluent-plugin-elasticsearch)是8.0.0。您正在使用 ElasticSearch v7.12.0,该版本被评估为不受支持

请参阅https://github.com/elastic/elasticsearch-ruby/blob/ce84322759ff494764bbd096922faff998342197/elasticsearch/lib/elasticsearch.rb#L110-L119

因此,您似乎需要安装等效的受支持版本。