第7部分:如何在 Google Cloud Platform 上使用 TICK Stack 创建 IoT 项目
作者:Todd Persen / 产品,用例
2016年3月8日
导航至
第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。
以下图表展示了我们将要做什么
安装 Telegraf
我们将在InfluxDB服务器实例上安装Telegraf。目前我们仅在谷歌云上有一个运行的实例,我们将在此实例上设置它。
如前所述,虚拟机运行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提供一个配置文件。此配置文件将包含不仅仅是代理配置参数,还包括您希望配置的输入和输出插件。
Telegraf支持大量输入和输出插件,并且确实提供了一个生成telegraf.conf(配置文件)的命令,该命令创建所有输入和输出插件配置部分。这是一件很有用的事情,但不是我们需要的。
我们将使用以下通用命令为我们生成Telegraf配置文件
telegraf -sample-config -input-filter <pluginname>[:<pluginname>] -output-filter <outputname>[:<outputname>] > telegraf.conf
在我们的情况下,我们有以下内容
- 输入过滤器来自系统输入插件。我们对cpu和mem感兴趣。
- 输出过滤器只有一个,就是InfluxDB输出插件。
我们生成以下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实例。在我们的情况下只有一个,我们正在同一台机器上运行Telegraf和InfluxDB实例,因此端点指向InfluxDB API端点`https://127.0.0.1:8086`。同样,database属性是收集输入度量值的数据库。默认设置为`telegraf`,但您可以将其更改为另一个。我将使用默认值。
- 下一个部分是输入。您可以看到它创建了`[[inputs.cpu]]`和`[[inputs.mem]]`输入。请查看cpu和mem输入的文档。
启动Telegraf并收集度量值
现在让我们通过以下命令启动Telegraf代理
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代理的一个属性是间隔属性,设置为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服务器并配置了管理界面的端点,我们可以直接从管理界面本身来调查telegraf
数据库(你也可以通过InfluxDB shell来做这件事!)
这里是一些cpu
测量记录
这里是一些mem
测量记录
下一步,你可以在Telegraf数据库中集成可视化(Chronograf)或警报(Kapacitor)。
结论
这标志着从InfluxDB使用TICK堆栈的7部分教程的结束。TICK堆栈提供了一套最佳组件,用于在时序数据库上构建现代和可扩展的解决方案。我们希望这个教程能让你窥见其潜力,并帮助你开始创建获胜的应用。