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

ここでの 1 つの問題は、エラーの実際の原因 (パラメーター)をスローして完全に台無しThread.stop(Throwable obj);にする非推奨のメソッドであるを呼び出そうとする JRuby にあります。UnsupportedOperationExceptionThrowable

したがって、現在、実際の問題が何であるかを推測することしかできず、推測は決して良くありません.

1 つのアイデアは、ブレークポイントを設定しRubyThread.exceptionRaised();てデバッガーで実行することです。これにより、元のものが何であるかを知ることThrowableができ、問題の原因にたどり着くことができます。

また、これに関する JRuby のバグ チケットがあるかどうかを確認し、場合によっては JRuby を更新する必要があります。

于 2015-08-07T08:09:56.027 に答える