Logstash 使用grok在示例日志中创建字段

Logstash 使用grok在示例日志中创建字段,logstash,kibana,logstash-grok,filebeat,Logstash,Kibana,Logstash Grok,Filebeat,日志格式如上所述。我想使用grok捕获以下字段 FMT="1358 15:41:07W19/03/21 (A) Interlocking Link 116 Restored" STY="A" AMSEQ="LINKFAIL" AMSST="RTN" ALTID="1358" TS="20210319154107" CP="LOC A" CP="L

日志格式如上所述。我想使用grok捕获以下字段

FMT="1358  15:41:07W19/03/21 (A) Interlocking Link 116 Restored" STY="A" AMSEQ="LINKFAIL" AMSST="RTN" ALTID="1358" TS="20210319154107" CP="LOC A" CP="LOC X" MP="104.95" MP="104.95" EQ="MDIPRIMARYOFF" POS="TC-NORTH"

有人帮我创建grok模式,我可以在我的logstash过滤器上使用它来解析我的日志吗?

我不会首先使用grok。这是键/值数据,所以kv过滤器将让您开始,然后您可以搜索FMT字段的各个部分

Time - 15:41:07
Date - 19/03/21
Message - Interlocking Link 116 Restored
Location - Loc X
将导致

    kv { include_keys => [ "FMT", "CP" ] target => "[@metadata]" }
    mutate { add_field => { "Location" => "%{[@metadata][CP][1]}" } }
    grok { match => { "[@metadata][FMT]" => "%{NUMBER} %{TIME:Time}W%{DATE_EU:Date} \(%{WORD}\) %{GREEDYDATA:Message}" } }
尽管拥有多个CP字段感觉很脆弱


kv过滤器上的include_keys选项告诉过滤器忽略其他键。使用target将字段置于[@metadata]下意味着其他筛选器可以使用这些字段,但不会将其发送到输出。kv筛选器上的remove_field(删除字段)选项仅在筛选器能够解析消息时才会处理,因此,如果kv数据无效,您可以查看事件中的[message]字段。

嘿,感谢您的回复。一切都很完美,这是grokHey的一部分,谢谢你的回复。一切工作都很完美grok部分中的一部分,它抛出了一个{grokeparsefailure我已经测试/调试了部分“{NUMBER}%{TIME:TIME}W%{DATE}(%%{WORD})%%{GREEDYDATA:Message}”(通过去掉FMT=“1358)15:41:07W19/03/21(a)联锁链接116已恢复)STY=“a”AMSEQ=“LINKFAIL”AMSST=“RTN”ALTID=”1358“TS=“20210319154107”CP=“LOC A”CP=“LOC X”MP=“104.95”MP=“104.95”EQ=“MDIPRIMARYOFF”POS=“TC-NORTH”和它工作正常问题是匹配FMT=“1358 match=>{”[@metadata][FMT]”的模式
   "Message" => "Interlocking Link 116 Restored",
      "Date" => "19/03/21",
      "Time" => "15:41:07",
  "Location" => "LOC X",