Prometheus vs InfluxDB

半兽人 发表于: 2019-07-23   最后更新时间: 2019-07-23 23:07:12  
{{totalSubscript}} 订阅, 3,806 游览

InfluxDB是一个开源的时间序列数据库,它的商业版本具有可扩展和集群化的特性。在Prometheus刚刚开始开发时,InfluxDB项目已经发布了近一年时间。但是这两款产品还是有很大的不同之处,这两个系统也有一些略有不同的应用小场景。

范围

公平起见,我们必须把InfluxDB和Kapacitor结合起来,与Prometheus和Prometheus的报警管理工具比较。

Graphite与Prometheus的范围差异,同样适用于InfluxDB本身。此外InfluxDB提供了连续查询,和Prometheus的记录规则一样。

Kapacitor的作用范围相当于,Prometheus的记录规则、告警规则和警告通知功能的结合。Prometheus提供了一个更加丰富地用于图表化和警告的查询语言,Prometheus告警器还提供了分组、重复数据删除和静默功能(silencing functionality)。

数据模型/存储

和Prometheus一样,InfluxDB数据模型采用的标签也是键值对形式,被称为tags。而且InfluxDB有第二级标签,被称为fields,它被更多地限制使用。InfluxDB支持高达纳秒级的时间戳,以及float64、int64、bool和string的数据类型。相反地,Prometheus仅仅支持float64的数据类型,strings和毫秒只能小范围地支持

InfluxDB使用变种的日志结构合并树结构来存储预写日志,并按时间分片。这比Prometheus的文件追加更适合事件记录
Logs and Metrics and Graphs, Oh My描述了事件日志和度量指标记录的不同

框架

Prometheus服务独立运行,没有集群架构,它仅仅依赖于本地存储。Prometheus有四个核心的功能:抓取、规则处理和警告。InfluxDB的开源版本也是类似的。
InfluxDB的商业版本具有存储和查询的分布式版本, 存储和查询由集群中的节点同时处理。
这意味着商业版本的InfluxDB更加容易的水平扩展,同时也表示你必须从一开始就要管理分布式存储系统的复杂性。而Prometheus运行非常简单,而且在某些时候,你需要在可扩展性边界(如产品,服务,数据中心或者类似方面)明确分片服务器。单Prometheus服务也可以为您提供更好的可靠性和故障隔离。

Kapacitor对规则、警告和通知当前还没有内置/冗余选项。相反地,通过运行Prometheus的冗余副本和使用警告管理器的高可用模式提供了冗余选项。Kapacitor通过用户手动水平切分能够被缩放,这点类似于Prometheus本身

总结

在两个系统之间有许多相似点。1. 利用标签(tags/labels)有效地支持多维度量指标。2. 使用相同的压缩算法。3.都可扩展集成。4.允许使用第三方进行监控系统的扩展,如:统计分析工具、自动化操作

InfluxDB更好之处:

使用事件日志
商业版本提供的集群方案,对于长期的时间序列存储是非常不错的
复制的数据最终一致性
Prometheus更好之处:

主要做度量指标监控
更强大的查询语言,警告和通知功能
图表和警告的高可靠性和稳定性
InfluxDB是有一家商业公司按照开放核心模式运营,提供高级功能,如:集群是闭源的,托管和支持。Prometheus是一个完全开放和独立的项目,有许多公司和个人维护,其中也提供一些商业服务和支持。

更新于 2019-07-23
在线,2小时前登录

查看Prometheus更多相关的文章或提一个关于Prometheus的问题,也可以与我们一起分享文章