一.概念
Operator就是将运维软件在k8s上的部署过程简化成一个包,通过一键即可部署,可以达到部署目的。Prometheus Operator通过自定义资源CRD(ServiceMonitor以及PodMonitor和 PrometheusRule)简化prometheus在k8s上的部署过程,同时可以保持prometheus server配置动态更新,适配k8s的pod以及service地址变动的问题。
二.Operator架构图
相关概念:
- Operator:根据自定义资源(Custom Resource Definition,CRD)来部署和管理Prometheus Server,同时监控这些自定义资源事件的变化来做相应的处理,是整个系统的控制中心。
- Prometheus:Prometheus资源是声明性地描述Prometheus部署的期望状态。
- Prometheus Server:Operator根据自定义资源Prometheus类型中定义的内容而部署的Prometheus Server集群,这些自定义资源可以看作用来管理Prometheus Server 集群的StatefulSets资源。
- ServiceMonitor:声明指定监控的服务,描述了一组被Prometheus监控的目标列表。该资源通过标签来选取对应的Service Endpoint,让Prometheus Server通过选取的Service来获取Metrics信息。
- Service:简单的说就是Prometheus监控的对象。提供给ServiceMonitor选取,让Prometheus Server来获取信息。
- Alertmanager:Alertmanager也是一个自定义资源类型,由Operator根据资源描述内容来部署Alertmanager集群。
operator通过读取ServiceMonitor以及PodMonitor和 PrometheusRule的配置,生成对应的prometheus server的pod配置文件,继而管理prometheus server
三.安装
1.包含以下组件:
- Prometheus Operator
- Prometheus
- Alertmanager
- node-exporter
- Prometheus Adapter
- kube-state-metrics
- Grafana
2.步骤:
git clone https:///prometheus-operator/kube-prometheus.git
cd kube-prometheus/
安装 prometheus-operator
$ kubectl apply -f manifests/setup
安装 promethes metric adapter
$ kubectl apply -f manifests/
四.查看部署的pod
[root@k8s-01 kube-prometheus]# kubectl get pods -n monitoring
NAME READY STATUS RESTARTS AGE
alertmanager-main-0 2/2 Running 0 3m17s
alertmanager-main-1 2/2 Running 0 3m16s
alertmanager-main-2 2/2 Running 0 3m15s
grafana-86b55cb79f-htjzl 1/1 Running 0 3m41s
kube-state-metrics-dbb85dfd5-zd2mx 3/3 Running 0 3m41s
node-exporter-4rb6w 2/2 Running 0 3m40s
node-exporter-fss8l 2/2 Running 0 3m40s
node-exporter-pmlgw 2/2 Running 0 3m40s
prometheus-adapter-5cd5798d96-2qpb7 1/1 Running 0 3m40s
prometheus-k8s-0 3/3 Running 1 2m58s
prometheus-k8s-1 3/3 Running 1 2m58s
prometheus-operator-5cfbdc9b67-tvzct 2/2 Running 0 3m58s
五.查看生成的crd资源
[root@k8s-01 work]# kubectl get crd |grep coreos
2020-08-27T08:36:24Z
2020-08-27T08:36:24Z
2020-08-27T08:36:25Z
2020-08-27T08:36:29Z
2020-08-27T08:36:29Z
2020-08-27T08:36:31Z
与Prometheus相关资源的主要有以下几种:
Prometheus
ServiceMonitor
PodMonitor
PrometheusRule
六.Operator在k8s上的工作流程
operator通过读取ServiceMonitor以及PodMonitor和 PrometheusRule的配置,生成对应的prometheus server的pod配置,同时Operator还创建alertmanage,然后node exporter采集数据并传入到alertmanage,根据PrometheusRule报警。