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

Posted

技术标签:

【中文标题】如何使用 telegraf 监控远程系统指标?【英文标题】:How to monitor remote system metrics with telegraf? 【发布时间】:2019-06-13 12:39:10 【问题描述】:

我希望得到一些关于如何构建 telegraf + InfluxDB + Grafana 堆栈来监控一组机器的建议。

我的场景

我已经在一台机器上成功安装了堆栈telegraf + InfluxDB + Grafana,我将称之为“监控实例”。

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

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

我的疑问和疑惑

同时监控节点和 postgres 实例的系统指标(cpu、mem 等)的最佳方法是什么?我应该在这台机器上安装电报代理吗? 如何将本地数据发送到“监控实例”? 本地 telegraf 代理应该直接写入 influxdb 还是应该将指标发送到安装在“监控实例”中的 telefraf?

提前致谢。

【问题讨论】:

是的,首先从 Telegraf 代理开始,让您了解它的强大和灵活,然后查看您可以使用哪些插件。 Telegraf 可以将数据直接推送到 InfluxDB,您可能希望在开始构建任何复杂的东西之前这样做。您在 Telegraf 配置文件中指定 InfluxDB 的 IP+端口,当您这样做时,您会看到它还提供什么。如果您只是从这个开始,卡夫卡完全是矫枉过正。从小而轻松开始,从那里开始积累知识和理解。 【参考方案1】:

系统/服务器指标应由本地安装的电报收集。

您可以将系统电报中的指标直接发送到 influxdb。但是,这使得流入监听器容易受到本地电报实例抽取的数据量的影响。它不能优雅地扩展。

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

System telegraf —> Kafka —> telegraf —> influx —> Grafana

【讨论】:

【参考方案2】:

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

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 监控远程系统指标?的主要内容,如果未能解决你的问题,请参考以下文章

Windows服务器使用Telegraf采集服务器监控指标输出到influxdb

使用Nginx+Telegraf+Influxb+Grafana构建高逼格Nginx集群监控系统!

我正在寻找一种方法来使用 Telegraf 和 InfluxDB 监控 Kubernetes pod 指标的“CPU Throttling”

用Nginx+Telegraf+Influxb+Grafana构建高逼格Nginx集群监控系统

telegraph.conf配置

Telegraf 输入插件:如何确定从哪个服务接受输入