Yaml Logstash grok过滤器调试

Yaml Logstash grok过滤器调试,yaml,logstash,elastic-stack,logstash-grok,logstash-configuration,Yaml,Logstash,Elastic Stack,Logstash Grok,Logstash Configuration,请帮助,我正在尝试在我的日志存储管道中添加grok过滤器,它将在日志线下转换 2020-11-06 12:57:43,854 INFO Bandwidth: NASDAQ:224.0.130.65:30408 0.000059 Gb/S 到 下面是我的grok过滤器 input{ beats{ port => "5044" } } filter{ if "Bandwidth" in [message]{ grok{

请帮助,我正在尝试在我的日志存储管道中添加grok过滤器,它将在日志线下转换

2020-11-06 12:57:43,854 INFO Bandwidth: NASDAQ:224.0.130.65:30408 0.000059 Gb/S

下面是我的grok过滤器

input{
  beats{
    port => "5044"
  }
}

filter{
  if "Bandwidth" in [message]{
    grok{
      match => {"message" => "%{TIMESTAMP_ISO8601:ts} %{LOGLEVEL:loglevel} %{WORD:Metric}: (?<Chanel>[A-Z]+:[0-9]+.[0-9]+.[0-9]+.[0-9]+:[0-9]+)"}
    }
  }
}

output{
  elasticsearch{
    hosts => [ "localhost:9200" ]
  }
}
输入{
击败{
端口=>“5044”
}
}
滤器{
如果[消息]中有“带宽”{
格罗克{
match=>{“message”=>“%{TIMESTAMP_ISO8601:ts}%{LOGLEVEL:LOGLEVEL}%{WORD:Metric}:(?[A-Z]+:[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+)”
}
}
}
输出{
弹性搜索{
hosts=>[“localhost:9200”]
}
}

当我在Grok debugger中尝试时,这个过滤器工作得非常好,但在Kibana中查看时,在Logstash中则不行。我没有看到从筛选器捕获的任何名称。只是留言。如果我删除过滤器的regex部分并添加greedydydata,一切正常。我确信我在Regex部分做了一些错误的事情。

您的Regex模式是正确的,并提供了预期的过滤器输出。在Kibana中刷新索引模式或尝试重新摄取数据

尽管如此,如果通道模式类似于某些数据:IP地址:端口,我认为不需要使用正则表达式

试试下面的模式

grok{
      match => { "message" => ["%{TIMESTAMP_ISO8601:ts} %{LOGLEVEL:loglevel} %{WORD:Metric}: (?<Channel>%{DATA}:%{HOSTPORT}) (?<Data>%{GREEDYDATA})"]}
    }
尝试将stdout输出与elasticsearch一起使用,以便查看logstash输出到elastic的内容

output{
      stdout { codec => rubydebug }
    }

谢谢,我找到了问题。日志在“带宽:”之后有2个空格,我在正则表达式中使用了1个空格。但是我从你的回复中学到了一些新的东西,我将把我的过滤器更新为DATA和HOSTPORT。为了避免空间使用%{space}
{
            "ts" => "2020-11-06 12:57:43,854",
        "Metric" => "Bandwidth",
    "@timestamp" => 2020-11-06T22:47:20.383Z,
      "loglevel" => "INFO",
          "host" => "e7c15acec470",
          "Data" => "0.000059 Gb/S",
       "Channel" => "NASDAQ:224.0.130.65:30408",
      "@version" => "1",
       "message" => "2020-11-06 12:57:43,854 INFO Bandwidth: NASDAQ:224.0.130.65:30408 0.000059 Gb/S"
}
output{
      stdout { codec => rubydebug }
    }