Как использовать FluentD в качестве буфера между Telegraf и InfluxDB - PullRequest
0 голосов
/ 31 января 2020

Есть ли способ отправить метрики, собранные из Telegraf, во FluentD, а затем в InfluxDB?

Я знаю, что можно записывать данные из FluentD в InfluxDB; но как доставить данные из Telegraf во FluentD, в основном используя FluentD в качестве буфера (в отличие от использования Kafka или Redis)?

1 Ответ

0 голосов
/ 17 февраля 2020

Хотя с FluentD можно было бы использовать некоторые из доступных, хотя и устаревших плагинов вывода, таких как InfluxDB-Metrics , я не смог заставить плагин работать должным образом, и он не обновлялся более шести лет, поэтому он, вероятно, не будет работать с более новыми выпусками FluentD. Однако

Fluent Bit имеет встроенный выход Influxdb, поэтому я смог заставить его работать с этим. Предостережение в том, что у него нет плагина Telegraf. Таким образом, решение, которое я нашел, состояло в том, чтобы установить входной плагин tcp в Fluent Bit и настроить Telegraf на запись в него отформатированных данных JSON в разделе вывода.

Предостережение в том, что данные JSON вложены и неправильно отформатированы для InfluxDB. Обходной путь должен использовать вложенные фильтры в Fluent Bit, чтобы «поднять» формат вложенных данных и правильно переформатировать для InfluxDB.

Ниже приведен пример дискового пространства, которое не является метрикой c, которая изначально поддерживается метриками Fluent Bit, но изначально поддерживается Telegraf:

@SET me=${HOST_HOSTNAME}

[INPUT]  ## tcp recipe  ## Collect data from telegraf
    Name          tcp
    Listen        0.0.0.0
    Port          5170
    Tag           telegraf.${me}
    Chunk_Size    32
    Buffer_Size   64
    Format        json
[FILTER]  ## rename the three tags sent from Telegraf to prevent duplicates
    Name          modify
    Match         telegraf.*
    Condition Key_Value_Equals name disk
    Rename        fields   fieldsDisk
    Rename        name     nameDisk
    Rename        tags     tagsDisk
[FILTER]  ## un-nest nested JSON formatted info under 'field' tag
    Name          nest
    Match         telegraf.*
    Operation     lift
    Nested_under  fieldsDisk
    Add_prefix    disk.
[FILTER]  ## un-nest nested JSON formatted info under 'disk' tag
    Name          nest
    Match         telegraf.*
    Operation     lift
    Nested_under  tagsDisk
    Add_prefix    disk.
[OUTPUT]  ## output properly formatted JSON info
    Name          influxdb
    Match         telegraf.*
    Host          influxdb.server.com
    Port          8086
    #HTTP_User     whatever
    #HTTP_Passwd   whatever
    Database      telegraf.${me}
    Sequence_Tag  point_in_time
    Auto_Tags     On

ПРИМЕЧАНИЕ: Это просто неуклюжий конфиг для моего собственного доказательства концепции

...