Необязательные поля Logstash в файле журнала

Я пытаюсь разобрать файл журнала с помощью grok

каждая строка файла журнала имеет поля, разделенные запятыми:

13,home,ABC,Get,,Private, Public,1.2.3 ecc...

Я использую матч, как это: match => [ "message", "%{NUMBER:requestId},%{WORD:ServerHost},%{WORD:Service},...

мой вопрос: Могу ли я разрешить необязательное поле? Иногда некоторые из файлов могут быть пустыми ,,

есть ли шаблон, который соответствует строке, как это 2.3.5 ? (своего рода номер версии)

1 ответов


в его основе grok основан на регулярных выражениях, поэтому вы можете окружить шаблон ()? чтобы сделать его необязательным, например (%{NUMBER:requestId})?,

Если нет шаблона grok, который соответствует вашим потребностям, вы всегда можете создать именованный добыча такой: (?<version>[\d\.]+) что бы извлечь в версию, строку, которая имеет любое количество цифр и точек в ней.