InfluxData的InfluxDB和TICK Stack简介
作者:Gunnar Aasen / 产品,开发者,公司
2017年9月22日
导航至
InfluxData提供了一种现代时序平台,从头开始设计以处理指标和事件。InfluxData的产品基于开源核心。这个开源核心包括项目Telegraf、InfluxDB、Chronograf、Kapacitor——统称为TICK Stack。
什么是时序数据?
时序数据简单来说是一组带有时间戳的值,其中时间数据是该数据中一个有意义的组成部分。时序数据的一个经典的现实世界例子是股票货币交易所的价格数据。例如,下面的图表(来自Coinbase图表)显示了过去一个月美元对比特币的兑换价格。
如图表所示,比特币的美元价格随时间变化。用于创建此图表的基础数据集由许多带时间戳的值组成,这些值共同形成一组值。这组值就是时序数据。
此时,你可能正在想……
这有什么特别之处?
上面的图表显示了过去一个月内几千个点。然而,像比特币这样的加密货币交易频繁,因此用于生成图表的基础数据集可能包含数千万个数据点。事实上,大多数时序数据中通常有如此多的数据,几乎总是需要汇总以显示,屏幕上的像素无法显示数据的全部细节。还有其他加密货币,以及数千种常规货币正在交易。
生成的时间序列数据量简直巨大。这种规模一直是创建专门的时间序列数据存储的主要原因之一。
什么是时间序列数据库?
时间序列数据库通常需要解决两个问题:高写入吞吐量和高查询率。让我们更深入地探讨这些问题。
- 写入吞吐量:例如,监控服务器群组所生成的时间序列数据量可以迅速从每秒数千个新值增长到每秒数百万个新值。将如此大量的数据插入到MySQL和PostgreSQL等常规的关系型数据库中,如果没有仔细调整,很快就会使大多数系统崩溃。即便如此,系统在任何时候能够接受的数据量也是有限的。
- 查询吞吐量:时间序列数据的一个方面是,新数据几乎总是比旧数据更有价值。再次以服务器群组为例。知道有一台服务器开始耗尽所有CPU,比在CPU峰值后的几分钟内查看证据更有用。时间序列的实时性使得在查询中尽快暴露新数据变得必要。此外,时间序列中的每一个点都不重要。就像上面显示的比特币图表一样,大多数时间序列数据都被汇总到中间值,因为趋势比单个数据点提供更多信息。
由于时间序列数据库专门处理时间戳数据,因此有许多优化可以解决上述两个基本问题以及其他一些问题。
- 压缩:由于所有时间序列都由时间戳数据组成,因此可以实现大量压缩。
- 查询函数:速度并不是查询中唯一重要的事情。
什么是InfluxDB?
InfluxDB 是一个高性能的时间序列数据库。它可以每秒存储数十万个数据点。InfluxDB的类似SQL的查询语言是专门为时间序列设计的。查看 InfluxDB文档 开始了解更多。
什么是TICK堆栈?
TICK堆栈是一个首字母缩略词,代表一个开源工具平台,旨在使收集、存储、绘图和警报时间序列数据变得极其简单。TICK 中的“I”代表InfluxDB。平台中的其他组件包括:
- Telegraf:一个度量收集代理。使用它从收集并发送度量到InfluxDB。Telegraf的插件架构支持开箱即用从100多个流行的服务收集度量。
- Chronograf:整个TICK堆栈的用户界面层。使用它设置InfluxDB中的数据图表和仪表板,并连接Kapacitor警报。
- Kapacitor: 一个指标和事件处理及警报引擎。使用它将时间序列数据转换为可操作的警报,并轻松将这些警报发送到许多流行的产品,如PagerDuty和Slack。
TICK Stack 的所有组件都是可互操作的,但每个组件作为独立安装也可以提供显著的价值。
本指南的其余部分将解释如何在 macOS 上设置 TICK Stack 进行开发和测试。
步骤 1:安装 TICK Stack
在 macOS 上,使用 Homebrew 软件包管理器 安装 TICK Stack 非常简单。
brew install telegraf
brew install influxdb
brew install chronograf
brew install kapacitor
上述命令将在您的路径中安装多个二进制文件。其中重要的是 telegraf, influxd(InfluxDB 服务器),influx(InfluxDB 命令行界面),chronograf, kapacitord(Kapacitor 服务器),以及 kapacitor(Kapacitor 命令行界面)。
步骤 2:配置 TICK Stack
Telegraf、InfluxDB 和 Kapacitor 都使用配置文件。在 macOS 上,TICK Stack 的大多数配置值默认情况下不需要更改。事实上,Chronograf 不需要配置文件,可以通过命令行标志完全配置。以下是生成其他三个组件的新配置文件的命令
# The telegraf config generated here will be already set up to only gather CPU, memory, and system metrics.
telegraf --input-filter cpu:mem:system --output-filter influxdb config > /usr/local/etc/telegraf.conf
influxd config > /usr/local/etc/influxdb.conf
kapacitord config > /usr/local/etc/kapacitor.conf
在 macOS 上,InfluxDB、Chronograf 和 Kapacitor 将其数据分别存储在 ~/.influxdb、~/.chronograf 和 ~/.kapacitor 的默认目录中。这些位置可以在配置文件中重写,但现在不需要更改。
步骤 3:运行 TICK Stack
现在已生成配置文件,使用 Homebrew 服务启动 TICK Stack 非常简单。
brew services start telegraf
brew services start influxdb
brew services start chronograf
brew services start kapacitor
这将后台启动所有 TICK 组件进程。如果遇到任何问题,Homebrew 服务的日志可以在 /usr/local/var/log 目录中找到。
看!TICK Stack 现在正在运行。在这个设置中,Telegraf 正在收集 CPU 和内存指标,并将它们写入 InfluxDB 的 telegraf 数据库,该数据库已自动创建。
与堆栈交互有几种方式。InfluxDB 和 Kapacitor 提供了 API,以及命令行工具,使与它们的 API 交互更加容易。还可以配置额外的 Telegraf 插件来收集更多数据。最后,Chronograf 为 InfluxDB 中的数据提供了用户界面。
让我们在浏览器中打开 Chronograf 来查看正在收集的数据。导航到 https://127.0.0.1:8888。这将显示一个配置页面。使用默认设置将自动将 InfluxDB 连接到 Chronograf,并允许您开始探索在 InfluxDB 中开始收集的本地系统数据。
下一步
要了解更多关于 InfluxDB 和 TICK Stack 的信息,请阅读InfluxDB 入门指南。然后查看InfluxDB 关键概念文档,这是对 InfluxDB 数据模型的一个很好的概述。
查看Telegraf和Kapacitor的入门指南。如果您有问题或遇到错误,我们建议您查看InfluxData 社区。最后,TICK Stack 是开源的,始终欢迎新的贡献者。