Я запутался, как я использую фильтр GROK, созданный мной в отладчике Elastic Grok, для многострочной записи журнала и использую Filebeat, чтобы отправить его в мой экземпляр ElasticSearch. Я считаю, что для этого мне нужно создать конвейер, но мне трудно это сделать. Экранирование и многострочный характер моих журналов делают использование консоли очень сложным. Я пытаюсь работать на примере здесь. https://www.elastic.co/guide/en/elasticsearch/reference/master/grok-processor.html
У меня есть фильтр GROK:
-- BEGIN MESSAGE LOG --
%{GREEDYDATA} %{TIMESTAMP_ISO8601:timestamp}
([\s\S]*Exception:\s*)%{GREEDYDATA:exception}\s
([\s\S]*Message:\s*)%{GREEDYDATA:message}
(?m)\s%{GREEDYDATA:details}
([\s\S]*BaseDir:\s*)%{GREEDYDATA:application}
([\s\S]*ThreadId:\s*)%{GREEDYDATA:threadId}
([\s\S]*Machine:\s*)%{GREEDYDATA:machine}
([\s\S]*Thread:\s*)%{GREEDYDATA:thread}\s
([\s\S]*Windows\sidentity:\s*)%{GREEDYDATA:identity}
-- END MESSAGE LOG --``
and the log entries look like this:
-- BEGIN MESSAGE LOG --
Timestamp: 2019-09-26 09:14:04.1993
...
-- END MESSAGE LOG --
Мой конвейер выглядит следующим образом
POST _ingest/pipeline/_simulate
{
"pipeline": {
"description" : "Raisin Error Log Pipeline",
"processors": [
{
"grok": {
"field": "message",
"patterns": ["-- BEGIN MESSAGE LOG --
%{GREEDYDATA} %{TIMESTAMP_ISO8601:timestamp}
([\s\S]*Exception:\s*)%{GREEDYDATA:exception}\s
([\s\S]*Message:\s*)%{GREEDYDATA:message}
(?m)\s%{GREEDYDATA:details}
([\s\S]*BaseDir:\s*)%{GREEDYDATA:application}
([\s\S]*ThreadId:\s*)%{GREEDYDATA:threadId}
([\s\S]*Machine:\s*)%{GREEDYDATA:machine}
([\s\S]*Thread:\s*)%{GREEDYDATA:thread}\s
([\s\S]*Windows\sidentity:\s*)%{GREEDYDATA:identity}
-- END MESSAGE LOG --"]
}
}
]
},"docs":[
{
"_source": {
"message": "-- BEGIN MESSAGE LOG --
Timestamp: 2019-09-26 15:19:40.2496
Exception: MissingFieldException
Message: Error clearing cache after saving
Exception details:
..snip stack trace and sensitive info..
Thread: 13
Windows identity: NT AUTHORITY\NETWORK SERVICE
-- END MESSAGE LOG --"
}
}
]
}
Многолинейные и Windows-пути / трассировки стека делаютПочтовые инструкции я попробовал здесь очень сложно.