Объединение нескольких событий в 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
}
Другие вопросы по тегам