Java Web アプリケーション用の ELK スタックをセットアップしています。複数行の Java スタックトレースを logstash で正常に解析し、kibana で例外の数を表示しました。ここで、例外クラスごとにグループ化された例外の数を含む日付ヒストグラムを表示したいと思います。つまり、分または秒あたり 2 つの java.lang.NullPointerException、3 つの java.lang.ArithmeticException です。
Kibana では、インデックス化された完全なスタック トレースを確認できます。しかし、クラスごとに例外グループを視覚化できませんでした。ここでのベストプラクティスは何ですか? Logstash で完全修飾クラス名を取得し、kibana で条件フィルターを実行してみてください。または、kibana で ES の力を利用する方法はありますか?
フィールドの開始の例message
:
2015-08-15 23:23:51.695 [qtp1010279661-1074] ERROR c.m.w.s.proxies.ProxyServlet:71 - Can't get content from url http://localhost:8080/...
org.apache.http.conn.HttpHostConnectException: Connect to localhost:8080 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1, localhost/fe80:0:0:0:0:0:0:1%1] failed: Connection refused
at org.apache.http.impl.conn.HttpClientConnectionOperator.connect...
私のlogstash構成:
input {
file {
path => "/Users/dbaq/web-app.log"
start_position => beginning
}
}
filter {
multiline {
pattern => "%{TIMESTAMP_ISO8601:timestamp}"
negate => true
what => "previous"
}
grok {
match => ["message", "(?m)%{TIMESTAMP_ISO8601:timestamp} \[%{DATA:thread}\]\s*%{LOGLEVEL:severity}\s*%{DATA:class}:%{NUMBER:line:int}\s*\- %{GREEDYDATA:message}"]
overwrite => [ "message" ]
}
date {
match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss.SSS" ]
}
}
output {
elasticsearch {
protocol => "http"
}
stdout {}
}
ご協力いただきありがとうございます
編集 1: 私class
の logstash パターンのフィールドは、私の例では、例外がスローされたクラスを表します: c.m.w.s.proxies.ProxyServlet
. 例外クラスで集計したい: org.apache.http.conn.HttpHostConnectException
.