Prometheus笔记3-Prometheus与竞品比较

今天整理一下Prometheus与竞品的一些比较。

Prometheus vs. Graphite

范围(Scope)

Graphite专注于成为具有查询语言和图形功能的被动时间序列数据库。任何其他问题都由外部组件解决。

Prometheus 是一个完整的监控和趋势系统,包括基于时间序列数据的内置和主动抓取、存储、查询、图形和警报。它知道世界应该是什么样子(哪些端点应该存在,什么时间序列模式意味着麻烦等),并积极尝试寻找故障。

数据模型(Data Model)

Graphite 存储命名时间序列的数字样本,就像 Prometheus 所做的那样。然而,Prometheus 的元数据模型更丰富:虽然 Graphite 度量名称由隐式编码维度的点分隔组件组成,但 Prometheus 将维度显式编码为键值对,称为标签,附加到度量名称。这允许通过查询语言通过这些标签轻松过滤、分组和匹配。

此外,特别是当 Graphite 与StatsD结合使用时,通常只存储所有受监控实例的聚合数据,而不是将实例保留为维度并能够深入到单个有问题的实例。

例如,当存储HTTP请求的数量与响应代码API服务器500,并且该方法POST/tracks终点将常用于Graphite/StatsD进行编码这样的:

stats.api-server.tracks.post.500 -> 93

在 Prometheus 中,相同的数据可以这样编码(假设有三个 api-server 实例):

api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample1>"} -> 34
api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample2>"} -> 28
api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample3>"} -> 31

Storage

Graphite 以Whisper格式将时间序列数据存储在本地磁盘上,这 是一种 RRD 风格的数据库,期望样本定期到达。每个时间序列都存储在一个单独的文件中,新样本在一定时间后覆盖旧样本。

Prometheus 还为每个时间序列创建一个本地文件,但允许在发生刮擦或规则评估时以任意间隔存储样本。由于只是简单地附加了新样本,因此旧数据可能会保留任意长的时间。Prometheus 也适用于许多短期、频繁变化的时间序列集。

概括(Summary)

Prometheus 提供更丰富的数据模型和查询语言,此外更易于运行和集成到您的环境中。如果您想要一个可以长期保存历史数据的集群解决方案,Graphite 可能是更好的选择。

Prometheus vs. InfluxDB

InfluxDB是一个开源时间序列数据库,具有用于扩展和集群的商业选项。InfluxDB 项目是在 Prometheus 开发开始近一年后发布的,因此我们当时无法将其视为替代方案。尽管如此,Prometheus 和 InfluxDB 之间仍存在显着差异,并且两个系统都面向略有不同的用例。

范围(Scope)

为了公平比较,我们还必须将Kapacitor与 InfluxDB 一起考虑 ,因为它们结合起来解决与 Prometheus 和 Alertmanager 相同的问题空间。

Graphite相同的范围差异适用于 InfluxDB 本身。另外 InfluxDB 提供了连续查询,相当于 Prometheus 的记录规则。

Kapacitor 的范围是 Prometheus 记录规则、警报规则和 Alertmanager 通知功能的组合。Prometheus为图形和警报提供了更强大的查询语言。Prometheus Alertmanager 还提供分组、重复数据删除和静音功能。

数据模型/存储 (Data Model / Storage)

和 Prometheus 一样,InfluxDB 数据模型有键值对作为标签,称为标签。此外,InfluxDB 还有二级标签叫做字段,使用上比较有限。InfluxDB 支持分辨率高达纳秒的时间戳,以及 float64、int64、bool 和 string 数据类型。相比之下,Prometheus 支持 float64 数据类型,但对字符串和毫秒分辨率时间戳的支持有限。

InfluxDB 使用日志结构合并树的变体来存储带有预写日志,按时间分片。这比 Prometheus 的每个时间序列的仅附加文件方法更适合事件记录。

Logs and Metrics and Graphs, Oh My! 描述了事件日志记录和指标记录之间的区别。

架构(Architecture)

Prometheus 服务器彼此独立运行,仅依赖其本地存储来实现其核心功能:抓取、规则处理和警报。InfluxDB 的开源版本也类似。

商业 InfluxDB 产品在设计上是一个分布式存储集群,其存储和查询同时由多个节点处理。

这意味着商业 InfluxDB 将更容易横向扩展,但也意味着您必须从一开始就管理分布式存储系统的复杂性。Prometheus 将更易于运行,但在某些时候,您将需要沿着可扩展性边界(如产品、服务、数据中心或类似方面)明确地对服务器进行分片。独立服务器(可以并行冗余运行)也可以为您提供更好的可靠性和故障隔离。

Kapacitor 的开源版本没有用于规则、警报或通知的内置分布式/冗余选项。Kapacitor 的开源版本可以通过用户手动分片进行扩展,类似于 Prometheus 本身。Influx提供Enterprise Kapacitor,它支持 HA/冗余警报系统。

相比之下,Prometheus 和 Alertmanager 通过运行 Prometheus 的冗余副本和使用 Alertmanager 的高可用性 模式提供了一个完全开源的冗余选项 。

概括(Summary)

系统之间有许多相似之处。两者都有标签(在 InfluxDB 中称为标签)以有效支持多维指标。两者都使用基本相同的数据压缩算法。两者都有广泛的集成,包括彼此之间的集成。两者都有钩子,允许您进一步扩展它们,例如在统计工具中分析数据或执行自动化操作。

InfluxDB 更好的地方:

  • 如果您正在进行事件记录。
  • 商业选项为 InfluxDB 提供集群,这也更适合长期数据存储。
  • 副本之间最终一致的数据视图。

Prometheus更好的地方:

  • 如果您主要做指标。
  • 更强大的查询语言、警报和通知功能。
  • 图形和警报的更高可用性和正常运行时间。

InfluxDB 由一家遵循开放核心模型的商业公司维护,提供闭源集群、托管和支持等高级功能。Prometheus 是一个完全开源的独立项目,由许多公司和个人维护,其中一些还提供商业服务和支持。

Prometheus vs. OpenTSDB

OpenTSDB是一个基于HadoopHBase的分布式时序数据库 。

范围(Scope)

Graphite相同的范围差异 适用于此处。

数据模型(Data Model)

OpenTSDB 的数据模型几乎与 Prometheus 的相同:时间序列由一组任意键值对标识(OpenTSDB 标签是 Prometheus 标签)。指标的所有数据都 存储在一起,从而限制了指标的基数。不过也有细微的差别:Prometheus 允许在标签值中使用任意字符,而 OpenTSDB 的限制性更强。OpenTSDB 也缺乏完整的查询语言,仅允许通过其 API 进行简单的聚合和数学运算。

Storage

OpenTSDB的存储是在HadoopHBase之上实现的 。这意味着水平扩展 OpenTSDB 很容易,但是您必须从一开始就接受运行 Hadoop/HBase 集群的整体复杂性。

Prometheus 最初运行起来会更简单,但一旦超出单个节点的容量,将需要显式分片。

概括(Summary)

Prometheus 提供了更丰富的查询语言,可以处理更高的基数指标,并构成完整监控系统的一部分。如果您已经在运行 Hadoop 并且重视长期存储的这些好处,那么 OpenTSDB 是一个不错的选择。

Prometheus vs. Nagios

Nagios是一种监控系统,起源于 1990 年代的 NetSaint。

范围(Scope)

Nagios 主要是基于脚本的退出代码发出警报。这些被称为“检查”。有个别警报静音,但没有分组、路由或重复数据删除。

有各种各样的插件。例如,允许通过管道传输几千字节的 perfData 插件返回到时间序列数据库(例如 Graphite)或使用 NRPE在远程机器上运行检查

数据模型(Data Model)

Nagios 是基于主机的。每个主机可以有一个或多个服务,每个服务可以执行一项检查。

没有标签或查询语言的概念。

Storage

Nagios 本身没有存储,超出当前检查状态。有一些插件可以存储数据,例如用于可视化

架构(Architecture)

Nagios 服务器是独立的。检查的所有配置都是通过文件进行的。

概括(Summary)

Nagios 适用于黑盒探测就足够的小型和/或静态系统的基本监控。

如果你想做白盒监控,或者有一个动态或基于云的环境,那么 Prometheus 是一个不错的选择。

Prometheus vs. Sensu

Sensu是一个开源监控和可观察性管道,具有商业发行版,可提供可扩展性的附加功能。它可以重用现有的 Nagios 插件。

范围(Scope)

Sensu 是一个可观察性管道,专注于将可观察性数据作为事件流进行处理和警报。它为事件过滤、聚合、转换处理提供了一个可扩展的框架——包括向其他系统发送警报和在第三方系统中存储事件。Sensu 的事件处理能力在范围上类似于 Prometheus 警报规则和 Alertmanager。

数据模型(Data Model)

Sensu事件以结构化数据格式表示服务健康和/或指标,由实体名称(例如服务器、云计算实例、容器或服务)、事件名称和称为“标签”或“注释”的可选键值元数据标识”。Sensu 事件有效负载可能包括一个或多个 metric points,表示为包含nametags(键/值对)timestamp、 和value(始终为浮点数)的 JSON 对象。

Storage

Sensu 将当前和最近的事件状态信息以及实时库存数据存储在嵌入式数据库 (etcd) 或外部 RDBMS (PostgreSQL) 中。

架构(Architecture)

Sensu 部署的所有组件都可以集群化以实现高可用性和改进的事件处理吞吐量。

概括(Summary)

Sensu 和 Prometheus 有一些共同的功能,但它们采用非常不同的监控方法。两者都为基于云的动态环境和临时计算平台提供可扩展的发现机制,尽管底层机制大不相同。两者都支持通过标签和注释收集多维指标。两者都有广泛的集成,Sensu 本身支持从所有 Prometheus 导出器收集指标。两者都能够将可观察性数据转发到第三方数据平台(例如事件存储或 TSDB)。Sensu 和 Prometheus 最大的不同在于它们的用例。

Sensu 更好的地方:

  • 如果您正在收集和处理混合可观察性数据(包括指标和/或事件)
  • 如果您正在整合多个监控工具并需要支持指标Nagios 风格的插件或检查脚本
  • 更强大的事件处理平台

Prometheus 更好的地方:

  • 如果您主要收集和评估指标
  • 如果您正在监控同构 Kubernetes 基础设施(如果您监控的工作负载 100% 在 K8s 中,Prometheus 提供更好的 K8s 集成)
  • 更强大的查询语言,内置支持历史数据分析

Sensu 由一家遵循开放核心业务模型的商业公司维护,提供诸如闭源事件关联和聚合、联合和支持等高级功能。Prometheus 是一个完全开源的独立项目,由许多公司和个人维护,其中一些还提供商业服务和支持。

参考 prometheus.io文档
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,492评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,048评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,927评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,293评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,309评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,024评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,638评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,546评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,073评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,188评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,321评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,998评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,678评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,186评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,303评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,663评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,330评论 2 358

推荐阅读更多精彩内容