如何使用 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 输入插件提取的)。
我的问题与疑惑
- 监控节点和 postgres 实例的系统指标(cpu、内存等)的最佳方法是什么?我应该在这台机器上安装 telegraf 代理吗?
- 如何将本地数据发送到"monitoring instance"?
- 本地 telegraf 代理应该直接写入 influxdb 还是应该将指标发送到安装在 "monitoring instance" 中的 telefraf?
提前致谢。
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
我希望能就如何构建一堆 telegraf + InfluxDB + Grafana
来监控一组机器提出建议。
我的场景
我已经在我将调用 "monitoring instance" 的机器上成功安装了堆栈 telegraf + InfluxDB + Grafana
。
我的系统是一个 API,由一台机器 运行 nodejs 和一个 postgres 实例组成。
我可以从我的 Postgresql 数据库(使用 postgres 的 telegraf 输入插件)和我的应用程序(我正在公开一些 prometheus 格式的指标,这些指标是 telegraf 使用 prometheus 输入插件提取的)。
我的问题与疑惑
- 监控节点和 postgres 实例的系统指标(cpu、内存等)的最佳方法是什么?我应该在这台机器上安装 telegraf 代理吗?
- 如何将本地数据发送到"monitoring instance"?
- 本地 telegraf 代理应该直接写入 influxdb 还是应该将指标发送到安装在 "monitoring instance" 中的 telefraf?
提前致谢。
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