5分钟了解Prometheus

Prometheus(译:普罗米修斯)用领先的开源监控解决方案为你的指标和警报提供动力(赋能)。

5分钟了解Prometheus

 

1.  概述

1.1.  Prometheus是什么?

Prometheus是一个开源的系统监控和警报工具包。自2012年启动以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。Prometheus于2016年加入云原生计算基金会,成为继Kubernetes之后的第二个托管项目。

1.1.1.  Prometheus的主要特性:

一个多维数据模型,包含由指标名称和键/值对(Tag)标识的时间序列数据

PromQL是一种灵活的查询语音,用于查询并利用这些维度数据

不依赖分布式存储,单个服务器节点是自治的

时间序列收集是通过HTTP上的pull模型进行的(支持Pull)

推送时间序列是通过一个中间网关来支持的(也支持Push)

目标是通过服务发现或静态配置发现的

多种模式的图形和仪表盘支持

总结一下,就是多维数据模型、PromQL查询语言、节点自治、HTTP主动拉取或者网关主动推送的方式获取时间序列数据、自动发现目标、多种仪表盘支持

1.1.2.  组件:

Prometheus server,它负责抓取和存储时间序列数据,是最主要的组件

client libraries,用于检测应用程序代码的客户端库

push gateway,用于支持短期的jobs

exporters,用于支持HAProxy等第三方

alertmanager,用于处理告警

各种支持工具

大多数Prometheus组件都是用Go编写的,这使得它们易于作为静态二进制文件构建和部署

1.1.3.  架构:

这张图展示了架构及其生态系统的一些组成部分:

5分钟了解Prometheus

Prometheus从工具化的作业中获取指标,要么直接获取,要么通过中介推送网关获取短期作业。它在本地存储所有抓取的样本,并对这些数据应用规则将这些数据进行聚合,并记录新的时间序列,或者生成警报。可以用Grafana或其他API来可视化收集的数据。

1.2.  什么时候用它合适

Prometheus可以很好地记录任何纯数字时间序列。它既适合以机器为中心的监视,也适合高度动态的面向服务的体系结构的监视。在微服务的世界中,它对多维数据收集和查询的支持是一个特别的优势。

Prometheus是为可靠性而设计的,在你的服务宕机的时候,你可以快速诊断问题。每台Prometheus服务器都是独立的,不依赖于网络存储或其他远程服务。

1.3.  什么时候用它不合适

Prometheus的值的可靠性。你总是可以查看有关系统的统计信息,即使在出现故障的情况下也是如此。如果你需要100%的准确性,例如按请求计费,Prometheus不是一个好的选择,因为收集的数据可能不够详细和完整。在这种情况下,最好使用其他系统来收集和分析用于计费的数据,并使用Prometheus来完成剩下的监视工作。

1.4.  Prometheus VS InfluxDB

InfluxDB是一个开源的时间序列数据库,具有扩展和集群的商业选项。InfluxDB项目是在Prometheus开发开始将近一年后发布的,所以当时无法考虑将其作为替代方案。尽管如此,Prometheus和fluxdb之间仍然存在显著的差异。二者有许多相似之处。两者都有标签(在InfluxDB中称为tags)来有效地支持多维度度量。它们基本上使用相同的数据压缩算法。两者都具有广泛的集成,包括彼此之间的集成。两者都有挂钩,允许进一步扩展它们,例如在统计工具中分析数据或执行自动化操作。

下列情况,用InfluxDB更好:

如果你正在进行事件日志记录

商业选项为InfluxDB提供集群,这对于长期数据存储也更好

最终实现副本之间数据的一致性

下列情况,用Prometheus更好:

如果你主要做的是度量

如果你需要更强大的查询语言、警报和通知功能

更高的可用性和正常运行时间,用于绘图和报警

InfluxDB由一家遵循开放核心模型的商业公司维护,提供高级特性,如闭源集群、托管和支持。

Prometheus是一个完全开源和独立的项目,由许多公司和个人维护,其中一些还提供商业服务和支持。

2.  基本概念

2.1.  数据模型

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypggx.html