prometheus 时序数据
Prometheus 是一个开源的完整监控解决方案,本身内置了高性能的时序数据库,作为数据存储。
Prometheus 作为时序数据库,排名超越了老牌的时序数据库OpenTSDB、Graphite、RRDtool、KairosDB等。
1. 什么是时序数据
时间序列数据(TimeSeries Data):按照时间顺序记录系统、设备状态变化的数据被称为时序数据。在同一数据列中的各个数据必须是同口径的,要求具有可比性。时序数据可以是时期数,也可以时点数。时间序列分析的目的是通过找出样本内时间序列的统计特性和发展规律性,构建时间序列模型,进行样本外预测。
时间序列数据应用的场景很多:
- 无人驾驶车辆运行中要记录的经度、纬度、速度、方向、旁边的距离等。
- 某一地区的各车辆的行驶轨迹数据
- 传统证券行业实时交易数据
- 实时运维监控数据等
2. 时序数据特点
- 性能好关系型数据库对于大规模数据的处理性能糟糕。NoSQL可以比较好的处理大规模数据,但依然比不上时间序列数据库。
- 存储成本低高效的压缩算法,节省存储空间,有效降低IO
3. 常见时序数据库
业界使用较多的时序数据库主要有如下几种:
1、InfluxDB
InfluxDB是一款用Go语言编写的开源分布式时序、事件和指标数据库,无需外部依赖。该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics,loT传感器数据和实时分析数据。
作为目前开源排名最高的时序数据库,InfluxDB支持数据存储策略(RP)和数据归档(CQ),能够实时查询,数据在写入时被索引后就能够被立即查出,内置HTTP接口,安装管理很简单,并且读写数据非常高效。
2、Kdb+
kdb+/q被官方称为世界上最快的时间序列数据库,它使用统一的数据库处理实时数据和历史数据,同时具备CEP(复杂事件处理)引擎、内存数据库、磁盘数据库等功能。列式存储的特性,使得对于某个列的统计分析操作异常方便。
与一般数据库或大数据平台相比,kdb+/q具有更快的速度和更低的总拥有成本,非常适合海量数据处理,主要被用于海量数据分析、高频交易、人工智能、物联网等领域。在延迟性上有着苛刻要求的金融领域,kdb+有着独特的优势。
3、Prometheus
Prometheus 是一套开源的系统监控报警框架,由工作在 SoundCloud 的 Google 前员工在2012年创建,作为社区开源项目进行开发,2015年正式发布,并在次年正式加入Cloud Native Computing Foundation。
作为新一代的监控框架,Prometheus 具备强大的多维度数据模型,有多种可视化图形界面,使用 pull 模式采集时间序列数据,可以采用 push gateway 的方式把时间序列数据推送至Prometheus server端。
4、 Graphite
Graphite是一个开源实时的、显示时间序列度量数据的图形系统。Graphite并不收集度量数据本身,而是像一个数据库,通过其后端接收度量数据,然后以实时方式查询、转换、组合这些度量数据。
Graphite支持内建的Web界面,它允许用户浏览度量数据和图。它由多个后端和前端组件组成。后端组件用于存储数值型的时间序列数据,前端组件则用于获取指标项数据并根据情况渲染图表。
5、TimescaleDB
TimescaleDB是唯一支持完整SQL的开放源代码时间序列数据库,已针对支持全面SQL的快速提取和复杂查询进行了优化。它基于PostgreSQL,并且为时间序列数据提供了最好的NoSQL和Relational世界。
TimescaleDB使开发人员和组织能够更多地利用其功能:分析过去,了解现在和预测未来。在查询层面统一时序数据和关系数据可消除数据孤岛,并使演示和原型更容易实现。可扩展性和完整的SQL接口的结合赋予员工提出数据问题。
6、阿里云TSDB
作为我国科技公司的代表,阿里云时序数据库也入围了DB-Engines榜单。TSDB是一种集时序数据高效读写,压缩存储,实时计算能力为一体的数据库服务,可广泛应用于物联网和互联网领域,实现对设备及业务服务的实时监控,预测告警。
TSDB具备秒级写入百万级时序数据的性能,提供高压缩比低成本存储、预降采样、插值、多维聚合计算、可视化查询结果等功能,解决由设备采集点数量巨大、数据采集频率高造成的存储成本高、写入和查询分析效率低的问题。
下一章:prometheus 架构组件
Prometheus 提供了从指标暴露,到指标抓取、存储和可视化,以及最后的监控告警等一系列组件。从上图可以看到,整个 Prometheus 可以分为四大部分,分别是:Prometheus 服务器Promet ...