使用grok过滤器插件跳过前几行日志

时间:2019-12-10 11:32:26

标签: logstash elastic-stack logstash-grok

是否可以在以下日志中删除从日期时间开始的第一行?我只对第二行感兴趣。

Dec 09, 2019 12:55:22 PM hudson.slaves.CommandLauncher launch
INFO: agent launched for ci-vd6

如何使用grok过滤器插件执行上述操作?

1 个答案:

答案 0 :(得分:2)

您可以跳过这样的行:

if [message] =~ /2019/ {
  drop { }
}

现在,您需要更改regex以仅在需要时插入行。

编辑:例如,baudsp建议使用正则表达式如下:

\b(?:[Jj]an(?:uary|uar)?|[Ff]eb(?:ruary|ruar)?|[Mm](?:a|ä)?r(?:ch|z)?|[Aa]pr(?:il)?|[Mm]a(?:y|i)?|[Jj]un(?:e|i)?|[Jj]ul(?:y)?|[Aa]ug(?:ust)?|[Ss]ep(?:tember)?|[Oo](?:c|k)?t(?:ober)?|[Nn]ov(?:ember)?|[Dd]e(?:c|z)(?:ember)?)\b \d{2}, \d{4}

我的意思是当您逐行接收消息时,您会收到以下消息:

  

2019年12月9日下午12:55:22 hudson.slaves.CommandLauncher启动

您放下它。

您收到一行:

  

INFO:为ci-vd6启动的代理程序

您保留它。

编辑:以分隔行:

如果可能,请分割有关例如换行符的消息。 在logstash.yml中启用特殊符号: config.support_escapes: true 并添加过滤器

filter {
  split {
  field => "message"
  terminator => "\n" 
 }
}

现在一个接一个地处理它们。