Я пытаюсь разобрать файл журнала с grok. используемая конфигурация позволяет мне разобрать одно выровненное событие, но не многострочное (с трассировкой java-стека).logstash multiline codec with java stack trace
#what i get on KIBANA for a single line:
{
"_index": "logstash-2015.02.05",
"_type": "logs",
"_id": "mluzA57TnCpH-XBRbeg",
"_score": null,
"_source": {
"message": " - 2014-01-14 11:09:35,962 [main] INFO (api.batch.ThreadPoolWorker) user.country=US",
"@version": "1",
"@timestamp": "2015-02-05T09:38:21.310Z",
"path": "/root/test2.log",
"time": "2014-01-14 11:09:35,962",
"main": "main",
"loglevel": "INFO",
"class": "api.batch.ThreadPoolWorker",
"mydata": " user.country=US"
},
"sort": [
1423129101310,
1423129101310
]
}
#what i get for a multiline with Stack trace:
{
"_index": "logstash-2015.02.05",
"_type": "logs",
"_id": "9G6LsSO-aSpsas_jOw",
"_score": null,
"_source": {
"message": "\tat oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:20)",
"@version": "1",
"@timestamp": "2015-02-05T09:38:21.380Z",
"path": "/root/test2.log",
"tags": [
"_grokparsefailure"
]
},
"sort": [
1423129101380,
1423129101380
]
}
input {
file {
path => "/root/test2.log"
start_position => "beginning"
codec => multiline {
pattern => "^ - %{TIMESTAMP_ISO8601} "
negate => true
what => "previous"
}
}
}
filter {
grok {
match => [ "message", " -%{SPACE}%{SPACE}%{TIMESTAMP_ISO8601:time} \[%{WORD:main}\] %{LOGLEVEL:loglevel}%{SPACE}%{SPACE}\(%{JAVACLASS:class}\) %{GREEDYDATA:mydata} %{JAVASTACKTRACEPART}"]
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch {
host => "194.3.227.23"
}
# stdout { codec => rubydebug}
}
Может кто-нибудь пожалуйста, скажите мне, что я делаю неправильно в моем файле конфигурации? Благодарю. вот пример моего файла журнала: - 2014-01-14 11: 09: 36,447 [main] INFO (support.context.ContextFactory) Создание контекста по умолчанию - 2014-01-14 11: 09: 38,623 [main] ERROR (support.context.ContextFactory) Ошибка при подключении к базе данных jdbc: oracle: thin: @ HAL9000: 1521: DEVPRINT, с пользователем cisuser и драйвером oracle.jdbc.driver.OracleDriver java.sql.SQLException: ORA-28001: Срок действия пароля истек на oracle.jdbc.driver.SQLStateMapping.newSQLException (SQLStateMapping.java:70) в oracle.jdbc.driver.DatabaseError.newSQLException (DatabaseError.java:131) **
*> EDIT: вот последняя конфигурация, которую я использую
https://gist.github.com/anonymous/9afe80ad604f9a3d3c00#file-output-L1 *
**
Вы не страдает от проблемы grok, но многострочной проблемы. Обратите внимание, что ваше второе событие должно быть объединено с первым событием. Тем не менее, причина не выпрыгивает на меня. –
Я знаю, что это многострочный вопрос, который я не знаю, как решить, я попробовал много моделей вместе с ним. но я не получаю результат, я ожидаю, что все строки журнала объединены вместе в одном событии или многострочном parsefailure. Мне нужно совместить событие со своим стеклом. – sally
Можете ли вы изменить формат журнала/добавить улучшенный формат журналов? Если да, вы можете переключиться на JSON или использовать онлайн-приложения, такие как GELF или log4j/SocketAppender. – mp911de