当前位置: 代码迷 >> java >> logstash意外停止
  详细解决方案

logstash意外停止

热度:14   发布时间:2023-07-25 19:26:51.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服务器的日志中没有错误。

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

因此,当前您只能猜测实际的问题是什么,而猜测永远都不是好事。

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

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