输出元数据时 Logstash 停止
Logstash stopping when metadata is in output
我正尝试按照本教程设置 ELK Stack:https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04
但是,Logstash 存在一个问题:如果输出部分中存在模式,则服务将停止,例如
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
然而,对于常量字符串,它工作得很好:index => "nginx_web"
有没有办法跟踪从 filebeat 传入的数据以检查有问题的部分?
logstash 2.3.2,filebeat 1.2.3
这里是完整的 logstash.conf:
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/path/to/certs/logstash.crt"
ssl_key => "/path/to/private/logstash.key"
}
}
filter {
grok {
match => {
"message" => "%{IPORHOST:hostname} %{IPORHOST:clientip} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{DATA:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{INT:response} (?:%{INT:bytes}|-) \"%{NOTSPACE:referrer}\" %{QS:useragent} %{NUMBER:resptime}"
}
remove_field => [ "message", "fields", "@timestamp", "input_type", "host", "request" ]
}
mutate {
gsub => [ "useragent", "\"{1}", "" ]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
提前致谢!
您不应删除 @timestamp
字段,因为它用于索引名称中的 %{+YYYY.MM.dd}
部分。
如果您绝对想删除 @timestamp
字段,另一种方法是在删除 @timestamp
字段之前为索引名称添加一个新字段。
在remove_field
之前添加:
add_field => { "index" => "beat-%{+YYYY.MM.dd}"}
然后在 elasticsearch
输出中使用 %{index}
。
我正尝试按照本教程设置 ELK Stack:https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04
但是,Logstash 存在一个问题:如果输出部分中存在模式,则服务将停止,例如
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
然而,对于常量字符串,它工作得很好:index => "nginx_web"
有没有办法跟踪从 filebeat 传入的数据以检查有问题的部分?
logstash 2.3.2,filebeat 1.2.3
这里是完整的 logstash.conf:
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/path/to/certs/logstash.crt"
ssl_key => "/path/to/private/logstash.key"
}
}
filter {
grok {
match => {
"message" => "%{IPORHOST:hostname} %{IPORHOST:clientip} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{DATA:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{INT:response} (?:%{INT:bytes}|-) \"%{NOTSPACE:referrer}\" %{QS:useragent} %{NUMBER:resptime}"
}
remove_field => [ "message", "fields", "@timestamp", "input_type", "host", "request" ]
}
mutate {
gsub => [ "useragent", "\"{1}", "" ]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
提前致谢!
您不应删除 @timestamp
字段,因为它用于索引名称中的 %{+YYYY.MM.dd}
部分。
如果您绝对想删除 @timestamp
字段,另一种方法是在删除 @timestamp
字段之前为索引名称添加一个新字段。
在remove_field
之前添加:
add_field => { "index" => "beat-%{+YYYY.MM.dd}"}
然后在 elasticsearch
输出中使用 %{index}
。