1.Prometheus 的主要优势有:
- 多维数据模型(由指标名称 和 key/value对标签标识的时间序列数据组成)的多维数据模型。
- 强大的查询语言 PromQL。
- 不依赖分布式存储;单个服务节点具有自治能力。
- 时间序列数据是服务端通过 HTTP 协议主动拉取获得的。
- 也可以通过中间网关来推送时间序列数据。
- 可以通过静态配置文件或服务发现来获取监控目标。
- 支持多种类型的图表和仪表盘。
[图片上传中...(image.png-df7073-1614847011246-0)]
在选定Prometheus之前,对Zabbix、小米的Open-Falcon、Prometheus三者进行了选型,由于数据存储高性能与占用空间少、对容器的支持度高、部署和维护成本低等优势最终选定了。
从左侧说起
1.Exporter是Prometheus数据采集组件的总称。它负责从处mysql、node、redis等目标主机搜集数据,并将其转化为Prometheus支持的时间序列数据格式。Prometheus Server的Retrieval模块通过http定时将时序数据pull回来.
2.Pushgateway用于支持短生命周期(short-lived)数据收集。将Push转化为Pull。
3.Prometheus也可以从其它的Prometheus Sever获取数据,组建联邦集群。
他的基本原理是通过HTTP周期性抓取被监控组件的状态,只要符合Prometheus定义的数据格式,就可以接入Prometheus监控。
中间部分:
Prometheus Server,Retrieval模块定时拉取数据,并通过存储模块保存时间序列数据。PromQL为Prometheus提供的查询语法,通过执行PromQL查询统计监控数据。
右侧是报警和页面展现,
Prometheus将报警推送到alertmanger,然后通过alertmanger对报警进行处理后发送到邮箱、微信等消息软件。
数据展现除了Prometheus自带的WebUI,还可以通过市面上比较流行的Grafana等组件查询Prometheus监控数据。
Prometheus总体流程: 数据采集-->汇总-->处理-->存储-->展示与报警。