ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Prometheus架构解析

Prometheus架构解析

一、整体架构模式

Prometheus主体是Pull(拉取)模型:Prometheus Server主动去各个target拉取指标;

只有短生命周期任务使用Push(推送),推送到Pushgateway

二、各个组件拆解

1.被监控端(监控目标targets)

①exporter(Jobs/exporters)

-- 持续运行的客户端采集程序,采集CPU、内存、磁盘、网络等metrics指标

-- 对外暴露/metrics接口,Prometheus server pull 拉取指标数据

例子:node_exporter、cAdvisor、mysqld_exporter

②短作业程序Short-lived jobs

程序执行完就退出,不会持续运行,不能等待Prometheus来拉取

解决办法:程序结束时,push推送指标给Pushgateway

2.Pushgateway(中间人,临时存放数据)

作用:专门接收短生命周期任务推送过来的监控指标,做临时存储

-- 注意:不是给普通exporter使用,只给一次性短作业使用

3.Service discovery 服务发现

自动发现监控target目标,不用手动写大量targets

①kubernetes:对接k8s,自动发现pod、service

②file_sd:读取配置文件,动态加载监控目标

4.Prometheus Server 服务核心(三大模块)

①Retrieval 抓取模块

按照scrape_interval抓取间隔(图中标15s),主动pull拉取各个target的metrics指标

②TSDB时序数据库

把采集到的指标,以时间序列格式持久化保存到磁盘(HDD/SSD)

时间序列:指标名+标签+时间戳+数值

③HTTP server API

对外提供API接口,支持PromQL查询,提供Web UI访问

5.告警链路

①Prometheus内部根据告警规则计算,产生警告,push推送给Alertmanager

②Alertmanager告警管理器:接受告警,做去重、分组、降噪

③通知渠道:Email邮件、pagerduty、微信、短信、电话等通知运维工程师

6.查询与可视化

①PromQL:Prometheus专属查询语句,用来查询时序指标数据

②Prometheus web UI:自带简易web页面,可以写PromQL查询,自带图表

③Grafana:专业可视化组件,调用Prometheus API,做丰富仪表盘、图形展示

④API clients:其他程序调用 Prometheus API 获取监控数据

7.完整两条数据流

①长期运行服务(exporter)

被监控主机exporter采集指标 → Prometheus Server(Retrieval 拉取 → TSDB 磁盘存储) → Grafana/webUI 展示;触发告警交给 Alertmanager 发送通知

②短生命周期一次性任务

短作业程序 push推送指标 → Pushgateway 临时保存 → Prometheus Server pull 拉取数据 → 存储、查询、告警展示

8.五大核心组件

①Prometheus server:核心,抓取、存储、计算告警规则
②exporter:被监控端采集指标
③grafana:可视化绘图
④alertmanager:告警管理、发送通知
⑤pushgateway:短作业推送指标的中间件

返回列表