代码之家  ›  专栏  ›  技术社区  ›  Shōgun8

如何使用FluentD作为Telegraf和InfluxDB之间的缓冲区

  •  0
  • Shōgun8  · 技术社区  · 6 年前

    有没有办法将从Telegraf收集的指标传输到FluentD,然后再传输到InfluxDB?

    我知道可以将FluentD中的数据写入InfluxDB;但是,如何将数据从Telegraf传输到FluentD,基本上使用FluentD作为缓冲区(而不是使用Kafka或Redis)?

    0 回复  |  直到 6 年前
        1
  •  0
  •   Shōgun8    6 年前

    虽然可以使用一些可用但过时的输出插件来使用FluentD,例如 InfluxDB-Metrics ,我无法让插件正常工作,而且它已经六年多没有更新了,所以它可能无法与FluentD的新版本一起使用。

    然而,Fluent Bit内置了Influxdb输出,所以我能够让它使用它。需要注意的是,它没有Telegraf插件。所以我找到的解决方案是设置一个 tcp input plugin 在Fluent Bit中,设置Telegraf在其输出部分写入JSON格式的数据。

    这样做的警告是,JSON数据是嵌套的,对于InfluxDB格式不正确。解决方法是使用 nest filters 在Fluent Bit中“提升”嵌套数据格式,并为InfluxDB正确重新格式化。

    下面是一个磁盘空间的示例,它不是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
    

    注: 对于我自己的概念证明来说,这只是一个简单而尴尬的配置

    推荐文章