首页 > 解决方案 > 如果在logstash中以特殊字符开头,如何从输入文件中删除特定行

问题描述

我正在尝试删除logstash中我的输入文件中从<开始的所有行。我尝试了以下过滤器但没有成功。

我是 ELS 堆栈的新手,如果它已经回答,请原谅。

示例输入行

Thread #1: t@-1680123584, lwp=22843, ref=0x1b0f8550, session=9F0071A66D89544155D149CCE2453E9A:mx2135649930e123d964:(WebServiceFacade.java:84), ms=0x78714bc0
<Start Stack Trace>
<1 - ADK Verbose Trace Entry>

  <2 - Launching Program Object>
  
  <3 - ADK Verbose Trace Entry>

  <4 - Launching Program Object>

<End Stack Trace>
Thread #2: t@-1680123584, lwp=22843, ref=0x1b0f8550, session=9F0071A66D89544155D149CCE2453E9A:mx2135649930e123d964:(WebServiceFacade.java:84), ms=0x78714bc0
<Start Stack Trace>
  <1 - ADK Verbose Trace Entry>

  <2 - Launching Program Object>
  
  <3 - ADK Verbose Trace Entry>

  <4 - Launching Program Object>

<End Stack Trace>

我目前的过滤器就像

    if[message =~ "^<.*"] {
        drop { }
    }

但不知何故它不起作用,我仍然在我的输出中得到这些行

 "message" => "Thread #1: t@-1680123584, lwp=22843, ref=0x1b0f8550, session=9F0071A66D89544155D149CCE2453E9A:mx2135649930e123d964:(WebServiceFacade.java:84), ms=0x78714bc0\r\n<Start Stack Trace>\r\n<1 - ADK Verbose Trace Entry>\r\n\r\n  <2 - Launching Program Object>\r\n  \r\n  <3 - ADK Verbose Trace Entry>\r\n\r\n  <4 - Launching Program Object>\r\n\r\n<End Stack Trace>\r",

标签: elasticsearchlogstashlogstash-grokelk

解决方案


您应该在字段名称周围加上方括号。表达式周围的括号是可选的。尝试

if [message] =~ "^<" { drop { } }

推荐阅读