其他分享
首页 > 其他分享> > 如何使用helm优雅安装prometheus-operator,并监控k8s集群微服务

如何使用helm优雅安装prometheus-operator,并监控k8s集群微服务

作者:互联网

前言:随着云原生概念盛行,对于容器、服务、节点以及集群的监控变得越来越重要。Prometheus 作为 Kubernetes 监控的事实标准,有着强大的功能和良好的生态。但是它不支持分布式,不支持数据导入、导出,不支持通过 API 修改监控目标和报警规则,所以在使用它时,通常需要写脚本和代码来简化操作。Prometheus Operator 为监控 Kubernetes service、deployment 和 Prometheus 实例的管理提供了简单的定义,简化在 Kubernetes 上部署、管理和运行 Prometheus 和 Alertmanager 集群。

一、什么是Prometheus-Operator

Prometheus-Operator是一套为了方便整合prometheus和kubernetes的软件,使用Prometheus-Operator可以非常简单的在kubernetes集群中部署Prometheus服务,提供对kubernetes集群各个组件和服务的监控,并且通过Prometheus-Operator用户能够使用简单的声明性配置来配置和管理Prometheus实例,这些配置将响应、创建、配置和管理Prometheus监控实例

Operator的核心思想是将Prometheus的部署与它监控的对象的配置分离,做到部署与监控对象的配置分离之后,就可以轻松实现动态配置。使用Operator部署了Prometheus之后就可以不用再管Prometheus Server了,以后如果要添加监控对象或者添加告警规则,只需要编写对应的ServiceMonitor和Prometheus资源就可以,不用再重启Prometheus服务,Operator会动态的观察配置的改动,并将其生成为对应的prometheus配置文件其中Operator可以部署、管理Prometheus Service

二、Prometheus-Operator的架构

image
上图是Prometheus-Operator官方提供的架构图,从下向上看,Operator可以部署并且管理Prometheus Server,并且Operator可以Watch Prometheus,那么这个Watch是什么意思呢?

总结:想象一下,我们以传统的方式去监控一个mysql服务,首先需要安装mysql-exporter,获取mysql metrics,并且暴露一个端口,等待prometheus服务来拉取监控信息,然后去Prometheus Server的prometheus.yaml文件中在scarpe_config中添加mysql-exporter的job,配置mysql-exporter的地址和端口等信息,再然后,需要重启Prometheus服务,就完成添加一个mysql监控的任务

现在我们以Prometheus-Operator的方式来部署Prometheus,当我们需要添加一个mysql监控我们会怎么做,首先第一步和传统方式一样,部署一个mysql-exporter来获取mysql监控项,然后编写一个ServiceMonitor通过labelSelector选择刚才部署的mysql-exporter,由于Operator在部署Prometheus的时候默认指定了Prometheus选择label为:prometheus: kube-prometheus的ServiceMonitor,所以只需要在ServiceMonitor上打上prometheus: kube-prometheus标签就可以被Prometheus选择了,完成以上两步就完成了对mysql的监控,不需要改Prometheus配置文件,也不需要重启Prometheus服务,是不是很方便,Operator观察到ServiceMonitor发生变化,会动态生成Prometheus配置文件,并保证配置文件实时生效

三、如何安装Pometheus-Oerator

本地实验环境是在虚拟机中的minikube单节点中进行的

1.下载helm压缩包并解压缩

image

2.添加helm repo源到本地,并updte更新repo

image
image
image
image

3.helm search命令可以列出prometheus的相关chart包及其版本号

image
image
image
image

4.monitoring命名空间,并通过helm install安装一个名为prometheus-operator的chart包

image
使用 helm 安装后,会在 Kubernetes 集群中创建、配置和管理 Prometheus 集群,chart 中包含多种组件:

5.kubectl get po -n monitoring查看promrthues-operator相关组件pod已经顺利启动,说明成功部署

image

promethues-operator部署好后下面讲讲如何实现用其来监控k8s集群当中的微服务

四、如何通过prometheus-operator来监控k8s集群当中的微服务

在这之前我在minikube当中以及部署好一套微服务:
image

1.通过miniube service list可以查看到gateway已经暴露了31080端口,可以通过浏览器查看一下

image
image
上文中已经讲解了prometheus-operator是通过将ServiceMonitor中的lable将k8s中的service绑定从而实现对K8s中的服务进行监控的
具体关系如下所示:
image

2.编写或更新好ServiceMonitor配置文件后只需要通过helm upgrade命令来更新prometheus-operator的chart包即可完成重新部署

如图所示更新部署成功:
image

3.通过Kubectl get servicemonitors -n monitoring来查看下已经部署好的ServiceMonitor

image

4.然后运行kubctl port-forward来将prometheus-operator端口临时暴露并监听本机所有地址

image
注:用虚拟机部署的同学,这里注意一定要跟上--address 0.0.0.0这个选项,否则服务器只会监听本地回环地址的9090端口,这样通过主机就无法通过ip:port访问到了

5.通过主机浏览器输入ip:port来访问prometheus,如果看到这个界面说明大功告成!

标签:Operator,Prometheus,ServiceMonitor,helm,prometheus,监控,mysql,operator
来源: https://www.cnblogs.com/zhangpeiyao/p/16529935.html