Logstash:使用 Filebeat 时如何从路径中获取字段?

Logstash: how to get field from path when using Filebeat?

Filebeat配置的必要部分:

filebeat.inputs:
- type: log
  paths:
    - C:\Program Files\Filebeat\test_logs\*.txt

发送到logstash和elasticsearch后,出现如下字段:

"log": {
          "offset": 117,
           "file": {
                "path": "C:\Program Files\Filebeat\test_logs\20200804_0929_logui.txt"
  }

我想将文件夹名称/文件名称作为单独的字段获取,但不知道如何。

已经尝试过这样的事情:

grok {
    match => { 'path' => '(C:\Program Files\Filebeat\test_logs\)%{GREEDYDATA:filename}\.txt' }
}

不幸的是,这不起作用。

请帮我解决一下。

试试 dissect filter,更容易:

  filter {
    dissect {
      mapping => {
        "[log][file][path]" => "C:\Program Files\Filebeat\test_logs\%{[log][file][name]}.txt"
      }
    }
  }