0

我已经建立了一个带有 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服务器的日志中没有错误。

4

1 回答 1

0

好吧,这里的一个问题是 JRuby,它试图调用Thread.stop(Throwable obj);一个已弃用的方法,它抛出UnsupportedOperationException并完全弄乱了错误的实际来源(Throwable参数)。

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

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

您还应该检查是否存在有关 JRuby 的错误票证,并可能更新您的 JRuby。

于 2015-08-07T08:09:56.027 回答