Я настраиваю стек ELK для веб-приложения Java. Я успешно проанализировал многострочные трассировки стека Java с помощью logstash и отобразил количество исключений в кибане. Теперь я хотел бы отобразить гистограмму даты с количеством групп исключений по классам исключений, то есть 2 java.lang.NullPointerException, 3 java.lang.ArithmeticException за минуты или секунды.
В кибане я вижу полную проиндексированную трассировку стека. Но мне не удалось визуализировать свою группу исключений по классам. Какая здесь лучшая практика? Попытаться получить полное имя класса с помощью Logstash и выполнить фильтр терминов в кибане? или есть способ использовать силу 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
.