第 7 部分:如何在 Google Cloud Platform 上使用 TICK Stack 创建 IoT 项目

导航至

第 7 部分:使用 Telegraf 收集系统传感器数据

本教程的最后一部分着眼于 Telegraf,TICK Stack 中的“T”。 Telegraf 是一个代理,用于从各种输入通道收集指标并将它们写入输出通道。它支持超过 60 个插件,这些插件可以用作数据的输入源或输出目标。

该代理完全由插件驱动,虽然它开箱即用地支持多个插件,但您也可以编写自己的插件

到目前为止,我们的教程着眼于从多个气象站收集温度数据,并将数据持久化在 InfluxDB 中。除此之外,我们还研究了如何设置 Chronograf 以通过仪表板查看温度数据,以及如何通过 Kapacitor 设置警报,以便在温度超过某个限制时将通知推送到 Slack。

此时,数据正在通过 Raspberry Pi 站点收集,这些站点具有温度数据,并且流程几乎到位。我们将考虑利用 Telegraf 的领域是监控 InfluxDB 服务器的 CPU、内存和其他系统参数。

  • Telegraf 附带一个名为 `system` 的输入插件。此插件捕获有关其运行系统的各种指标,例如内存使用情况、CPU、磁盘使用情况等。我们将使用此插件捕获 InfluxDB 服务器上的 cpu 和内存指标。
  • 输入指标捕获后需要发送到输出系统。在我们的例子中,我们将把这些数据推送到 InfluxDB 本身。这将帮助我们将这些指标捕获到 InfluxDB 数据库中,我们可以在该数据库上通过 Chronograf 和 Kapacitor 构建仪表板和警报。听起来不错。因此,输出插件将是 InfluxDB。

下图描述了我们将要做的事情

tele1 安装 Telegraf

我们将在 InfluxDB 服务器实例上安装 Telegraf。目前我们只有一个在 Google Cloud 中运行的实例,我们将在该实例上进行设置。

如前所述,VM 运行 Debian Linux,我们可以按照官方文档站点给出的步骤安装 Telegraf。按照下面给出的说明安装最新版本的 Telegraf

wget http://get.influxdb.org/telegraf/telegraf_0.10.2-1_amd64.deb

sudo dpkg -i telegraf_0.10.2-1_amd64.deb

配置 Telegraf

我们需要为 Telegraf 提供一个配置文件。此配置文件不仅包含 Agent 配置参数,还包含您希望配置的输入和输出插件。

Telegraf 支持大量的输入和输出插件,它确实提供了一个命令来生成 telegraf.conf(配置文件),该文件创建所有输入和输出插件配置部分。这对于您来说是一件有用的东西,但不是我们需要的。

我们将使用以下通用命令为我们生成 Telegraf 配置文件

telegraf -sample-config -input-filter <pluginname>[:<pluginname>] -output-filter <outputname>[:<outputname>] > telegraf.conf

在我们的例子中,我们有以下内容

我们生成一个如下所示的 telegraf.conf

telegraf -sample-config -input-filter cpu:mem -output-filter influxdb > telegraf.conf

让我们看一下生成的 telegraf.conf 文件中的关键部分

  • [agent]:这是 Telegraf 代理本身的部分。理想情况下,我们不想在这里进行太多调整。请注意,您可以通过 `interval` 属性更改所有输入的频率(时间间隔)数据收集。
  • 下一节是一个或多个 `outputs`。在我们的例子中,它只是 `influxdb output`,即 `[[outputs.influxdb]]`。两个属性在这里是关键,urls 和 database。 urls 属性是 influxdb 实例的列表。在我们的例子中只有一个,并且我们在与 InfluxDB 实例相同的机器上运行 Telegraf,因此端点指向 `http://localhost:8086` 的 InfluxDB API 端点。同样,database 属性是输入指标将被收集到的数据库。默认情况下,它设置为 `telegraf`,但您可以将其更改为另一个数据库。我将使用默认数据库。
  • 下一节是输入部分。您可以看到它创建了 `[[inputs.cpu]]` 和 `[[inputs.mem]]` 输入。查看 cpumem 输入的文档。

启动 Telegraf 并收集指标

现在让我们通过以下命令启动 Telegraf Agent

telegraf -config telegraf.conf

我们可以将生成的 telegraf.conf 推送到 /etc/telegraf 文件夹并将其作为服务启动,但为了本文教程的解释,这样做就可以了。

成功启动后,它会显示如下所示的输出

$ telegraf -config telegraf.conf
2016/02/15 04:36:39 Starting Telegraf (version 0.10.2)
2016/02/15 04:36:39 Loaded outputs: influxdb
2016/02/15 04:36:39 Loaded inputs: cpu mem
2016/02/15 04:36:39 Tags enabled: host=instance-1
2016/02/15 04:36:39 Agent Config: Interval:10s, Debug:false, Quiet:false, Hostname:"instance-1", Flush Interval:10s

回想一下,Telegraf Agent 的属性之一是 interval 属性,该属性设置为 10 秒。这是它将轮询所有输入以获取数据的时间间隔。

以下是来自多个数据收集间隔的输出

2016/02/15 04:36:40 Gathered metrics, (10s interval), from 2 inputs in 531.909µs
2016/02/15 04:36:50 Gathered metrics, (10s interval), from 2 inputs in 447.937µs
2016/02/15 04:36:50 Wrote 4 metrics to output influxdb in 3.39839ms
2016/02/15 04:37:00 Gathered metrics, (10s interval), from 2 inputs in 482.658µs
2016/02/15 04:37:00 Wrote 3 metrics to output influxdb in 4.324979ms
2016/02/15 04:37:10 Gathered metrics, (10s interval), from 2 inputs in 775.612µs
2016/02/15 04:37:10 Wrote 3 metrics to output influxdb in 7.472159ms
2016/02/15 04:37:20 Gathered metrics, (10s interval), from 2 inputs in 438.388µs
2016/02/15 04:37:20 Wrote 3 metrics to output influxdb in 3.219223ms
2016/02/15 04:37:30 Gathered metrics, (10s interval), from 2 inputs in 419.607µs
2016/02/15 04:37:30 Wrote 3 metrics to output influxdb in 3.159644ms
2016/02/15 04:37:40 Gathered metrics, (10s interval), from 2 inputs in 426.761µs
2016/02/15 04:37:40 Wrote 3 metrics to output influxdb in 3.894155ms
2016/02/15 04:37:50 Gathered metrics, (10s interval), from 2 inputs in 449.508µs
2016/02/15 04:37:50 Wrote 3 metrics to output influxdb in 3.192695ms
2016/02/15 04:38:00 Gathered metrics, (10s interval), from 2 inputs in 498.035µs
2016/02/15 04:38:00 Wrote 3 metrics to output influxdb in 3.831951ms
2016/02/15 04:38:10 Gathered metrics, (10s interval), from 2 inputs in 448.709µs
2016/02/15 04:38:10 Wrote 3 metrics to output influxdb in 3.246991ms
2016/02/15 04:37:30 Gathered metrics, (10s interval), from 2 inputs in 419.607µs
2016/02/15 04:38:20 Gathered metrics, (10s interval), from 2 inputs in 514.15µs
2016/02/15 04:38:20 Wrote 3 metrics to output influxdb in 3.838368ms
2016/02/15 04:38:30 Gathered metrics, (10s interval), from 2 inputs in 520.263µs
2016/02/15 04:38:30 Wrote 3 metrics to output influxdb in 3.76034ms
2016/02/15 04:38:40 Gathered metrics, (10s interval), from 2 inputs in 543.151µs
2016/02/15 04:38:40 Wrote 3 metrics to output influxdb in 3.917381ms
2016/02/15 04:38:50 Gathered metrics, (10s interval), from 2 inputs in 487.683µs
2016/02/15 04:38:50 Wrote 3 metrics to output influxdb in 3.787101ms
2016/02/15 04:39:00 Gathered metrics, (10s interval), from 2 inputs in 617.025µs
2016/02/15 04:39:00 Wrote 3 metrics to output influxdb in 4.364542ms
2016/02/15 04:39:10 Gathered metrics, (10s interval), from 2 inputs in 517.546µs
2016/02/15 04:39:10 Wrote 3 metrics to output influxdb in 4.595062ms
2016/02/15 04:39:20 Gathered metrics, (10s interval), from 2 inputs in 542.686µs
2016/02/15 04:39:20 Wrote 3 metrics to output influxdb in 3.680957ms
2016/02/15 04:39:30 Gathered metrics, (10s interval), from 2 inputs in 526.083µs
2016/02/15 04:39:30 Wrote 3 metrics to output influxdb in 4.32718ms
2016/02/15 04:39:40 Gathered metrics, (10s interval), from 2 inputs in 504.632µs
2016/02/15 04:39:40 Wrote 3 metrics to output influxdb in 3.676524ms
2016/02/15 04:39:50 Gathered metrics, (10s interval), from 2 inputs in 640.896µs
2016/02/15 04:39:50 Wrote 3 metrics to output influxdb in 3.773236ms
2016/02/15 04:40:00 Gathered metrics, (10s interval), from 2 inputs in 491.794µs
2016/02/15 04:40:00 Wrote 3 metrics to output influxdb in 3.608919ms
2016/02/15 04:40:10 Gathered metrics, (10s interval), from 2 inputs in 571.12µs
2016/02/15 04:40:10 Wrote 3 metrics to output influxdb in 3.739155ms
2016/02/15 04:40:20 Gathered metrics, (10s interval), from 2 inputs in 505.122µs
2016/02/15 04:40:20 Wrote 3 metrics to output influxdb in 4.151489ms

由于我们运行了 InfluxDB 服务器以及 Admin 界面的端点,我们可以从 Admin 界面本身调查 telegraf 数据库(您也可以通过 InfluxDB shell 完成!)

tele2 以下是一些 cpu 测量记录

tele3 以下是一些 mem 测量记录

tele4下一步,您可以将可视化(Chronograf)或警报(Kapacitor)连接到此 Telegraf 数据库。

结论

这结束了关于使用 InfluxDB 的 TICK 堆栈的 7 部分教程。 TICK 堆栈提供了一流的组件集,用于在时间序列数据库上构建现代且可扩展的解决方案。我们希望本教程能让您了解其潜力,并帮助您开始创建成功的应用程序。

下一步是什么?

  • 此处 开始使用 InfluxDB。
  • 希望提升您的 InfluxDB 知识?查看我们经济实惠的虚拟公开培训