Как пропустить начало сообщения с Grok Patterns?

Я пытаюсь извлечь только последнюю часть журнала Linux, используя шаблоны Grok в Graylog, но это сложнее, чем я думал.

Вот сообщение, которое я получаю:

18 марта 11:10:01 Graylog CRON[14637]: pam_unix(cron:session): сеанс закрыт для пользователя root

Я хочу только сохранить дату, время и сеанс закрытым для корневой части пользователя.

Это то, что я пробовал, безрезультатно:

%{GREEDYDATA} pam_unix(cron:session):
%{GREEDYDATA} session closed for user root
%{MONTH} %{BASE10NUM} %{TIME} %{GREEDYDATA}graylog CRON[18698]: pam_unix(cron:session):

Может быть, я все еще неправильно использую greedydata (?), Любая помощь будет очень признательна!


person Lorenzo    schedule 19.03.2021    source источник


Ответы (1)


Вы можете использовать

%{MONTH:month} %{BASE10NUM:day} %{TIME:time} %{DATA}: pam_unix\(cron:session\):\s*%{GREEDYDATA:message}

Подробности:

  • %{MONTH:month} - название месяца
  • %{BASE10NUM:day} - одна или несколько цифр
  • %{TIME:time} - шаблон времени
  • %{DATA} - .*? шаблон регулярного выражения с ленивой точкой, соответствует любому нулю или более символов, кроме символов разрыва строки, как можно меньшему количеству (обратите внимание, что вы можете изменить его на %{DATA:cron}, чтобы получить graylog CRON[14637] в выводе)
  • : pam_unix\(cron:session\): - буквальный : pam_unix(cron:session): текст
  • \s* - ноль или более пробелов
  • %{GREEDYDATA:message} - .* шаблон регулярного выражения, соответствующий остальной части строки.
person Wiktor Stribiżew    schedule 19.03.2021