Плагин Grok из Logsta sh упорядоченная проблема поля - PullRequest
1 голос
/ 17 января 2020

У меня есть вопрос о плагине grok:

У меня есть несколько журналов, которые построены следующим образом, и моя проблема заключается в том, что порядок моих полей может изменяться от журнала к журналу (в примере здесь Я должен извлечь из всех журналов как user id, так и document id). Поэтому мне интересно, как я должен построить шаблон Grok для обработки обоих журналов. Я надеюсь, что есть лучшее решение для написания двух разных шаблонов (или как написать регулярное выражение, чтобы найти специфицированный c атрибут в любом месте журнала, не зная перед его точной позицией)

2019-01-15 INFO myclass - mymethod: user id: 12345 custom message 1 document id: 843572309845
2019-01-15 WARN myclass - mymethod1: document id: 43543534 custom message 2 user id: 98589348543 custom message 3 agent id: 98435734

ожидаемый результат:

date: 2019-01-15 
level: INFO
class: myclass
method: mymethod
message: user id: 12345 custom message 1 document id: 843572309845
userId: 12345
documentId: 843572309845

date: 2019-01-15
level: WARN
class: myclass
method: mymethod1
message: document id: 43543534 custom message 2 user id: 98589348543 custom message 3 agent id: 98435734
userId: 98589348543
documentId: 43543534
agentId: 98589348543

Ждем Вашего ответа, спасибо.

1 Ответ

1 голос
/ 17 января 2020

Я нашел регулярное выражение, где оно работает (по крайней мере, в grok отладчике ):

(?=.*user id: %{NUMBER:userId})(?=.*document id: %{NUMBER:documentId})

Используя его, я смог получить результаты по шлангу:

userId  12345
documentId  843572309845 

userId  98589348543
documentId  43543534 
...