Logstash没有根据Filebeat的字段

时间:2016-09-15 18:34:47

标签: logstash elastic-stack logstash-configuration filebeat

我正在尝试将Zabbix日志数据提供给ELK堆栈以执行某些时序关联。但是,我没有得到我的Logstash集中式服务器配置指定的过滤器,如果它充当代理,我会得到它。我使用Filebeat将日志条目发送到Logstash进行处理。但是,Logstash不会确认fields.tags行,但在Elasticsearch / Kibana中可见。这是我的配置。

filebeat: 
  prospectors: 
    - 
      paths:
        - /var/log/zabbix/zabbix_proxy.log
      input_type: log
      fields: 
        tags: ["zabbix", "zabbix-proxy"]
  registery_file: /var/lib/filebeat/registry
output: 
  logstash: 
    hosts: ["elkls.com:5044"]
logging: 
  files: 
    rotateeverybytes: 12345656

然后我的Logstash配置文件

input { 
  beats { 
    port => 5044
  }
}
filter { 
  if "zabbix" in [fields.tags] {
    grok { 
      match => { 
        "message" => {
          "filter stuff here"
        }
      }
    }
  }
}
output {
  elasticsearch { 
    hosts => [ "elkhost.com:9200"]
  }
}

Logstash不会对fields.tags行起作用,并过滤/切断从Filebeat传递给它的日志行。我是否正确访问了这些变量?我做了类似于其他文件的操作,但只有当Logstash充当代理并直接从文件中读取时。

1 个答案:

答案 0 :(得分:2)

而不是

if "zabbix" in [fields.tags] {

使用

if "zabbix" in [fields][tags] {

要引用Logstash中的嵌套字段,请指定该字段的完整路径:[top-level field][nested field]

来源:https://www.elastic.co/guide/en/logstash/current/event-dependent-configuration.html#logstash-config-field-references