7个强大的时间序列数据库用于监控解决方案
让我们来谈谈分布式监控时间序列数据库。
时间序列数据库针对时间戳或时间序列数据进行了优化。时间序列数据意味着在一段时间内进行跟踪、监控、收集或聚合的测量或事件。这些数据可以是来自运动跟踪传感器的心跳数据、Java应用程序的JVM指标、市场交易数据、网络数据、API响应、进程正常运行时间等。
时间序列数据库完全定制了时间戳数据,这些数据被索引并以高效的方式写入,您可以插入时间序列数据。您可以比在关系数据库中的查询速度更快地查询这些时间序列数据。
最近,它获得了很大的流行。为什么不呢?它对于业务和非常出色。好消息是,有很多选择,其中大部分是开源的。
InfluxDB
是DevOps中最受欢迎的时间序列数据库之一,它是用Go编写的。InfluxDB从头开始设计,提供了高度可扩展的数据摄取和存储引擎。它非常高效地收集、存储、查询、可视化并实时处理流式数据、事件和指标。
它提供了降采样和数据保留策略,以支持在内存中保留高价值、高精度的数据,并将较低价值的数据保存到磁盘上。它采用云原生的方式构建,可以在多种部署拓扑结构(包括云、本地和混合环境)上提供可扩展性。
InfluxDB是一个开源的解决方案,也是企业级准备好的。它使用类似结构化查询语言的InfluxQL与数据交互。最新版本提供了工具包中的代理、仪表盘、查询和任务。它是一个集成了仪表盘、可视化和报警的一体化工具。
特点
- 针对时间序列数据具有高性能,具有高吞吐量的摄入和实时查询
- 使用类似SQL的查询语言InfluxQL与数据交互
- 是TICK(Telegraf、InfluxDB、Chronograf和Kapacitor)堆栈的核心组件。
- 支持插件,可用于数据摄取的协议,如collectd、Graphite、OpenTSDB
- 可以处理数百万个数据点,仅需1秒
- 保留策略,用于自动删除过时数据
由于它是开源的,您可以下载并在您的服务器上开始使用。但是,它们也提供了适用于AWS、Azure和GCP的InfluxDB云。
Prometheus
是一个开源的监控解决方案,用于理解度量数据并发送必要的警报。它具有本地的磁盘时间序列数据库,可以将数据以自定义格式存储在磁盘上。
Prometheus的数据模型是基于时间序列的多维的;它将所有数据存储为时间戳值的流。当使用完全数字化的时间序列时,它非常有用。收集微服务数据并查询它是Prometheus的优势之一。
它与Grafana紧密集成,用于可视化。如果您是新手,可以阅读这篇文章。
特点
- 具有多维模型,使用度量名称和键值对(标签)
- PromQL用于查询时间序列数据以生成表格、警报和Adhoc图形
- 使用HTTP拉模式来收集时间序列数据
- 使用中间网关来推送时间序列
Prometheus有数百个用于从Windows、Linux、Java、数据库、API、网站、服务器硬件、PHP、消息传递等导出数据的。要监控Linux,请查看此。
TimescaleDB
是一个开源的关系数据库,使得针对时间序列数据的SQL具有可扩展性。该数据库是构建在上的。
它提供两种产品——第一种选择是社区版,免费安装在您的服务器上使用。第二种选择是TimescaleDB云端,您可以在云端获得完全托管和管理的基础设施来满足您的部署需求。
它可以用于DevOps监控、了解应用程序指标、跟踪物联网设备数据、了解金融数据等等。您可以测量日志、Kubernetes事件、Prometheus指标,甚至自定义指标。
对于产品所有者来说,您可以使用它来了解产品的性能变化,从而帮助您做出战略性增长决策。
特点
- 查询速度比PostgreSQL、MongoDB快10-100倍
- 可以水平扩展到PB级,并每秒写入百万数据点
- 与PostgreSQL非常相似,因此对开发人员和管理员来说非常容易操作
- 结合关系数据库和时间序列数据库功能,构建强大的应用程序
- 内置算法和性能功能,可节省大量成本
Graphite
Graphite是一个一体化的解决方案,用于存储和高效可视化实时时间序列数据。Graphite可以做两件事情,存储时间序列数据并按需渲染图形。但它不会为您收集数据;为此,您可以使用诸如collectd、Ganglia、Sensu、telegraf等工具。
它有三个组件——Carbon、Whisper和Graphite-Web。Carbon接收时间序列数据,对其进行聚合,然后将其持久化到磁盘中。Whisper是用于存储数据的时间序列数据库存储。Graphite-Web是用于创建仪表板和可视化数据的前端。
Graphite特点:
- 以简单直接的格式提交数据
- 提供了全面的API,用于渲染数据并创建图表、仪表板、图形
- 提供了丰富的统计库和变换渲染功能
- 链式多个渲染函数以构建目标查询
QuestDB
QuestDB是一款基于列的关系型数据库,可以对时间序列数据进行实时分析。它使用SQL和一些扩展来创建时间序列数据的关系模型。QuestDB从头开始编码,没有依赖关系,从而提高了性能。
QuestDB支持关系和时间序列的连接,有助于相关数据的关联。开始使用QuestDB的最简单方法是在Docker容器中部署它。
QuestDB特点:
- 交互式控制台,可使用拖放导入数据并查询
- 支持云原生(AWS、Azure、GCP)、本地部署或嵌入式部署
- 提供企业集成功能,如活动目录、高可用性、企业安全性、集群化
- 使用操作和预测性分析实时提供洞见
AWS Timestream
怎么能不提到AWS呢?
AWS Timestream是一种无服务器时间序列数据库服务,快速可扩展。它主要用于物联网应用程序,每天存储数万亿个事件,速度比关系数据库快1000倍,成本只有其1/10。
使用专为此目的构建的查询引擎,您可以同时查询最近的数据和历史存储的数据。它提供多个内置函数来分析时间序列数据以找到有用的洞见。
Amazon Timestream特点:
- 没有需要管理的服务器或实例;一切都自动处理。
- 成本效益高,只需支付摄取、存储和查询的费用。
- 每天可处理数万亿个事件,性能不会下降。
- 内置分析功能,支持标准SQL、插值和平滑函数,用于识别趋势、模式和异常。
- 使用AWS密钥管理系统(KMS)对所有数据进行加密,客户管理密钥(CMK)。
OpenTSDB
OpenTSDB是一个可扩展的时间序列数据库,构建在HBase之上。它能够以每秒数百万次的写入速度存储数万亿个数据点。您可以使用其原始时间戳和精确值将数据永久保存在OpenTSDB中,以确保不会丢失任何数据。
它具有时间序列守护程序(TSD)和命令行实用程序。时间序列守护程序负责将数据存储在HBase中或从HBase中检索数据。您可以使用HTTP API、telnet或简单的内置GUI与TSD进行通信。您需要使用flume、collectd、vacuumetrix等工具将数据从各种来源收集到OpenTSDB中。
OpenTSDB功能:
- 能够以极快的速度聚合、过滤和降采样指标。
- 以毫秒精度存储和写入数据。
- 运行在Hadoop和HBase上,通过添加节点轻松扩展集群。
- 使用GUI生成图形。
结论
由于现在越来越多的物联网/智能设备在使用,网站上产生了大量的实时流量,每天有数百万个事件,在市场上的交易也在增加,因此时序数据库应运而生!时序数据库是生产环境中必不可少的组件monitoring。
大多数上述时序数据库都可供自主托管,所以赶紧获取一个cloud VM,试试看哪个适合您。