时间序列 传感器_时间序列数据库如何帮助理解传感器

时间序列 传感器

基础架构环境的需求和需求每年都在变化,并且系统变得越来越复杂和复杂。 但是,如果我们不了解基础架构以及环境中发生的一切,那么所有这些增长都是毫无意义的。 这是监视工具和软件出现的地方。 它们使操作员和管理员能够查看其环境中的问题并实时进行修复。

但是,如果我们想在问题发生之前进行预测怎么办? 收集有关环境的指标和数据为我们提供了一个了解基础架构性能的窗口,并使我们能够根据数据进行预测。 当我们知道并了解正在发生的事情时,我们可以预防问题,而不仅仅是解决问题。

在使用这些数据之前,我们需要弄清楚如何收集和存储它。 例如,如果我们想每10秒收集100台计算机的CPU使用率数据,则将生成大量数据。 最重要的是,如果每台机器都运行15个容器,并且您也想生成有关每个单独容器的数据怎么办? 如果我们想为每个流程生成数据怎么办? 这是时序数据有用的地方。 时间序列数据库存储时间序列数据。 但是,这是什么意思? 我们将解释所有这些以及更多内容,并向您介绍InfluxDB ,这是一个开放源代码时间序列数据库。 到本文结尾,您将了解:

  • 什么是时间序列数据和数据库
  • 有关InfluxDB和TICK堆栈的基本信息
  • 如何安装InfluxDB和其他工具

引入时间序列概念

Example of table, or how a RDBMS like MySQL stores data

表的示例,或者像MySQL这样的RDBMS如何存储数据。
来自DevShed的图片。

如果您熟悉MySQL等关系数据库管理软件(RDBMS),则表,列和主键是熟悉的术语。 一切都像一个电子表格,列和行中都有数据。 某些数据可能是唯一的,其他部分可能与其他行相同。 关系数据库得到了广泛的使用,非常适合遵循ACID (原子性,一致性,隔离性和持久性)合规性以及可以在表中建模的数据的可靠事务。 您可以通过覆盖并替换某些数据来更新它们。

但是,如果您要收集的数据会生成大量数据(例如自动驾驶汽车),并且您想观察数据随时间的变化,该怎么办? 汽车不断收集有关其环境的信息。 它获取这些数据,并分析随时间的变化以正确运行。 每小时的数据量可能为数十GB。 尽管您可以使用关系数据库来收集此数据,但是在涉及所收集数据的扩展和可用性方面,RBDMS并不是最佳的工具。

为什么时间序列很合适

这就是时序数据的意义所在。 假设您要收集有关城市交通,农业设备温度或装配线生产率的数据。 想象一下不要将数据放入具有行和列的表中,而是要推送按时间戳唯一排序的多行数据。 此视觉效果可能有助于您更好地理解这一点:

Imagine rows and rows of data, uniquely sorted by timestamps

想象一下按时间戳唯一排序的行和数据行。
图片来自时间刻度

使用这种格式的数据可以更轻松地跟踪和观察随着时间的变化。 当数据累积时,您可以查看过去的行为,现在的行为以及将来的行为。 您做出更明智的数据决策的选择范围不断扩大!

好奇数据如何存储和格式化? 这取决于您使用的时间序列数据库。 InfluxDB以线路协议格式存储数据。 查询以JSON返回数据。

How InfluxDB stores time-series data in JSON

InfluxDB如何在Line Protocol中存储时间序列数据。
图片来自Roberto Gaudenzi

要了解有关时序数据或为什么要在其他解决方案上使用它的更多信息, TimescaleInfluxData提供了出色的深入解释。

InfluxDB:时间序列数据库

InfluxDB是由InfluxData开发的开源时间序列数据库软件。 它是用Go(一种编译语言)编写的,这意味着您无需安装任何依赖项就可以开始使用它。 它支持多种数据摄取协议,例如Telegraf (同样来自InfluxData), GraphiteCollectedOpenTSDB 。 这为您提供了灵活的选项,用于您希望如何收集数据以及从何处提取数据。 它也是可用的增长最快的时间序列数据库软件之一。 您可以在GitHub上找到InfluxDB的源代码。

让我们看一下使用InfluxData的TICK堆栈中的三个工具来构建时间序列数据库并开始收集和处理数据。

滴答堆栈

InfluxData的平台基于四个开放源代码项目,这些项目在时间序列数据上可以很好地协同工作。 通过将它们一起使用,您可以轻松地收集,存储,处理和查看数据。 该平台的四个部分称为TICK堆栈,代表:

  • Telegraf :插件驱动的服务器代理,用于收集和报告指标
  • InfluxDB :可扩展的数据存储,用于指标,事件和实时分析
  • Chronograf :TICK堆栈的监视/可视化用户界面(本文未涵盖)
  • Kapacitor :用于处理,监视和警告时间序列数据的框架

这些工具可以正常工作,并且可以与其他组件很好地集成在一起。 但是,将一件零件替换为您选择的另一件工具也很容易。 在这里,我们将探究TICK堆栈的三个部分:InfluxDB,Telegraf和Kapacitor。

Diagram of how the different components of the InfluxDB TICK stack connect with each other

TICK堆栈的不同组件如何相互连接的示意图。
来自influxdata.com

InfluxDB

如前所述, InfluxDB是TICK堆栈的时间序列数据库。 有几件事使InfluxDB在其他时间序列数据库中脱颖而出。

  • 强调性能:性能是InfluxDB的首要任务之一。 这使您即使在重负载下也可以快速轻松地使用数据。 为此,InfluxDB专注于快速提取数据并使用压缩使其可管理。 要查询和写入数据,它使用HTTP(S)API。 它的性能值得注意,可以确保InfluxDB能够处理的数据量。 它可以每秒精确地处理多达一百万个数据点,甚至达到纳秒级。
  • 类似于SQL的查询:如果您熟悉类似SQL的语法,那么从InfluxDB查询数据就会感到很熟悉。 它使用自己的类似于SQL的语法InfluxQL进行查询。 例如,假设您正在收集计算机上已用磁盘空间上的数据。 如果您想查看这些数据,可以编写一个看起来像这样的查询,该查询将从三个月的时间段中提取已用磁盘空间的平均值,并以10天为增量对它们进行分组:


   
   
SELECT mean ( diskspace_used ) as mean_disk_used
FROM disk_stats
WHERE time ( ) > = 3m
GROUP BY time ( 10d )
  • 下采样和数据保留:当处理大量数据时,存储数据成为一个问题。 随着时间的流逝,它会累积到巨大的规模。 使用InfluxDB,您可以将样本缩减为精度较低,较小的指标,从而可以存储更长的时间。 数据保留策略使您可以执行此操作。 例如,假设您有一些传感器正在收集有关许多计算机中RAM量的数据。 您可能会收集有关多个用户正在使用的内存量,系统,缓存的内存等的指标。 虽然可以将这些数据保留30天以观察正在发生的事情,但是30天之后,您可能不需要如此精确的数据。 相反,您可能只希望总内存与正在使用的内存之比。 使用数据保留策略,您可以告诉InfluxDB在30天之内针对所有不同的使用情况保留精确的数据。 30天后,您可能会平均得出不太准确的数据,并且可以将数据永久保留六个月,或者随意保留多长时间。 在保留历史数据和减少磁盘使用之间的中间折中。

Telegraf

如果InfluxDB是所有数据的存放地,则首先需要一种收集和收集数据的方法。 Telegraf是一个度量标准收集守护程序,它从系统组件,物联网(IoT)传感器等收集各种度量标准。 它是开源的 ,完全用Go编写。 像InfluxDB一样,Telegraf由InfluxData团队编写,并且可以与InfluxDB一起使用。 它还包括对不同数据库的支持,例如MySQL / MariaDB,MongoDB,Redis等。 您可以在InfluxData的网站上阅读有关它的更多信息。

Telegraf是模块化的,并且很大程度上基于插件。 这意味着Telegraf可以按照您的需要精简,最小化或充实和复杂。 开箱,它支持超过100个插件关于各种输入源(包括Apache,Ceph的,多克尔,Iptables的,Kubernetes,Nginx等清漆),处理和输出。

即使您没有将InfluxDB用作数据存储,您也可能会发现Telegraf是收集有关系统或传感器的数据和信息的有用方法。

卡帕托

现在,我们有了一种收集和存储数据的方法。 但是用它做事呢? Kapacitor是堆栈的一部分,可让您以几种不同的方式处理和使用数据。 它支持流数据和批处理数据。 流数据意味着您甚至可以在数据存储到数据存储之前就实时主动地对其进行处理和成形。 批处理数据意味着您可以对数据的样本或批处理进行追溯操作。

Kapacitor最大的优点之一是,它可以为您环境中发生的事件提供实时警报。 CPU使用率超载或温度过高? 您可以设置几种不同的警报系统,包括但不限于电子邮件,触发命令,Slack,HipChat,OpsGenie等。 您可以在文档中看到完整列表。

与其他TICK堆栈工具一样,Kapacitor是开源的 。 您可以在README中阅读有关该项目的更多信息。

安装TICK堆栈

几乎所有发行版都提供软件包。 您可以从命令行安装这些软件包。 使用说明进行分发。

软呢帽



   
   
sudo dnf install https: // dl.influxdata.com / influxdb / releases / influxdb-1.3.1.x86_64.rpm \
https: // dl.influxdata.com / telegraf / releases / telegraf-1.3.4- 1 .x86_64.rpm \
https: // dl.influxdata.com / kapacitor / releases / kapacitor-1.3.1.x86_64.rpm

CentOS 7 / RHEL 7



   
   
sudo yum install https: // dl.influxdata.com / influxdb / releases / influxdb-1.3.1.x86_64.rpm \
https: // dl.influxdata.com / telegraf / releases / telegraf-1.3.4- 1 .x86_64.rpm \
https: // dl.influxdata.com / kapacitor / releases / kapacitor-1.3.1.x86_64.rpm

Ubuntu / Debian的



   
   
wget https: // dl.influxdata.com / influxdb / releases / influxdb_1.3.1_amd64.deb \
https: // dl.influxdata.com / telegraf / releases / telegraf_1.3.4- 1 _amd64.deb \
https: // dl.influxdata.com / kapacitor / releases / kapacitor_1.3.1_amd64.deb
sudo dpkg -i influxdb_1.3.1_amd64.deb telegraf_1.3.4- 1 _amd64.deb kapacitor_1.3.1_amd64.deb

其他发行

有关其他发行版的帮助,请参见下载页面。

看数据,就是数据

现在,您已经安装了工具,可以尝试其中的一些工具。 这三个项目都有大量上游文档:

此外,要获得更多帮助,您可以访问InfluxData社区论坛 。 骇客骇客!

翻译自: https://opensource.com/article/17/8/influxdb-time-series-database-stack

时间序列 传感器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值