首页 > 解决方案 > 如何使用 Grok Patterns 跳过消息的开头?

问题描述

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

这是我收到的消息:

3 月 18 日 11:10:01 graylog CRON[14637]: pam_unix(cron:session): session closed for user root

我只想保留日期、时间和“为用户 root 关闭会话”部分。

这是我尝试过的,没有结果:

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

也许我仍在使用“greedydata”错误(?),任何帮助将不胜感激!

标签: regexlinuxfilebeatgrok

解决方案


您可以使用

%{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}-.*正则表达式模式匹配该行的其余部分。

推荐阅读