Prometheus 概述
- promethues 是一套开源的监控&报警&时间序列数据库的组合
- 基本原理是通过http协议周期性抓取被监控组件的状态
- 适合Docker、Kubernetes环境的监控系统
Promethues 整体架构

一、抓取数据的两种方式
- 1 )Short-lived jobs 短暂的任务
- 不会提供长时间的http去为promethues抓取数据
- 这个服务很短暂, 运行后就会关闭
- 短暂的服务怎么去监控
- 它是通过主动推送数据到网关,进而由 promethues server 端 去抓取 PushGateway 上推上来的数据
- 2 )另一种方式是 ClientLib/Exporters
- 可以通过不同的 exporters 提供http的方式
- 来给 promethues server 来抓取数据
二、Promethues Server 端
- 主要分为三个环节:抓取,存储,查询
- 在抓取网关的时候,promethues server 端如何知道抓取哪些链接
- 获取目标的时候,是通过配置文件,文本文件,consul等方式
- 来存储我们的抓取目标
- 比较常用的是通过配置文件来记录下抓取的目标
- Promethues 根据抓取目标,定期采集数据
- 当 Promethues 抓取完成后,进行存储阶段
- Promethues 会根据报警规则计算是否满足报警规则
- 在报警规则中,会提供报警消息,主动推送给报警模块
- 报警模块在收到消息后进行一系列的处理来进行报警
- 另外数据存储进来,提供给客户访问的时候
- Promethues 还有一个简单的web ui, 通过界面的方式查询存储的数据
- 以上就是 Promethues 整体架构图
三、Promethues 重要组件
- 基于架构图,可知里面有很多重要组件
- Prometheus Server
- 用于收集和存储时间序列数据
- 客户端存储用的是 时序 数据库
- Client Library
- 客户端库生成相应的 metrics 并暴露给 Prometheus Server 去采集
- 课程里就是 客户端提供http的端口暴露给 Prometheus Server 让它定期采用数据,达到监控能力
- Push Gateway
- 主要用于短期的jobs
- 短期任务,可能5s采集一次,短期任务可能5s内会完成
- 这样server端可能采集不到
- 所以,短期任务,可以主动上报到 Push Gateway 上
- Server 定期采集 Push Gateway 上的数据
- Exporters
- 用于暴露已有的第三方服务的metrics 给 Prometheus
- 第三方服务,比如 mysql, redis, mongodb, 等等已经写好的一些 exporters 拿来用
- 主动把需要采集的功能暴露出来,server主动来采集
- Alertmanager
- 报警模块,从 Prometheus server 端接收到 alerts 后
- 会进行一些列去除重复,分组,并路由到接受方式,发出报警
- 通过微信,email, QQ等等,都是可以进行发送的