相关文章:
Prometheus 是由前 Google 工程师从 2012 年开始在 SoundCloud 以开源软件的形式进行研发的系统监控和告警工具包,自此以后,许多公司和组织都采用了 Prometheus 作为监控告警工具。Prometheus 的开发者和用户社区非常活跃,它现在是一个独立的开源项目,并且独立于任何公司进行维护。为了证明这一点,Prometheus 于 2016 年 5 月加入 CNCF (Cloud Native Computing Foundation) 基金会,成为继 Kubernetes 之后的第二个由 CNCF 托管的项目
一、特征
-
是一个由指标名称和键值对标识的时间序列数据组成的多维数据模型
-
具有灵活的查询语言 (PromQL)
-
不依赖于分布式存储;单个节点具有自治功能
-
时间序列数据是服务端通过 HTTP 协议主动拉取获得的
-
通过中间网关来推送时间序列数据
-
通过服务发现或静态配置来发现目标
-
支持多种类型的图标和仪表盘
二、组件
-
Prometheus server
- 用于抓取和存储时间序列数据
-
Client libraries
- 用于检测应用程序代码
-
Push gateway
- 用于支持临时任务
-
Exporter
- 用于监控 HAProxy,StatsD,Graphite 等特殊目标,并向 Prometheus 提供标准格式的监控样本数据
-
Alertmanager
- 用于处理报警信息
-
其他各种周边工具
三、核心架构
-
Prometheus Server 直接从监控目标或间接通过推送网关来拉取监控指标,它在本地存储所有抓取到的样本数据,并对此数据执行一系列规则,以汇总和记录现有数据的新时间序列或生成告警
-
可以通过 Grafana 或者其他工具来实现监控数据的可视化
四、适用场景
-
Prometheus 适用于记录文本格式的时间序列,它既适用于以机器为中心的监控,也适用于高度动态的面向服务架构的监控;在微服务的世界中,它对多维数据的收集和查询有特殊优势
-
Prometheus 是专门为提高系统可靠性而设计的,它可以在断电期间快速地诊断问题,每个 Prometheus Server 都是相互独立的,不依赖于网络存储或其他远程服务;当基础架构出现故障时,我们可以通过 Prometheus 快速地定位故障点,而且不会消耗大量的基础架构资源
五、不适用场景
-
Prometheus 非常重视可靠性,即使在出现故障的情况下,我们也可以随时查看有关系统的可用统计信息
-
如果我们需要百分之百的准确度,例如:按请求数量计费,那么 Prometheus 则不太适合,因为它收集的数据可能不够详细完整,在这种情况下,我们最好使用其他系统来收集和分析数据以进行计费,并使用 Prometheus 来监控系统的其余部分