如何使用 telegraf 监控远程系统指标?

How to monitor remote system metrics with telegraf?

我希望能就如何构建一堆 telegraf + InfluxDB + Grafana 来监控一组机器提出建议。

我的场景

我已经在我将调用 "monitoring instance" 的机器上成功安装了堆栈 telegraf + InfluxDB + Grafana

我的系统是一个 API,由一台机器 运行 nodejs 和一个 postgres 实例组成。

我可以从我的 Postgresql 数据库(使用 postgres 的 telegraf 输入插件)和我的应用程序(我正在公开一些 prometheus 格式的指标,这些指标是 telegraf 使用 prometheus 输入插件提取的)。

我的问题与疑惑

提前致谢。

system/server 指标应由本地安装的 telegraf 收集。

您可以将指标从系统 telegraf 直接发送到 influxdb。但是,这使得涌入的监听器容易受到本地 telegraf 实例传输的数据量的影响。它不能很好地缩放。

相反,您可以在系统 telegraf 实例和 influx 之间放置一个队列或 Kafka。这将平滑任何意外的负载,并应保持涌入的听众稳定。在 queue/Kafka 和 influx 之间,您可以拥有一组专用的 telegraf 实例,将数据从 queue/Kafka 加载到 influx 中。他们可以 运行 作为 Kafka 消费者群体,应该可以轻松扩展。

系统telegraf —> Kafka —> telegraf —> influx —> Grafana

您应该能够使用通用套接字编写器输出和套接字输入插件链接 telegraf 实例(受监控设备 -> 监控设备 -> influx),前提是您使用相同的数据格式配置它。

https://github.com/influxdata/telegraf/tree/master/plugins/outputs/socket_writer https://github.com/influxdata/telegraf/tree/master/plugins/inputs/socket_listener https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md

使用支持 InfluxDB 格式的 telegrafs 通用套接字输入,您还可以在受监控设备上部署 fluent-bit 而不是 telegraf。 https://fluentbit.io/documentation/current/output/influxdb.html