如何在logstash中的一个字段中多次匹配

how to match multiple times in one field in logstash

这是字段

device_version => 2.6.1.1280 [eng:v1.3.26.0 rul:v2018.07.12.09 act:v2018.01.20.01 sws:v2018.07.12.09]

如何获取 eng 和 rul ... 值并将它们分别放入新字段?

谢谢

如果你只想匹配 engrul 值,你可以使用 %{DATA},

简单匹配它们
eng:%{DATA:eng}\srul:%{DATA:rul}\s

这将输出,

{
  "eng": [
    [
      "v1.3.26.0"
    ]
  ],
  "rul": [
    [
      "v2018.07.12.09"
    ]
  ]
}

您可以在 https://grokdebug.herokuapp.com/

进行测试

编辑:

filter {
  grok {
    match => { "device_version" => "eng:%{DATA:eng}\srul:%{DATA:rul}\s" }
  }
}

您还应该查看可用的默认 grok 模式,https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns