ログを処理するために、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 サーバーのログにエラーはありません。