当前位置: 首页 > 知识库问答 >
问题:

logstash无法成功将数据发送到外部弹性搜索

谯振国
2023-03-14

这是logstash.err的错误:

连接失败:在/opt/logstash/vendor/bundle/jruby/1.9/gems/Faraday-0.9.0/lib/Faraday/adapter/net_http调用文件结束。rb:44 build_response at/opt/logstash/vendor/bundle/jruby/1.9/gems/faraday-0.9.0/lib/faraday/rack_builder。rb:139 run_请求位于/opt/logstash/vendor/bundle/jruby/1.9/gems/faraday-0.9.0/lib/faraday/connection。rb:377在/opt/logstash/vendor/bundle/jruby/1.9/gems/elasticsearch-transport-1.0.1/lib/elasticsearch/transport/transport/http/faraday执行_请求。rb:24拨打org/jruby/RubyProc。java:271在/opt/logstash/vendor/bundle/jruby/1.9/gems/elasticsearch-transport-1.0.1/lib/elasticsearch/transport/transport/base执行_请求。rb:187在/opt/logstash/vendor/bundle/jruby/1.9/gems/elasticsearch-transport-1.0.1/lib/elasticsearch/transport/transport/http/faraday执行_请求。rb:20在/opt/logstash/vendor/bundle/jruby/1.9/gems/elasticsearch-transport-1.0.1/lib/elasticsearch/transport/client执行_请求。rb:102在/opt/logstash/vendor/bundle/jruby/1.9/gems/elasticsearch-api-1.0.1/lib/elasticsearch/api/namespace/common执行_请求。rb:21 get_模板位于/opt/logstash/vendor/bundle/jruby/1.9/gems/elasticsearch-api-1.0.1/lib/elasticsearch/api/actions/index/get_模板。rb:24个模板_存在吗?at/opt/logstash/lib/logstash/outputs/elasticsearch/protocol。rb:132模板安装在/opt/logstash/lib/logstash/outputs/elasticsearch/protocol。rb:21寄存器位于/opt/logstash/lib/logstash/outputs/elasticsearch。rb:259分别位于org/jruby/RubyArray。java:1613 outputworker位于/opt/logstash/lib/logstash/pipeline。rb:220个start_输出位于/opt/logstash/lib/logstash/pipeline。rb:152

这是我的输出配置:

output {
        elasticsearch { 
            host => "X.X.X.X"
            port => "9300"
            protocol => "http"
            cluster => "elasticsearch_david"
        }   
    }

没有连接问题,有什么想法吗?

tcpdump的进一步调查得出:

GET /_template/logstash HTTP/1.1
User-Agent: Faraday v0.9.0
Accept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept: */*
Connection: close

共有2个答案

施权
2023-03-14

这是由于糟糕的配置:通过删除协议和端口来解决

output {
    elasticsearch { 
    host => "X.X.X.X"
    cluster => "elasticsearch_david"
} 
王云
2023-03-14

问题在于端口和协议不匹配:

output {
        elasticsearch { 
            host => "X.X.X.X"
            port => "9300"
            protocol => "http"
            cluster => "elasticsearch_david"
        }   
    }

您将协议设置为“http”,这将需要端口9200(ES用于http请求的默认端口),但将端口设置为9300,这是用于集群间通信的端口,通常与“节点”协议一起使用。

不幸的是,关于协议的默认设置,文档中存在矛盾:

协议

Value can be any of: "node", "transport", "http"
There is no default value for this setting.

选择用于与Elasticsearch对话的协议。

“节点”协议将作为普通的Elasticsearch节点连接到集群(但不会存储数据)。这允许您使用多播发现等东西。如果您使用节点协议,则必须允许在端口9300(或您配置的任何端口)上进行双向通信。

“传输”协议将连接到您指定的主机,并且不会在Elasticsearch集群中显示为“节点”。这在无法允许从Elasticsearch集群向外连接到此Logstash服务器的情况下非常有用。

“http”协议将使用Elasticsearch REST/http接口与Elasticsearch对话。

所有协议在与Elasticsearch交谈时都将使用批量请求。

java/jruby下的默认协议设置是“节点”。非java rubies上的默认协议是“http”

你最好的选择是根据你想做的事情将协议设置为“节点”、“http”或“传输”之一,并让logstash为你设置合适的端口:

output {
    elasticsearch { 
    host => "X.X.X.X"
    protocol => "http"
    cluster => "elasticsearch_david"
} 

看见http://logstash.net/docs/1.4.1/outputs/elasticsearch#protocol

 类似资料:
  • 我无法用logstash将数据加载到localhost上的弹性搜索节点...我想让logstash读取csv文件并将这些数据加载到弹性搜索。但是什么都不起作用,我只能读取我手动添加到弹性搜索中的数据,看起来logstash什么都不做。 我的logstash配置是: 我的csv文件是: “MyIndex”索引上没有新的内容出现!但我不知道为什么... 将logstash配置文件从不获取文件的“*.c

  • 我试图使用docker容器创建一个弹性搜索安装。我只使用Elastic.io提供者的映像。 我不知道为什么,但logstash告诉我,他无法连接到带有此错误消息的ElasticSearch实例: 如果logstash真的得到了我的设置,有人能告诉我为什么他使用了一个坏的主机事件吗?

  • 我想将json文件数据导入弹性搜索。这是我的logstash配置文件- 输入{file{type= 输出{stdout{codec= 这是我的json文件--- {"水果":"苹果","大小":"小","颜色":"红色" }, { "水果":"木瓜","大小":"大","颜色":"黄色"测试":"甜"} 我使用这个命令执行了上面的配置文件---- 但我在弹性搜索索引中得到了如下数据-- 请帮我获得

  • 我开始构建一些非常简单的应用程序,我想我已经掌握了如何在android Studio中创建基础知识。我一辈子都搞不清楚的是为什么我不能把数据发送到我的firebase实时数据库。 这是一个非常简单的应用程序,我试图让它目前的工作(因为我不能在更丰富的一个)--只需要一个按钮,应该发送“你好,世界!”

  • 在elasticsearch和kibana中启用ssl通信工作良好,但logstash无法连接elasticsearch,但我可以卷曲elasticsearch urlhttps://localhost:9200也没有防火墙阻止,我已经生成了打开的ssl证书和密钥文件并保存在elasticsearch中 弹性搜索配置文件 logstash日志文件

  • 我也有同样的问题: Logstash无法连接到弹性搜索 My/conf.d/logstash。形态: 错误: error_type= logstash在哪里选择这个ip地址?“本地主机:9200”