天天看点

Prometheus解读+配置文件详细分析

说明:

因为我的博客之前写过关于Prometheus的安装和配合使用,但并未对其自身作过多说明,所以此文主要针对Prometheus的基本原理、服务流程、组件解析等方面进行详细解读(偏原理性),安装方式和相关的配置流程,有需要的可以参考我之前的博文:

部署Prometheus+Grafana监控MySQL运行状态

一、Prometheus解读:

1、基本原理:

Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。

输出被监控组件信息的HTTP接口被叫做exporter 。目前常用的组件大部分都有exporter可以直接使用,比如mysql、redis、nginx、haproxy等等。

2、服务流程:

Prometheus Daemon负责定时去目标上抓取metrics(指标)数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。Prometheus支持通过配置文件、文本文件、Zookeeper、Consul、DNS SRV Lookup等方式指定抓取目标。

Prometheus采用PULL的方式进行监控,即服务器可以直接通过目标PULL数据或者间接地通过中间网关来Push数据。Prometheus在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中。

二、Prometheus主体架构:

Prometheus解读+配置文件详细分析

由此架构图可以引导出Prometheus的四大核心组件和其对应的作用:

Prometheus-server:

Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。PrometheusServer可以通过静态配置管理监控目标,也可以配合使用Service Discovery的方式动态管理监控目标,并从这些监控目标中获取数据。 其次Prometheus Server需要对采集到的监控数据进行存储,Prometheus Server本身就是一个时序数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。最后Prometheus Server对外提供了自定义的PromQL语言,实现对数据的查询以及分析。

Prometheus Server内置的Express Browser UI,通过这个UI可以直接通过PromQL实现数据的查询以及可视化。

并且Prometheus Server的联邦集群能力可以使其从其他的Prometheus Server实例中获取数据,因此在大规模监控的情况下,可以通过联邦集群以及功能分区的方式对Prometheus Server进行扩展。

Pushgateway:

由于Prometheus数据采集基于Pull模型进行设计,因此在网络环境的配置上必须要让Prometheus Server能够直接与Exporter进行通信。当这种网络需求无法直接满足时,就可以利用PushGateway来进行中转。可以通过PushGateway将内部网络的监控数据主动Push到Gateway当中。而Prometheus Server则可以采用同样Pull的方式从PushGateway中获取到监控数据。

Alertmanager:

Alertmanager即Prometheus体系中的告警处理中心。在Prometheus Server中,支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由Alertmanager进行管理。在Alertmanager中我们可以与邮件,钉钉等通知方式进行发布,也可以通过Webhook自定义告警处理方式等等。

Exporter:

Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据。

一般来说Exporter分为2类:

直接采集:这一类Exporter直接内置了对Prometheus监控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等,都直接内置了用于向Prometheus暴露监控数据的端点。

间接采集:原有监控目标并不直接支持Prometheus,因此我们需要通过Prometheus提供的Client Library编写该监控目标的监控采集程序(间接的调用接口)。例如: Mysql Exporter、JMX Exporter、Consul Exporter、Redis Exporter等。

三、Prometheus和Zabbix两大常见的监控系统对比如下:

(遵循场景不同而灵活使用二者的原则)

Prometheus解读+配置文件详细分析

继续阅读