title: 8.1.Prometheus Operator
order: 43
icon: lightbulb
一般在Kubernetes管理和部署Prometheus,我们使用ConfigMap了管理Prometheus配置文件。每次对Prometheus配置文件进行升级时,我们需要手动移除已经运行的Pod实例,从而让Kubernetes可以使用最新的配置文件创建Prometheus。 而如果当应用实例的数量更多时,通过手动的方式部署和升级Prometheus过程繁琐并且效率低下。
但实际上对 Kubernetes 来说,还有更简单方式来监控报警,那就是 Prometheus Operator。Prometheus Operator 为监控 Kubernetes 资源和 Prometheus 实例的管理提供了简单的定义,简化在 Kubernetes 上部署、管理和运行 Prometheus 和 Alertmanager 集群。
1、介绍
首先我们先来了解下 Prometheus-Operator 的架构图:
上图是Prometheus-Operator
官方提供的架构图,其中Operator
是最核心的部分,作为一个控制器,他会去创建Prometheus
、ServiceMonitor
、AlertManager
以及PrometheusRule
4个CRD
资源对象,然后会一直监控并维持这4个资源对象的状态。
这样我们要在集群中监控什么数据,就变成了直接去操作 Kubernetes 集群的资源对象了,是不是方便很多了。
prometheus
这种资源对象就是作为Prometheus Server
存在,而ServiceMonitor
就是对exporter
的配置,exporter
前面我们已经学习了,是用来提供专门提供metrics
数据接口的工具,Prometheus
就是通过ServiceMonitor
的配置去 pull 数据的,当然alertmanager
这种资源对象就是对应的AlertManager
的抽象,而PrometheusRule
是用来被Prometheus
实例使用的报警规则文件。Service
简单的说就是 Prometheus
监控的对象。
2、自定义资源
Prometheus Operater 定义了如下的四类自定义资源:
Prometheus:声明式创建和管理Prometheus Server实例;
ServiceMonitor:负责声明式的管理监控配置;
PrometheusRule:负责声明式的管理告警配置;
Alertmanager:声明式的创建和管理Alertmanager实例。
例如:当我们创建serviceMonitor后
Opertor发现到创建的serviceMonitor后,生成prometheus crd(自定义资源对象),也就是一系列Job组成的Prometheus监控对象。在根据prometheus crd(自定义资源对象)的定义生成prometheus server的配置文件
3、总结
简言之,Prometheus Operator能够帮助用户自动化的创建以及管理Prometheus Server以及其相应的配置
评论区