Объединение нескольких событий в Logstash
У меня есть конфигурация Logstash, где я читаю простые строки из графитового ввода (но если это помогает, это может быть просто tcp), и я пересылаю их в RabbitMQ через AMQP.
input {
graphite {
host => localhost
type => carbon
port => 22003
}
}
output {
rabbitmq {
codec => json
host => 'localhost'
port => 5672
user => 'guest'
password => 'guest'
vhost => '/'
exchange_type => topic
key => '%{type}'
persistent => true
durable => true
ssl => false
verify_ssl => false
workers => 1
exchange => 'metrics'
}
}
Теперь я хотел бы оптимизировать соотношение полезной нагрузки и накладных расходов, добавив больше, чем в режиме онлайн, из графитового ввода в одно сообщение AMQP.
Я смотрел на фильтры, такие как сортировка или агрегирование, но, похоже, они не выполняют именно то, что мне нужно. Мне нужен транспортный формат, в котором одно сообщение AMQP содержит примерно 20 или 30 строк из этого ввода.
1 ответ
Решение
Сам разобрался, пользуюсь multiline
в качестве входного кодека сейчас:
tcp {
host => localhost
codec => multiline { pattern => "\r" max_lines => 100 what => "next" }
type => carbon
port => 22003
}