一 Prometheus 是什么
Prometheus 是一个开源的
监控和报警系统
。该系统内置和基于时间序列地抓取、存储、查询、绘图数据、报警。
现在是一个开源项目,继 K8S 后的第二个云原生计算基金会的托管项目,可见其火爆程度。
二 Prometheus 的特征
Prometheus 的特征:
1)一个包含由度量名称和键值对
标识的
时间序列
数据多维数据模型(K-V,时间序列)
2)基于一种灵活的查询语言来利用这种维度:PromQL
3)单个服务器节点自主,不依赖分布式存储
4)通过 HTTP 上的 pull 模型进行时间序列收集
5)也可通过中间网关支持推送时间序列
6)通过服务发现或静态配置发现目标(如在 prometheus.yml 配置 targets)
7)多种图形和仪表板支持模式(如 grafana)
三 Prometheus 的架构及组件
下图看着很复杂,但实际可以看成五个部分,Pushgateway / Job / exporter 属于数据采集
模块,Alertmanager 属于告警模块,可以看成是一块额外的软件,UI / Grafana / ... 是成图工
具,还有服务发现模块,核心组件为 Prometheus server。在 prometheus 官网 Getting started
下的就是 prometheus Server。
一个基本的流程是:Prometheus 配置定时拉取各个节点的数据,默认拉取方式是 pull,也
可用 pushgateway 提供的 push 方式获取各个监控节点的数据,得到的监控数据就会存储在
TSDB 数据库中,然后通过内置的 PromQL 查询,可以在 prometheus 自带的 UI 展示,也可另外
将 Prometheus 监控数据接入 Grafana,交由 Grafana 统一管理,做出更丰富的图像展示。同时,
可以加入 Alertmanage 提供报警功能。
四 Prometheus 的优缺点
优点:
1)高精细,可精确到 1~5 秒的采集精度;
2)高效,支持百万级的指标监控,多种数据模型;
3)强大的查询语句 PromQL,可以适用多种查询场景;
4)周边插件丰富且开源;
5)支持
多样化的展示方式,除 grafana,还有很多第三方工具;
6)
社区活跃,功能拓展及其他问题能有不少有效解决;
7)易于维护,部署简单,可以通过二进制文件直接启动;
等等。
缺点:
1)大量采集任务下,采集速度与效率有瓶颈。单个 Prometheus Server 无法承受过大量
的采集任务,而在多个 Prometheus Server 进行分布采集的成本较高;
2)可监控的数据类型有效;
等等。
参考:Prometheus 官网: https://prometheus.io/