Условное создание полей зависит от результатов фильтрации в выводе logstash influxdb

Я использую logstash для сбора метрик sar с сервера и сохраняю их в influxdb. Метрики из разных источников (ЦП, память, сеть) должны быть вставлены в разные серии influxdb. Конечно, количество и названия полей в этих сериях зависят от типа источника метрик.

Это мой файл конфигурации: https://github.com/evgygor/test/blob/master/logstash.conf

Для каждого [типа] метрик я должен настроить отдельный вывод influxdb. В этом примере я настроил два типа метрик, но я планирую использовать его для метрик SAR, метрик JMX, csv из метрик Jmeter, то есть мне нужно настроить соответствующий вывод для каждой из них (десятки).

Вопросы:

Как я могу разработать желаемую конфигурацию? У меня есть возможность использовать условия внутри плагина. Пример:

if [type]=="system.cpu" {

          data_points => {
                        "time" => "%{time}"
                        "user"    => "%{user}"
          }
  }
 else {
          data_points => {
                         "time" => "%{time}"
                         "kbtotalmemory" => "%{kbtotalmemory}"
                         "kbmemfree" => "%{kbmemfree}"
                         "kbmemused" => "%{kbmemused}"
          }
}

Есть ли какой-либо флаг для определения плагина influxdb для использования по умолчанию имен полей/типов данных из ввода? Есть ли какой-либо флаг/возможность определить тип данных по умолчанию? Есть ли возможность установить имя поля «время», зарезервированное с целым числом типа данных? Большое спасибо.


person Eugene Gorelik    schedule 10.02.2015    source источник


Ответы (1)


Я приготовил хороший раствор. Эта вилка позволяет создавать поля на лету, в соответствии с именами полей и типами данных, которые поступают в этот выходной плагин.

Я добавил 2 параметра конфигурации:

Эти настройки отменяют необходимость использования конфигурации data_points и coerce_values ​​# для создания соответствующей вставки в influxedb. Должен использоваться с конфигурацией fields_to_skip # Этот параметр устанавливает имена точек данных (столбцов) как имя поля из события прибытия в плагин, # значение для конфигурации точек данных :use_event_fields_for_data_points, :validate => :boolean, :default => true

Массив с ключами для удаления из дальнейшей обработки. # По умолчанию событие, пришедшее на выходной плагин, содержит ключи "@version", "@timestamp" # и может содержать другие поля, такие как, например, "команда", добавленная входным плагином EXEC. # Конечно, нам не нужно, чтобы эти поля обрабатывались и вставлялись в influxdb, когда конфигурация # use_event_fields_for_data_points имеет значение true. # Мы не удаляем ключи из события, мы создаем новый хэш из события и после этого # удаляем ненужные ключи.

конфиг :fields_to_skip, :validate => :array, :default => []

Это мой пример файла конфигурации: я получаю разное количество полей с разными именами из ЦП, памяти, дисков, но мне не нужна разная конфигурация для каждого типа данных, как в основной ветке. Я создаю соответствующие имена полей и типы данных на этапе фильтрации и просто пропускаю ненужные поля в плагине outputv.

https://github.com/evgygor/logstash-output-influxdb

person Eugene Gorelik    schedule 23.02.2015