我将Nginx日志从Filebeat发送到Logstash,后者将它们编入索引到Elasticsearch。
每个条目都会被索引两次。一旦使用了正确的grok过滤器,然后再次找不到任何字段,除了"消息"字段。
这是logstash配置。
02-节拍-input.conf中
input {
beats {
port => 5044
ssl => false
}
}
11-nginx的-filter.conf
filter {
if [type] == "nginx-access" {
grok {
patterns_dir => ['/etc/logstash/patterns']
match => {"message" => "%{NGINXACCESS}"
}
date {
match => [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z", "d/MMM/YYYY:HH:mm:ss Z" ]
}
}
}
Nginx模式
NGUSERNAME [a-zA-Z\.\@\-\+_%]+
NGUSER %{NGUSERNAME}
NGINXACCESS %{IPORHOST:clientip}\s+%{NGUSER:ident}\s+%{NGUSER:auth}\s+\[%{HTTPDATE:timestamp}\]\s+\"%{WORD:verb}\s+%{URIPATHPARAM:request}\s+HTTP/%{NUMBER:httpversion}\"\s+%{NUMBER:response}\s+(?:%{NUMBER:bytes}|-)\s+(?:\"(?:%{URI:referrer}|-)\"|%{QS:referrer})\s+%{QS:agent}
30 elasticsearc-output.conf
output {
elasticsearch {
hosts => ["elastic00:9200", "elastic01:9200", "elastic02:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
答案 0 :(得分:0)
检查文件配置!
在设置过程中,我意外取消了评论并配置了output.elasticsearch
的{{1}}部分。
然后我还配置了配置的filebeat.yml
部分,但忘了注释掉弹性搜索输出部分。
这导致一个条目被发送到logstash,在那里它是grok&d;另一个条目被直接发送到elasticsearch。