我是ELK stack的新手,我从使用Filebeat和Logstash将Windows Server 2012应用程序服务器上的IIS日志推送到弹性搜索开始。
我计划对此进行扩展,以便它也会推送由我们的应用程序(而不是IIS)编写的自定义应用程序日志。要做到这一点,我需要在Logstash中区分不同类型的日志。
在filebeat中也是如此。yml我添加了一个名为“log\u type”的自定义字段:
type: log
enabled: true
paths:
- C:\inetpub\logs\LogFiles\*\*
fields:
log_type: iis
在我的日志库中,我试图根据“log\u 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"
}
}
}
我找了又找,但找不到该怎么做。非常感谢您的帮助。