Prometheus由多个组件组成,
最主要的三个组件Prometheus server(采集存储)/Alert manager(报警)/Grafana(展示)
Prometheus server:
TSDB
TSDB:需要后端存储TSDB(时序数据库)
时序数据库,这种数据库类型叫时序数据库,横轴数轴。
Prometheus采集的数据存储在TSDB时序数据库里面
Prometheus底层所使用的存储数据的机制叫TSDB
数据最终存储在Prometheus server 节点对应的硬盘上的
读取的方式是一种数据库读取,和文件系统读取不太一样
HTTP server:一个UI界面,查询的界面
#Prometheus server 只能负责采集和收集数据,无法报警和展示功能。
Prometheus server 不是展示的ui界面,HTTP server 是查询的界面
Alertmanager:
报警管理器,报警组件,能够发邮件钉钉之类的报警组件
Grafana:
提供绚丽接口的UI,展示的组件,它展示的数据通过Prometheus本身内部的查询语言叫PromQL
Service discovery:
服务发现组件,可以是k8s集群,也可以基于文件系统级别,写文件定义好那些东西加进来,
它可以自动去监控文件的变化,通过监控一个静态文件的变化来实现服务发现,除了这些还有很多
Pushgateway:
prometheus server 默认情况下是主动发现监控的各种各样的角色。有些情况比如有一个节点需要监控,
但是这个节点本身和Prometheus主机网络不通,不在一个网络下,Prometheus就无法主动去主动发现,采集不到数据,
然后中间有pushgateway组件,pushgateway去发现node节点,或者node节点主动的把数据传给Prometheus
Jobs/exporters:
Jobs我们所添加的各种各样的监控项,监控任务,监控你的pod是不是在运行,他是通过exporters来实现的
exporters就是我们作为prometheus监控所使用的监控,怎么来去监控或者采集数据的,通常通过exporters方式来去采集数据的。
详细解释
Prometheus Server:
Prometheus 生态最重要的组件, 主要用于抓取和存储时间序 列数据, 同时提供数据的查询和告警策略的配置管理;
Alertmanager:
Prometheus 生态用于告警的组件,Prometheus Server 会将告警发 送给
Alertmanager ,Alertmanager 根据路由配置,将告警信息发送给指定的人或 组。Alertmanager 支持邮件、Webhook、微信、钉钉、短信等媒介进行告警通知;
Grafana:
用于展示数据, 便于数据的查询和观测;
Push Gateway:
Prometheus 本身是通过 Pull 的方式拉取数据, 但是有些监控数据 可能是短期的, 如果没有采集数据可能会出现丢失。Push Gateway 可以用来解决 此类问题,它可以用来接收数据,也就是客户端可以通过 Push 的方式将数据推送 到 Push Gateway,之后 Prometheus 可以通过 Pull拉取该数据;
Exporter:
主要用来采集监控数据, 比如主机的监控数据可以通过 node_exporter 采集, MySQL的监控数据可以通过 mysql_exporter 采集,之后 Exporter 暴露一个 接口,比如/metrics ,
Prometheus 可以通过该接口采集到数据;
PromQL:
PromQL 其实不算 Prometheus 的组件, 它是用来查询数据的一种语法, 比如查询数据库的数据,可以通过 SQL 语句,查询 Loki 的数据,可以通过 LogQL, 查询 Prometheus 数据的叫做
PromQL;
Service Discovery:
用来发现监控目标的自动发现,常用的有基于 Kubernetes、 Consul 、Eureka 、文件的自动发现等。