logstash意外停止

时间:2015-08-07 06:03:48

标签: java logstash logstash-configuration logstash-file

我已经使用redis架构设置了一个logstash来处理我的日志。我组织它的方式是:

logstash ---> redis ---> logstash ---> elasticsearch

但是发生的问题是在解析了将近125万个日志之后会抛出一个java异常。

在我的logstash.err日志文件中,异常显示为

Exception in thread "<file" java.lang.UnsupportedOperationException
    at java.lang.Thread.stop(Thread.java:869)
    at org.jruby.RubyThread.exceptionRaised(RubyThread.java:1221)
    at org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:112)
    at java.lang.Thread.run(Thread.java:745)

我认为由于logstash无法打开/关闭文件,可能会抛出此异常。那么我该怎么做才能纠正这个错误呢?为我的第一个logstash服务器设置输入配置以发送日志的方式是:

input {
    file {
        start_position => "beginning"
        path => [
            "/var/logstash_logs/child1/nginx/*log*",
            "/var/logstash_logs/child2/nginx/*log*",
            "/var/logstash_logs/child3/nginx/*log*"
        ]
    }
}

输出的方式如下:

output {
    redis {
        host => "X.X.X.X"
        key => "logstash"
        data_type => "list"
    }
}

安装了redis的logstash服务器的日志中没有错误。

1 个答案:

答案 0 :(得分:0)

嗯,这里的一个问题是JRuby试图调用Thread.stop(Throwable obj);,这是一个抛弃UnsupportedOperationException的弃用方法,并且完全混淆了错误的实际来源(Throwable参数)。

所以目前你只能猜到实际问题是什么,猜测永远不会好。

一个想法是在RubyThread.exceptionRaised();上设置断点并通过调试器运行它。这应该可以让你找出原始的Throwable是什么,然后你可以找到问题的根源。

您还应该检查JRuby是否存在关于此问题的错误故障单,并可能更新您的JRuby。