基于 filebeat 数据将字段添加到 logstash

Add fields to logstash based off of filebeat data

所以,我有一个由 filebeat 设置的主机名(我已经编写了一个应该获取它的正则表达式),但以下内容并没有按照我认为应该的方式添加字段..

grok{
  patterns_dir => "/config/patterns"
  match =>{ "beat.hostname" => ["%{INSTALLATION}-%{DOMAIN}-%{SERVICE}"] }
    add_field => { "[installation]" => "%{INSTALLATION}"}
    add_field => { "[domain]" => "%{DOMAIN}"}
    add_field => { "[service]" => "%{SERVICE}"}

 }  

我似乎无法访问 beat.hostname、主机名、主机或类似的东西来添加我想要的字段。目前主机名是:BOS-LAP-MYNAME1

应该匹配:

INSTALLATION [^-]{1,3}
DOMAIN (BOS|LAP)
SERVICE (MYNAME1|TEST|12345)

另请注意:我已经尝试了 "host" "hostname" 和其他类似的字段名称,尽管这些字段在 Kibana 中可用。

由于 hostname 嵌套在 beat 下,您需要匹配 [beat][hostname] 而不是 beat.hostname。要将这些字段添加到文档中,请在匹配参数中使用 %{PATTERN:fieldname} 的形式。

filter {
  grok {
    patterns_dir => ["/config/patterns"]
    match => {
      "[beat][hostname]" => "%{INSTALLATION:installation}-%{DOMAIN:domain}-%{SERVICE:service}"
    }
  }
}