Prometheus是一个开源的系统监视和警报工具、一款非常优秀的监控工具、监控方案;
Prometheus 提供了数据搜集、存储、处理、可视化和告警一套完整的解决方案。
Prometheus的关键特性如下:
由度量名和键值对标识的时间序列数据的多维数据模型
灵活的查询语言
不依赖于分布式存储;单服务器节点是自治的
通过HTTP上的拉模型实现时间序列收集
通过中间网关支持推送时间序列
通过服务发现或静态配置发现目标
图形和仪表板支持的多种模式
Prometheus的组件:
Prometheus生态由多个组件组成,并且这些组件大部分是可选的:
Prometheus服务器,用于获取和存储时间序列数据;
仪表应用数据的客户端类库(Client Library)
支持临时性工作的推网关(Push Gateway)
特殊目的的输出者(Exporter),提供被监控组件信息的 HTTP 接口,例如HAProxy、StatsD、MySQL、Nginx和Graphite等服务都有现成的输出者接口
处理告警的告警管理器(Alert Manager)
其它支持工具
Prometheus的整体工作流程:
1)Prometheus 服务器定期从配置好的 jobs 或者 exporters 中获取度量数据;或者接收来自推送网关发送过来的 度量数据。
2)Prometheus 服务器在本地存储收集到的度量数据,并对这些数据进行聚合;
3)运行已定义好的 alert.rules,记录新的时间序列或者向告警管理器推送警报。
4)告警管理器根据配置文件,对接收到的警报进行处理,并通过email等途径发出告警。
5)Grafana等图形工具获取到监控数据,并以图形化的方式进行展示。