Я пытаюсь настроить один рабочий стол, который принимает все сообщения из одной очереди amqp/rabbitmq, фильтрует некоторые сообщения для отправки в statsD, а также отправляет ВСЕ сообщения в список поиска. Следующая реализация не отправляет ЛЮБЫЕ сообщения в ElasticSearch.Как настроить рабочий процесс 1: N с фильтрами в Logstash?
input {
rabbitmq {
host => "amqp-host"
queue => "elasticsearch"
key => "elasticsearch"
exchange => "elasticsearch"
type => "all"
durable => true
auto_delete => false
exclusive => false
format => "json_event"
debug => false
}
}
filter {
grep {
add_tag => "grepped"
match => ["@message", "Execution of .*? took .* sec"]
}
grok {
tags => ["grepped"]
add_tag => "grokked"
pattern => "Execution of %{DATA:command_name} took %{DATA:response_time} sec"
}
mutate {
tags => ["grepped", "grokked"]
lowercase => [ "command_name" ]
add_tag => ["mutated"]
}
}
output {
elasticsearch_river {
type => "all"
rabbitmq_host => "amqp-host"
debug => false
durable => true
persistent => true
es_host => "es-host"
exchange => "logstash-elasticsearch"
exchange_type => "direct"
index => "logs-%{+YYYY.MM.dd}"
index_type => "%{@type}"
queue => "logstash-elasticsearch"
}
statsd {
type => "command-filter"
tags => ["grepped", "grokked", "mutated"]
host => "some.domain.local"
port => 1234
sender => ""
namespace => ""
timing => ["prefix.%{command_name}.suffix", "%{response_time}"]
increment => ["prefix.%{command_name}.suffix"]
}
}
Есть ли какой-нибудь фильтр? Или способ упорядочить теги, чтобы некоторые сообщения были отфильтрованы, а ВСЕ перенаправлены в ES?
Не могли бы вы расширить на то, что клон делает здесь? действительно ли порядок элементов в фильтре? – FuzzyAmi
@FuzzyAmi Прошло некоторое время, я быстро взглянул на документы. Фильтр «clone» создает новые события журнала. Однако каждое «клонированное» событие снова проходит через конвейер ENTIRE. Итак, я клонирую каждое сообщение, когда оно появляется, и добавляю «клонированный» тег с помощью 'add_tag => ['cloned']', а затем, когда он снова появляется, 'exclude_tags => ['cloned']' гарантирует Я не заканчиваю бесконечным циклом клонированных событий. 'clones => ['statsd', 'elastic-search']' key/value создает 2 клонированных события по одному с каждым тегом. Думайте об этом как о ветвящемся механизме для последующей обработки. – TCopple
благодарит за разъяснения! – FuzzyAmi