我是ELK堆栈的新手,我首先将我的Windows Server 2012应用服务器上的IIS日志推送到使用Filebeat和Logstash的Elastic Search。
我计划扩展它,以便它还推送由我们的应用程序(而不是IIS)编写的自定义应用程序日志。要做到这一点,我需要在Logstash中区分一种类型的日志。
所以在filebeat.yml中我添加了一个名为" log_type":
的自定义字段 type: log
enabled: true
paths:
- C:\inetpub\logs\LogFiles\*\*
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"
}
}
}
我已经搜索过并搜索过,但无法知道如何执行此操作。真的很感激一些帮助。
答案 0 :(得分:1)
答案 1 :(得分:1)
您的配置中是否有此行? fields_under_root: true
。如果是,您可以简单地尝试[log_type]
,不带任何前缀。