如何使用 Telegraf Agent 设置来定时数据采集

导航至

许多 Telegraf 和 InfluxDB 用户经常花费大量时间来找到完美的平衡点,既能获取他们想要的数据,又不会写入过多数据,从而避免在数据库中处理不必要的数据。这篇博文将帮助您更好地理解 Telegraf 的数据采集设置,并帮助您微调配置。

您可以将这篇文章作为指南,帮助您轻松设置 Telegraf 从设备收集数据的时间和频率,从而帮助您克服可能对可执行查询数量有限制的端点。

这篇文章将只介绍 Telegraf 接收数据的设置。在另一篇文章中,我将介绍数据如何从 Telegraf 传输和发送出去。

使用 interval 设置指标收集频率

Interval 设置用于确定 Telegraf 收集指标的频率,是所有输入的数据采集间隔。您希望收集指标的频率越高,interval 设置就应该越低。

interval 设置可以在 agent 或插件级别设置。如果某个输入应该比其他输入运行频率更低或更高,您可以在插件级别使用它。

默认的 interval 设置为 10 秒,每 10 秒收集一次数据。如果您希望数据收集频率加倍,您可以将设置降低到 interval = "5s",使其在每分钟的 5、10、15、20 秒等时刻运行。interval 设置相当简单,但也是数据采集行为最重要的配置之一。

set interval

在上面的图表中,使用 interval = "10m"round_interval = true 设置,Telegraf 每 10 分钟在整十分钟时刻收集数据。

round_interval 确定 Telegraf 是否会对齐采集间隔

round_interval 设置确定 Telegraf 是否会对齐采集间隔。此设置将设置为布尔值 (true/false)。在之前的示例中,当 round_interval 设置为 true 时,Telegraf 将在整十分钟时刻收集。如果 interval 设置为 “5m”,并且 round_interval 启用,则 Telegraf 将在 :05、:10、:15、:20 等时刻收集。时间戳在使用时间序列数据时尤为重要。round interval 设置有助于确保来自所有来源的时间戳在所有 Telegraf agent 中对齐和统一。

但是,如果我们将 round_interval 更改为 false,Telegraf 会在 Telegraf 启动时立即收集,然后按照设置的 interval 继续收集。在下面的示例中,我们将 round_interval = false,并保持相同的 interval = "10m"。如果我们在一小时的第 7 分钟启动 Telegraf,Telegraf 将立即收集指标,然后继续每 10 分钟收集一次,即每小时的 17、27、37、47、57 分钟。

round-interval

使用 collection_jitter 随机偏移采集

如果用户配置了大量输入指标,在采集过程中添加一些随机性可以帮助确保目标不会过载。您可以为此用例使用 collection_jitter,以随机抖动采集。此设置可以在 agent 或输入插件级别使用。如果在插件级别使用,则每个插件将在设置的抖动范围内随机休眠一段时间,然后再进行采集。

用于采集的范围介于 intervalinterval 加上或减去抖动量之间。因此,如果我们保持 interval10m,并将 collection_jitter = "2m",则每个输入将在 8-12 分钟的间隔内随机触发。

collection_jitter

使用 collection_offset 精确调度采集

collection_offset 设置是 Telegraf 1.22 中新增的 agent 设置。collection_offset 设置用于将采集偏移给定的间隔。此设置允许您通过手动安排时间来避免许多插件同时查询受限设备,这与 collection_jitter 可以随机偏移时间不同。

如果您有远程数据在午夜同时更新,您可以使用 collection_offset 在数据上传后精确地安排采集,并每天按此节奏继续执行。

在本例中,我们将保持 interval = "10m" 设置,将 round_intervalcollection_jitter 恢复为默认值,并将 collection_offset = "6m"。无论我们何时启动 Telegraf,我们都将在每小时的 6、16、26、36、46、56 分钟收集数据。

Collection_offset

此外,与 collection jitter 不同,collection offset 允许您保持 Telegraf 采集的间隔一致且精确。Collection offset 为您提供可控的数据采集,以获得可预测的时间戳。

设置时间戳的 precision

precision 设置不一定控制数据的采集方式,但它对于查看定时数据的粒度非常重要。使用 precision 设置,您可以通过指定整数和单位(例如:1ns1us1ms1s)来设置时间戳的精度。您的精度可以设置为秒到纳秒之间的任何值。重要的是要注意,precision 不会用于服务输入插件,例如 statsd。

精度 Unix 格式的时间戳示例
1纳秒 1631202459121837307
1微秒 1631202459121837000
1毫秒 1631202459121000000
1秒 1631202459000000000

了解更多!

观看 Josh Powers 的这段视频,他讨论了其中一些设置以及更多 Telegraf agent 设置。

如果您对如何在 Telegraf 配置中使用这些数据采集设置有任何疑问,请随时访问我们的社区网站Slack 联系我们。如果您想深入了解 Telegraf,InfluxDB 大学提供了涵盖 Telegraf、InfluxDB、Flux 等内容的完整课程列表。