【发布时间】:2020-01-31 02:02:59
【问题描述】:
有什么方法可以将从 Telegraf 收集的指标发送到 FluentD,然后发送到 InfluxDB?
我知道将数据从 FluentD 写入 InfluxDB 是可能的;但是如何将数据从 Telegraf 传送到 FluentD,基本上使用 FluentD 作为缓冲区(而不是使用 Kafka 或 Redis)?
【问题讨论】:
标签: influxdb fluentd telegraf kapacitor
有什么方法可以将从 Telegraf 收集的指标发送到 FluentD,然后发送到 InfluxDB?
我知道将数据从 FluentD 写入 InfluxDB 是可能的;但是如何将数据从 Telegraf 传送到 FluentD,基本上使用 FluentD 作为缓冲区(而不是使用 Kafka 或 Redis)?
【问题讨论】:
标签: influxdb fluentd telegraf kapacitor
虽然使用一些可用的输出插件(例如 InfluxDB-Metrics)可能与 FluentD 相关,但我无法让插件正常工作,并且六年多没有更新,因此它可能不适用于较新版本的 FluentD。
Fluent Bit 但是,它内置了一个 Influxdb 输出,所以我能够让它与它一起工作。需要注意的是它没有 Telegraf 插件。所以我找到的解决方案是在 Fluent Bit 中设置一个tcp input plugin,并设置 Telegraf 在其输出部分向其写入 JSON 格式的数据。
这样做的警告是,JSON 数据是嵌套的,并且没有为 InfluxDB 正确格式化。解决方法是在 Fluent Bit 中使用 nest filters 来“提升”嵌套数据格式,并为 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
注意:这只是我自己的概念证明的一个简单尴尬的配置
【讨论】: