Я пытаюсь получить logstash для анализа пар ключ-значение в HTTP-запросе на получение из моих файлов журнала ELB.
поле запроса выглядит как http://aaa.bbb/get?a=1&b=2
Я бы хотел, чтобы в строке журнала выше было поле для a
и b
, и у меня возникли проблемы с его пониманием.
Ниже приведен мой файл logstash conf (отформатированный для ясности), который не загружает никаких дополнительных ключевых полей. Я предполагаю, что мне нужно отделить адресную часть URI, но я этого не понял.
input {
file {
path => "/home/ubuntu/logs/**/*.log"
type => "elb"
start_position => "beginning"
sincedb_path => "log_sincedb"
}
}
filter {
if [type] == "elb" {
grok {
match => [ "message", "%{TIMESTAMP_ISO8601:timestamp}
%{NOTSPACE:loadbalancer} %{IP:client_ip}:%{NUMBER:client_port:int}
%{IP:backend_ip}:%{NUMBER:backend_port:int}
%{NUMBER:request_processing_time:float}
%{NUMBER:backend_processing_time:float}
%{NUMBER:response_processing_time:float}
%{NUMBER:elb_status_code:int}
%{NUMBER:backend_status_code:int}
%{NUMBER:received_bytes:int} %{NUMBER:sent_bytes:int}
%{QS:request}" ]
}
date {
match => [ "timestamp", "ISO8601" ]
}
kv {
field_split => "&?"
source => "request"
exclude_keys => ["callback"]
}
}
}
output {
elasticsearch { host => localhost }
}
request
? Что в нем? - person Alain Collins   schedule 06.08.2015%{QS:request}
. Это URL-адрес, указанный в вопросе. - person Tony Laidig   schedule 06.08.2015