Prometheus 组成及架构
Prometheus 生态圈中包含了多个组件,其中许多组件是可选的:
Prometheus Server: ------服务端 ---处理,储存数据
负责收集和存储时间Prometheus 组成及架构序列数据(time series data),并且提供查询接口。
Jobs/Exporters: ------客户端 ---采集数据
客户端,用于暴露已有的第三方服务的 metrics 给 Prometheus。
监控并采集指标,对外暴露HTTP服务(/metrics);目前已经有很多的软件原生就支持Prometjeus,提供/metrics,可以直接使用;对于像操作系统已经不提供/metrics的应用,可以使用现有的exporters或者开发自己的exporters来提供/metrics服务;
Push Gateway: -----相当于代理---转发数据
针对push系统设计,Short-lived jobs定时将指标push到Pushgateway,再由Prometheus Server从Pushgateway上pull;
主要用于短期的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。为此,这次 jobs 可以直接向 Prometheus server 端推送它们的 metrics。这种方式主要用于服务层面的 metrics,对于机器层面的 metrices,需要使用 node exporter。
Alertmanager: ----告警方式---实现告警
报警组件,从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件,pagerduty,OpsGenie, webhook 等。
Web UI:
Prometheus内置一个简单的Web控制台,可以查询指标,查看配置信息或者Service Discovery等,实际工作中,查看指标或者创建仪表盘通常使用Grafana,Prometheus作为Grafana的数据源;
还有一些其他的工具
Prometheus 官方文档中的架构图:
从上图可以看出,Prometheus 的主要模块包括:
Prometheus server
exporters
Pushgateway
PromQL
Alertmanager
图形界面
工作流程:
1. Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自 Pushgateway 发过来的 metrics,或者从其他的 Prometheus server 中拉 metrics。
2. Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报。
3. Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警。
4. 在图形界面中,可视化采集数据。