Filebeat如何指定与Logstash的匹配规则

时间:2019-04-15 03:17:46

标签: logstash elastic-stack logstash-grok filebeat

我想让Logstash'gork过滤器使用Filebeat给出的匹配规则

这是我的Filebeat配置:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /root/Log-test/test.log
  fields:
    "@metadata":
        formatter: "%{TIMESTAMP_ISO8601:timestamp} - %{NOTSPACE:module} - %{LOGLEVEL:level} - %{NOTSPACE:filename} - %{GREEDYDATA:log_message}"
  fields_under_root: true

output.logstash:
  hosts: ["localhost:5045"]

这是我的Logstash配置:

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

filter {
  grok {
    match => { "message" => "%{[@metadata][formatter]}" }
  }
}

output {
  file {
    path => "/tmp/log-test.log"
    codec => rubydebug { metadata => true }
  }
}

所以,我希望希腊人知道我的比赛规则内容(message字段为"%{TIMESTAMP_ISO8601:timestamp} - %{NOTSPACE:module} - %{LOGLEVEL:level} - %{NOTSPACE:filename} - %{GREEDYDATA:log_message}"

但是上面的设置不起作用,我想知道如何实现这样的功能?还是有可能做到?

谢谢!

1 个答案:

答案 0 :(得分:1)

从此posting开始,“不支持带有动态%{field}引用的Grok表达式”。该帖子的原始作者打开了一个github问题,现在是here(一年后仍未解决)。