对 Filebeat 中的自定义字段进行 logstash 条件逻辑



我是 ELK 堆栈的新手,我开始使用 Filebeat 和 Logstash 将 Windows Server 2012 应用程序服务器上的 IIS 日志推送到 Elastic Search。

我计划扩展它,以便它还推送由我们的应用程序(而不是 IIS(编写的自定义应用程序日志。为此,我需要在 Logstash 中区分一种类型的日志和另一种类型的日志。

因此,在filebeat.yml中,我添加了一个名为"log_type"的自定义字段:

  type: log
  enabled: true
  paths:
     - C:inetpublogsLogFiles**
  fields:
    log_type: iis

在我的 Logstash 中,我尝试根据"log_type"的值执行一些条件逻辑,但它不起作用。如果我删除条件逻辑,过滤器就可以工作。

filter {
  if [fields.log_type] == "iis" {
    grok {
      match => { "message" => "%{TIMESTAMP_ISO8601:log_timestamp} %{IPORHOST:site} %{WORD:method} %{URIPATH:page} %{NOTSPACE:querystring} %{NUMBER:port} %{NOTSPACE:username} %{IPORHOST:clienthost} %{NOTSPACE:useragent} %{NOTSPACE:referer} %{NUMBER:response} %{NUMBER:subresponse} %{NUMBER:scstatus} %{NUMBER:timetaken:int}"}
    }
    date {
        match => [ "log_timestamp", "ISO8601" ]
        target => "@timestamp"
    }
  }
}

我已经搜索了又搜索,但找不到如何做到这一点。真的很感激一些帮助。

要访问 Logstash 中的字段,语法应该是[fields][log_type]而不是[fields.log_type]

参考

  • 日志字段引用

您的配置中有此行吗? fields_under_root: true .如果是,您可以尝试简单地[log_type],没有任何前缀。

相关内容

  • 没有找到相关文章

最新更新