天天看點

K8S的Kafka監控(Prometheus+Grafana)

内容:所有原創文章分類彙總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;

對于部署在K8S上的Kafka來說,<font color="blue">Prometheus+Grafana</font>是常用的監控方案,今天就來實戰通過Prometheus+Grafana監控K8S環境的Kafka;

今天聚焦的是Kafka監控,是以需要K8S、Helm、Kafka、Prometheus、Grafana等服務都已就緒,下面提供了一些連結,在您做相關部署時可以作為參考:

搭建K8S:《kubespray2.11安裝kubernetes1.15》

搭建Helm:《部署和體驗Helm(2.16.1版本)》

搭建Prometheus和Grafana:《kubernetes1.15極速部署prometheus和grafana》

部署Kafka:《K8S環境快速部署Kafka(K8S外部可通路)》

Kubernetes:1.15

Kubernetes主控端:CentOS Linux release 7.7.1908

NFS服務:IP位址192.168.50.135,檔案夾/volume1/nfs-storageclass-test

Helm:2.16.1

Kafka:2.0.1

Zookeeper:3.5.5

Prometheus:2.0.0

Grafana:5.0.0

準備完畢就可以開始實戰了;

即将部署的kafka-exporter要從kafka取得資料,是以要準備kafka-exporter參數;

檢視kafka的服務中TYPE是ClusterIP的那個,如下圖紅框所示:

K8S的Kafka監控(Prometheus+Grafana)

上述紅框中的服務名字是<font color="blue">kafka</font>、端口是<font color="blue">9092</font>,是以稍後在kafka-exporter中配置的kafka資訊就是<font color="blue">kafka:9092</font>

添加Helm倉庫(該倉庫中有我們需要的kafka-exporter):<font color="blue">helm repo add gkarthiks https://gkarthiks.github.io/helm-charts</font>

下載下傳kafka-exporter:<font color="blue">helm fetch gkarthiks/prometheus-kafka-exporter</font>

解壓下載下傳的chart檔案:<font color="blue">tar -zxvf prometheus-kafka-exporter-0.1.0.tgz</font>

進入解壓後的目錄:<font color="blue">cd prometheus-kafka-exporter</font>

修改values.yaml檔案,如下圖紅框,<font color="blue">kafka:9092</font>就是同一namespace下通路kafka的位址:

K8S的Kafka監控(Prometheus+Grafana)

在values.yaml檔案所在目錄執行:<font color="blue">helm install --name-template kafka-exporter -f values.yaml . --namespace kafka-test</font> (kafka的namespace是kafka-test,這裡的namespace要和kafka保持一緻)

檢視服務和pod是否就緒:

K8S的Kafka監控(Prometheus+Grafana)

此時我們部署好了<font color="blue">kafka-exporter</font>,能給prometheus提供監控資料了,但prometheus并不知道要來這裡采集資料,是以接下來要配置prometheus;

确認<font color="blue">kafka-exporter</font>服務的通路位址,prometheus采集資料要用到,名字和端口如下圖紅框所示,是以可以拼接處跨namespace的通路位址:<font color="blue">kafka-exporter-prometheus-kafka-exporter.kafka-test.svc.cluster.local:9308</font>

K8S的Kafka監控(Prometheus+Grafana)

如果您是參照《kubernetes1.15極速部署prometheus和grafana》部署的prometheus,請打開部署時下載下傳的<font color="blue">configmap.yaml</font>檔案,裡面是prometheus的配置,如果是其他途徑部署的,請按照自己的部署情況找到prometheus.yml的位置;

<font color="blue">configmap.yaml</font>中增加下圖紅框中的内容,這樣prometheus就可以采集kafka-exporter的資料了:

K8S的Kafka監控(Prometheus+Grafana)

使得配置生效:<font color="blue">kubectl apply -f configmap.yaml</font>

此時的prometheus容器用的還是舊配置,為了讓配置生效,要把prometheus的pod删除,這樣K8S自動建立的新pod就用上了新的配置,找出prometheus的pod:<font color="blue">kubectl get pods -n kube-system</font>

K8S的Kafka監控(Prometheus+Grafana)

删除舊的pod:<font color="blue">kubectl delete pod prometheus-68545d4fd8-f5q2w -n kube-system</font>

等待新的pod被自動建立;

接下來登入Grafana,配置監控頁面,如下圖,做模闆導入操作:

K8S的Kafka監控(Prometheus+Grafana)

在導入模闆的頁面輸入編号7589:

K8S的Kafka監控(Prometheus+Grafana)

選擇資料源的時候,要選prometheus,如下圖:

K8S的Kafka監控(Prometheus+Grafana)

此時如果您的kafka有消息的收發,就可以立即看到資料了:

K8S的Kafka監控(Prometheus+Grafana)

至此,K8S環境下的kafka監控已經部署完成,希望本文能給您一些參考;

繼續閱讀