来自 Filebeat 的自定义字段的 Logstash 条件逻辑
Logstash conditional logic on custom field from Filebeat
我是 ELK 堆栈的新手,我首先使用 Filebeat 和 Logstash 将我的 Windows Server 2012 应用程序服务器上的 IIS 日志推送到 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"
}
}
}
我搜索了又搜索,但找不到如何执行此操作。非常感谢您的帮助。
要访问 Logstash 中的字段,语法应为 [fields][log_type]
而不是 [fields.log_type]
。
参考
你的配置中有这一行吗? fields_under_root: true
。如果是,您可以直接 [log_type]
尝试,不带任何前缀。
我是 ELK 堆栈的新手,我首先使用 Filebeat 和 Logstash 将我的 Windows Server 2012 应用程序服务器上的 IIS 日志推送到 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"
}
}
}
我搜索了又搜索,但找不到如何执行此操作。非常感谢您的帮助。
要访问 Logstash 中的字段,语法应为 [fields][log_type]
而不是 [fields.log_type]
。
参考
你的配置中有这一行吗? fields_under_root: true
。如果是,您可以直接 [log_type]
尝试,不带任何前缀。