一、什么是prometheus?
From metrics to insight
Power your metrics and alerting with the leading open-source monitoring solution.
以上是Prometheus官网首页上非常一句醒目的话。我们从这一句话中就可以知道Prometheus是一个开源的监控系统解决方案,能增强你的指标和警报。首先我们先有个印象,Prometheus是一个开源的监控系统。
Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包。从2012年开始,许多公司和组织开始使用Prometheus。该项目的开发人员和用户社区非常活跃,越来越多的开发人员和用户参与到该项目中。目前它是一个独立的开源项目,且不依赖与任何公司。为了强调这点和明确该项目治理结构,Prometheus在2016年继Kurberntes之后,加入了Cloud Native Computing Foundation。主要具有如下功能:
- 多维数据模型(由度量名称和键/值维度集定义的时间序列)
- PromQL,一种强大而灵活的查询语言,可以利用这个维度
- 不依赖分布式存储;单服务器节点是自治的
- 时间序列收集的HTTP拉模型
- 通过批处理作业的中间网关支持推送时间序列
- 通过服务发现或静态配置发现目标
- 多种图形和仪表板支持模式
- 支持分层和水平联合
二、体系结构概述
以下体系架构也是从官网上得到的。
Prometheus直接或通过中间推送网关从插入工具的作业中获取指标,用于短期作业。它将所有采集的样本存储在本地,并对这些数据运行规则,以便从现有数据中聚合和记录新的时间序列,或者生成警报。Grafana或其他API消费者可用于可视化收集的数据。
从上图中可以得出它主要包含的组件有
- Prometheus server :定期从静态配置的 Prometheus targets (数据源)或者服务发现的 targets (数据源)拉取数据。
- Retrieval:检索拉去到的数据分发给TSDB进行存储。
- HTTP server:用于接受外界的HTTP请求。
- TSDB:当新拉取的数据大于配置内存缓存区的时候,Prometheus会将数据持久化到磁盘(HHD/SSD)(如果使用 remote storage 将持久化到云端)。
- Prometheus 可以配置 rules,然后定时查询数据,当条件触发的时候,会将 alert(警告) 推送(pushalerts)到配置的 Alertmanager(警告管理器)。
- Alertmanager :收到警告的时候,可以根据配置,聚合,去重,降噪,最后发送警告。
- API client,Grafana:API client通过使用promQL查询数据,Grafana用于聚合数据将数据可视化。
- Web UI: Prometheus的web接口,可用于简单可视化,及语句执行或者服务状态监控。
- Short-lived jobs:存在时间不足以被删除的短暂和批量作业
- Pushgateway:shaort-lived jobs 在推出时将数据推给pushgateway,主要用于业务数据汇报等。
三、适用场景
Prometheus很适合记录任何纯数字时间序列。它既适用于以机器为中心的监控,也适用于高度动态的面向服务架构的监控。在微服务的世界中,它对多维数据收集和查询的支持是一个特别的优势。
Prometheus是为可靠性而设计的,它是您在停机期间使用的系统,允许您快速诊断问题。每个Prometheus服务器都是独立的,不依赖于网络存储或其他远程服务。当基础设施的其他部分出现故障时,您可以依靠它,并且不需要设置大量的基础设施来使用它。
四、不适用的场景
Prometheus重视可靠性。即使在故障情况下,您也可以随时查看系统的可用统计信息。如果您需要100%的准确度,例如按请求计费,Prometheus不是一个好的选择,因为收集的数据可能不够详细和完整。在这种情况下,您最好使用其他系统来收集和分析计费数据,并使用Prometheus进行其他监控。
例如:它不适用于实时计费系统。
完结!