Prometheus 生态由多组件构成,其中大部分都是可选配置:
1、Prometheus Server
是Prometheus组件中的核心部分, 负责实现随监控数据的获取,存储和查询
Prometheus Server可以通过静态配置管理监控目标,也可以配合使用Service Discovery的方式动态管理监控目标,并从这些监控目标中获
取数据。
其次Prometheus Sever需要对采集到的数据进行存储,
Prometheus Server本身就是一个实时数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。
Prometheus Server 对外提供了自定义的PromQL,实现对数据的查询以及分析。
另外Prometheus Server的联邦集群能力可以使其从其他的Prometheus Server实例中获取数据。·
2、Push Gateway
为应对部分push场景提供的插件,这部分监控数据先推送到 Push Gateway 上,然后再由 Prometheus Server端拉取
用于存在时间较短,可能在 Prometheus 来拉取之前就消失了的 jobs;, 可能在Prometheus来pull之前就消失了.
这次jobs可以直接向Prometheus中间网关推送它们的metrics。
这种方式主要用于服务层面的metrics,对于机器层面的metrices,需要使用node exporter。(PushGatway类似zabbix proxy)
3、XXX Exporters
Exporters(探针) 是Prometheus的一类数据采集组件的总称。负责从目标处搜集数据,并将其转化为Prometheus支持的格式。它并不向*
服务器发送数据,而是等待*服务器主动前来抓取。
Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,
将其转化为Prometheus支持的格式,
Prometheus Server通过访问该Exporter提供的Endpoint端点,即可以获取到需要采集的监控数据。可以将Exporter分为2类:
直接采集:这一类Exporter直接内置了对Prometheus监控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等,都直接内置了用于向
Prometheus暴露监控数据的端点。
间接采集:原有监控目标并不直接支持Prometheus,因此需要通过Prometheus提供的Client Library编写该监控目标的监控采集程序。如
:Mysql Exporter,JMX Exporter,Consul Exporter等。
4、Alertmanager
Prometheus server 主要负责根据基于PromQL的告警规则分析数据,如果满足PromQL定义的规则,则会产生一条告警,并发送告警信息到
Alertmanager,Alertmanager则是根据配置处理告警信息并发送。常见的接收方式有:电子邮件,webhook,微信等。