Logstash无法将输出发送到弹性搜索

时间:2015-08-13 09:01:32

标签: elasticsearch logstash

此问题已经在https://stackoverflow.com/questions/30283837/logstash-unable-to-send-output-to-elasticsearch提出,但我看不到实际的答案。有人可以建议我是否有解决方案,因为我遇到了同样的问题。

我相信这是一个导致问题的系统参数,因为我在不同的机器上运行相同的配置并且工作正常。有谁知道这可能是什么?

我到处寻找答案,但只能找到防火墙问题(在防火墙外试用),并且twitter服务器和我的机器之间的时间戳不同(正确设置机器时间)。任何人都可以告知导致以下授权错误的原因(我还检查了Twitter应用程序和设置是否正确并正常工作)。

Logstash startup completed
←[33m {:exception=>Twitter::Error::Unauthorized, :backtrace=>["C:/logstash-1.5.1
/vendor/bundle/jruby/1.9/gems/twitter-5.12.0/lib/twitter/streaming/response.rb:2
1:in on_headers_complete'", "org/ruby_http_parser/RubyHttpParser.java:370:in<
<'", "C:/logstash-1.5.1/vendor/bundle/jruby/1.9/gems/twitter-5.12.0/lib/twitter/
streaming/response.rb:16:in <<'", "C:/logstash-1.5.1/vendor/bundle/jruby/1.9/ge
ms/twitter-5.12.0/lib/twitter/streaming/connection.rb:22:instream'", "C:/logst
ash-1.5.1/vendor/bundle/jruby/1.9/gems/twitter-5.12.0/lib/twitter/streaming/clie
nt.rb:116:in request'", "C:/logstash-1.5.1/vendor/bundle/jruby/1.9/gems/twitter
-5.12.0/lib/twitter/streaming/client.rb:36:infilter'", "C:/logstash-1.5.1/vend
or/bundle/jruby/1.9/gems/logstash-input-twitter-0.1.6/lib/logstash/inputs/twitte
r.rb:88:in run'", "C:/logstash-1.5.1/vendor/bundle/jruby/1.9/gems/logstash-core
-1.5.1-java/lib/logstash/pipeline.rb:176:ininputworker'", "C:/logstash-1.5.1/v
endor/bundle/jruby/1.9/gems/logstash-core-1.5.1-java/lib/logstash/pipeline.rb:17
0:in `start_input'"], :level=>:warn}←[0m

我正在使用以下的twitter配置: -

input {
twitter {
consumer_key => "xxxxxxxxxxxxxxxxxx"
consumer_secret => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
oauth_token => "xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
oauth_token_secret => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
keywords => ["xxxxxxxxxxx"]
full_tweet => true
}
}

output {
stdout { codec => dots }
elasticsearch {
protocol => "http"
host => "localhost"
index => "twitter"
document_type => "tweet"
template => "twitter_template.json"
template_name => "twitter"
}
}

我在防火墙外尝试了相同的操作,而不是授权问题,我拒绝连接。所以我相信warkolm你是对的,但这只是给我带来了另一个问题。

←[33mConnection refused - Connection refused {:exception=># Connection refused - Connection refused>, :backtrace=>["org/jruby/ext/socket/Ru
byTCPSocket.java:126:in initialize'", "org/jruby/RubyIO.java:853:innew'", "C:
/logstash-1.5.1/vendor/bundle/jruby/1.9/gems/twitter-5.12.0/lib/twitter/streamin
g/connection.rb:16:in stream'", "C:/logstash-1.5.1/vendor/bundle/jruby/1.9/gems
/twitter-5.12.0/lib/twitter/streaming/client.rb:116:inrequest'", "C:/logstash-
1.5.1/vendor/bundle/jruby/1.9/gems/twitter-5.12.0/lib/twitter/streaming/client.r
b:36:in filter'", "C:/logstash-1.5.1/vendor/bundle/jruby/1.9/gems/logstash-inpu
t-twitter-0.1.6/lib/logstash/inputs/twitter.rb:88:inrun'", "C:/logstash-1.5.1/
vendor/bundle/jruby/1.9/gems/logstash-core-1.5.1-java/lib/logstash/pipeline.rb:1
76:in inputworker'", "C:/logstash-1.5.1/vendor/bundle/jruby/1.9/gems/logstash-c
ore-1.5.1-java/lib/logstash/pipeline.rb:170:instart_input'"], :level=>:warn}←[
0m

即使尝试了一组新的Twitter授权码,也是如此。

如果在另一台开发人员计算机上运行相同的配置,它可以正常运行,因此桌面上的配置设置不正确(两台计算机都运行相同的设置窗口8.1运行ES 1.7.1和LS 1.5.1 )。

有关我的机器上缺少什么设置的任何想法。

由于 利

1 个答案:

答案 0 :(得分:0)

您提供的堆栈跟踪源自Twitter连接阶段 - 尝试启动与stream.twitter.com:443的连接时,它的连接被拒绝。由于twitter的流式api不太可能出现故障,你可能会在某种程度上阻止你的防火墙。

查看stream.twitter.com,它有多个A记录......因此,运行防火墙的任何人都可能错过了一个地址或类似的东西。可能是其他开发人员有一个主机文件条目来强制它到特定的地址。

如果查看something like this,它会显示与给定主机相关联的地址。

然后,您可以尝试telneting到每个地址上的端口443,看看是否有连接或连接被拒绝。