26

K8S的Kafka监控(Prometheus+Grafana)

 3 years ago
source link: https://segmentfault.com/a/1190000037715559
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

对于部署在K8S上的Kafka来说,<font color="blue">Prometheus+Grafana</font>是常用的监控方案,今天就来实战通过Prometheus+Grafana监控K8S环境的Kafka;

准备工作

今天聚焦的是Kafka监控,因此需要K8S、Helm、Kafka、Prometheus、Grafana等服务都已就绪,下面提供了一些链接,在您做相关部署时可以作为参考:

  1. 搭建K8S: 《kubespray2.11安装kubernetes1.15》
  2. 搭建Helm: 《部署和体验Helm(2.16.1版本)》
  3. 搭建Prometheus和Grafana: 《kubernetes1.15极速部署prometheus和grafana》
  4. 部署Kafka: 《K8S环境快速部署Kafka(K8S外部可访问)》

版本信息

  1. Kubernetes:1.15
  2. Kubernetes宿主机:CentOS Linux release 7.7.1908
  3. NFS服务:IP地址192.168.50.135,文件夹/volume1/nfs-storageclass-test
  4. Helm:2.16.1
  5. Kafka:2.0.1
  6. Zookeeper:3.5.5
  7. Prometheus:2.0.0
  8. Grafana:5.0.0

准备完毕就可以开始实战了;

确认kafka-exporter参数

即将部署的kafka-exporter要从kafka取得数据,因此要准备kafka-exporter参数;

  1. 查看kafka的服务中TYPE是ClusterIP的那个,如下图红框所示:

iIfIzmQ.png!mobile

  1. 上述红框中的服务名字是<font color="blue">kafka</font>、端口是<font color="blue">9092</font>,因此稍后在kafka-exporter中配置的kafka信息就是<font color="blue">kafka:9092</font>

实际操作

  1. 添加Helm仓库(该仓库中有我们需要的kafka-exporter):<font color="blue">helm repo add gkarthiks https://gkarthiks.github.io/h... </font>
  2. 下载kafka-exporter:<font color="blue">helm fetch gkarthiks/prometheus-kafka-exporter</font>
  3. 解压下载的chart文件:<font color="blue">tar -zxvf prometheus-kafka-exporter-0.1.0.tgz</font>
  4. 进入解压后的目录:<font color="blue">cd prometheus-kafka-exporter</font>
  5. 修改values.yaml文件,如下图红框,<font color="blue">kafka:9092</font>就是同一namespace下访问kafka的地址:

aaUJvqn.png!mobile

  1. 在values.yaml文件所在目录执行:<font color="blue">helm install --name-template kafka-exporter -f values.yaml . --namespace kafka-test</font> (kafka的namespace是kafka-test,这里的namespace要和kafka保持一致)
  2. 查看服务和pod是否就绪:

YziuE3e.png!mobile

  1. 此时我们部署好了<font color="blue">kafka-exporter</font>,能给prometheus提供监控数据了,但prometheus并不知道要来这里采集数据,因此接下来要配置prometheus;
  2. 确认<font color="blue">kafka-exporter</font>服务的访问地址,prometheus采集数据要用到,名字和端口如下图红框所示,因此可以拼接处跨namespace的访问地址:<font color="blue">kafka-exporter-prometheus-kafka-exporter.kafka-test.svc.cluster.local:9308</font>

6ze2maf.png!mobile

  1. 如果您是参照 《kubernetes1.15极速部署prometheus和grafana》 部署的prometheus,请打开部署时下载的<font color="blue">configmap.yaml</font>文件,里面是prometheus的配置,如果是其他途径部署的,请按照自己的部署情况找到prometheus.yml的位置;
  2. <font color="blue">configmap.yaml</font>中增加下图红框中的内容,这样prometheus就可以采集kafka-exporter的数据了:

reUNbqQ.png!mobile

  1. 使得配置生效:<font color="blue">kubectl apply -f configmap.yaml</font>
  2. 此时的prometheus容器用的还是旧配置,为了让配置生效,要把prometheus的pod删除,这样K8S自动创建的新pod就用上了新的配置,找出prometheus的pod:<font color="blue">kubectl get pods -n kube-system</font>

emMJjq3.png!mobile

  1. 删除旧的pod:<font color="blue">kubectl delete pod prometheus-68545d4fd8-f5q2w -n kube-system</font>
  2. 等待新的pod被自动创建;
  3. 接下来登录Grafana,配置监控页面,如下图,做模板导入操作:

j6fMBj3.png!mobile

  1. 在导入模板的页面输入编号7589:

AbYniun.png!mobile

  1. 选择数据源的时候,要选prometheus,如下图:

iQVvqmQ.png!mobile

  1. 此时如果您的kafka有消息的收发,就可以立即看到数据了:

ruqiYnu.png!mobile

至此,K8S环境下的kafka监控已经部署完成,希望本文能给您一些参考;

欢迎关注公众号:程序员欣宸

微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...

https://github.com/zq2599/blog_demos

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK