LogStashは初めてです。 Log4JのJavaアプリケーションからログを作成しました。これらのログをElasticSearchに取得しようとしています。私の人生では、取得できないようです。現在、私は次のlogstash構成を使用しています。
input {
file {
type => "log4j"
path => "/home/ubuntu/logs/application.log"
}
}
filter {
grok {
type => "log4j"
add_tag => [ "ApplicationName" ]
match => [ "message", "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level}" ]
}
}
output {
elasticsearch {
protocol => "http"
codec => "plain"
Host => "[myIpAddress]"
port => "[myPort]"
}
}
この構成は、ヒットまたはミスのようです。理由はわかりません。たとえば、2つのメッセージがあります。 1つは機能し、もう1つは解析エラーをスローします。しかし、なぜだかわかりません。メッセージとそれぞれの結果は次のとおりです。
Tags Message
------ -------
["_grokparsefailure"] 2014-04-04 20:14:11,613 TRACE c.g.w.MyJavaClass [pool-2-
thread-6] message was null from https://domain.com/id-1/env-
MethodName
["ApplicationName"] 2014-04-04 20:14:11,960 TRACE c.g.w.MyJavaClass [pool-2-
thread-4] message was null from https://domain.com/id-1/stable-
MethodName
["ApplicationName"]のあるものには、timestamp
とlevel
のカスタムフィールドがあります。ただし、["_ grokparsefailure"]を含むエントリにはカスタムフィールドがありません。奇妙な部分は、上のメッセージ列に示されているように、ログがほぼ同一であるということです。これは本当に私を混乱させていますが、私は問題が何であるかを理解する方法やそれを乗り越える方法を知りません。 log4jログをlogstashにインポートし、次のフィールドを一貫して取得する方法を知っている人はいますか?
あなたが提供できる助けをありがとう。ログレベル、タイムスタンプ、ログメッセージだけができたとしても、それは大きな助けになります。心から感謝します!
Logstashにはlog4jソケットリスナーを使用し、log4jソケットアペンダーを使用することをお勧めします。
Logstash conf:
input {
log4j {
mode => server
Host => "0.0.0.0"
port => [logstash_port]
type => "log4j"
}
}
output {
elasticsearch {
protocol => "http"
Host => "[myIpAddress]"
port => "[myPort]"
}
}
log4j.properties:
log4j.rootLogger=[myAppender]
log4j.appender.[myAppender]=org.Apache.log4j.net.SocketAppender
log4j.appender.[myAppender].port=[log4j_port]
log4j.appender.[myAppender].remoteHost=[logstash_Host]
Log4jの入力については、logstashのドキュメントに詳細情報があります。 http://logstash.net/docs/1.4.2/inputs/log4j
以前に使用されたSocketAppenderソリューションは、セキュリティ上の問題のために非推奨になっているようです。現在推奨される解決策は、log4j fileAppenderを使用し、filebeatプラグインを介してlogstashにファイルを渡してからフィルターすることです。詳細については、以下のリンクを参照できます。
https://www.elastic.co/blog/log4j-input-logstash
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html
私のブログで JSONメッセージをElasticSearchに送信し、GROKで解析する方法を説明しました。 説明とJava example のブログ投稿を見るにはクリックしてください。投稿には説明がありますが、example(githubの完全なプロジェクト)の簡単なmavenプロジェクトもあります。
お役に立てば幸いです。