如何使用 Grok 模式跳过消息的开头?

How to skip the beginning of a message with Grok Patterns?

我正在尝试使用 Graylog 中的 Grok 模式仅提取 Linux 日志的最后一部分,但这比我想象的要难。

这是我收到的消息:

3 月 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”错误(?),任何帮助将不胜感激!

您可以使用

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

详情:

  • %{MONTH:month} - 月份名称
  • %{BASE10NUM:day} - 一个或多个数字
  • %{TIME:time} - 时间模式
  • %{DATA} - .*? 懒点正则表达式模式,匹配除换行字符以外的任何零个或多个字符,尽可能 few (请注意,您可以将其更改为 %{DATA:cron} 以在输出中获得 graylog CRON[14637]
  • : pam_unix\(cron:session\): - 文字 : pam_unix(cron:session): 文本
  • \s* - 零个或多个空格
  • %{GREEDYDATA:message} - .* 匹配该行其余部分的正则表达式模式。