查找日志文件的 grok 模式

Finding grok pattern for Log files

我有一个格式的日志文件:

root         2  0.0  0.0      0     0 ?        S    17:28   0:00 [kthreadd]

我不知道如何读取由 : 分隔的时间戳。

到目前为止,我能够实现的 grok 模式是:

%{WORD:user}\s*%{NUMBER:pid}\s*%{BASE16FLOAT:cpu}\s*%{BASE16FLOAT:mem}\s*%{NUMBER:vsz}\s*%{NUMBER:rss} \?\s* %{WORD,:stat}\s*

请在下面找到与您的输入日志匹配的 grok 模式:

%{WORD:user}\s*%{BASE10NUM:pid}\s*%{BASE10NUM:cpu}\s*%{BASE10NUM:mem}\s*%{BASE10NUM:vsz}\s*%{BASE10NUM:rss} \?\s*%{WORD,:stat}\s*(?<time>([0-1]?[0-9]|2[0-3]):[0-5][0-9])\s*(?<time2>([0-1]?[0-9]|2[0-3]):[0-5][0-9])\s*\[%{DATA:username}\]

我用过Grok + Oniguruma

的组合

鬼车

oniguruma 语法如下:

(?<field_name>the pattern here)
  • field_name是关键
  • 此处的模式 是您输入正则表达式模式的地方

Grok + Oniguruma

您可以像下面这样组合 Grok 和 Oniguruma:

%{SYNTAX:SEMANTIC} (?<field_name>the pattern here)

我已经使用 Grok Debugger 来验证 grok 模式。另外,在下面找到 grok 模式的输出。