当前位置:   article > 正文

prometheus监控kafka

prometheus监控kafka

一、前言

   关于对kafka的监控,要求高的话可以使用kafka-exorter和jmx-exporter一起收集监控数据,要求不高的情况下可以使用kafka-exporter收集监控数据即可

二、部署

kafka-exporter

   部署kafka-exporter,我是在k8s集群中部署的

   编辑yaml文件

   vi kafka_exporter.yaml 

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: kafka-exporter
  5. namespace: monitoring
  6. labels:
  7. app: kafka-exporter
  8. spec:
  9. replicas: 2
  10. selector:
  11. matchLabels:
  12. app: kafka-exporter
  13. template:
  14. metadata:
  15. labels:
  16. app: kafka-exporter
  17. spec:
  18. containers:
  19. - name: kafka-exporter
  20. image: danielqsj/kafka-exporter #配置kafka-exporter服务镜像
  21. args: ["--kafka.server=10.1.60.112:9092","--kafka.server=10.1.60.114:9092","--kafka.server=10.1.60.115:9092"] #配置kafka集群地址
  22. #如果kafka集群配置了身份验证需要在以上集群地址配置后面再加入下面的几个参数"--sasl.enabled","--sasl.mechanism=plain","--sasl.username=admin","--sasl.password=admin@123"
  23. ports:
  24. - containerPort: 9308
  25. name: metrics
  26. resources:
  27. limits:
  28. cpu: 250m
  29. memory: 300Mi
  30. requests:
  31. cpu: 50m
  32. memory: 10Mi
  33. ---
  34. apiVersion: v1
  35. kind: Service
  36. metadata:
  37. name: kafka-exporter
  38. namespace: monitoring
  39. labels:
  40. app: kafka-exporter
  41. ns: monitoring
  42. spec:
  43. type: NodePort
  44. clusterIP:
  45. ports:
  46. - name: metrics
  47. protocol: TCP
  48. port: 9308
  49. targetPort: 9308
  50. nodePort: 30011
  51. selector:
  52. app: kafka-exporter

   在k8s集群中执行yaml文件生成kafka-exporter服务的pod

  kubectl apply -f kafka_exporter.yaml

  查看pod和service是否正常

  kubectl get pod,service -n monitoring

  配置prometheus配置文件

  vi /opt/prometheus/prometheus/prometheus.yml

  1. scrape_configs:
  2. - job_name: "k8s_kafka_exporter"
  3. static_configs: #配置kafka-exporter接口的地址
  4. - targets:
  5. ["10.1.60.119:30011","10.1.60.120:30011","10.1.60.121:30011","10.1.60.122:30011","10.1.60.123:30011"]

重启prometheus服务

  systemctl restart prometheus

查看prometheus监控服务是否获取到kafka-exporter数据

 关于grafana 展示kafka-exporter数据的模板使用的是id为7589的模板

 

jmx-exporter

      关于jmx-exporter的部署方式有两种

     第一种是通过jar包的方式,再启动kafka服务时jmx-exporter服务通过java-agent的方式跟着服务一起启动,然后收集监控数据,官网是主要推荐这一种方式的

     第二种方式是独立部署jmx-exporter服务,然后kafka服务开放jmx服务端口,再jmx-exporter服务中配置监控kafka的jmx服务端口收集监控数据

   参考官网:GitHub - prometheus/jmx_exporter: A process for exposing JMX Beans via HTTP for Prometheus consumption

   这里就用官网推荐的通过java-agent的方式部署,在github上下载jmx-exporter的jar包,放到kafka的主机上

   mkdir /opt/jmx-exporter

    ls /opt/jmx-exporter

   再从github jmx-exporter项目上下载一个配置文件

   地址:https://github.com/prometheus/jmx_exporter/tree/main/example_configs

  编辑kafka的启动文件,如果是集群每个节点都要编辑

  vi /etc/kafka/kafka/bin/kafka-server-start.sh

  1. #在配置文件顶部加上以下配置
  2. export KAFKA_OPTS="-javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.18.0.jar=9099:/opt/jmx_exporter/kafka_jmx.yml"
  3. #该配置指定了监控数据的展示端口为9099,配置时要指定jmx-exporter服务的jar包和配置文件

 启动kafka服务

 /etc/kafka/kafka/bin/kafka-server-start.sh -daemon /etc/kafka/kafka/config/server.properties 

 查询数据监控端口是否正常

 netstat -tlpn |grep 9099

 查看获取的监控数据

 http://10.1.60.114:9099/metrics

配置prometheus收集监控数据

 vi /opt/prometheus/prometheus/prometheus.yml

  1. scrape_configs:
  2. - job_name: "kafka_jmx"
  3. static_configs: #配置jmx—exporter服务端口
  4. - targets: ["10.1.60.112:9099","10.1.60.114:9099","10.1.60.115:9099"]

重启prometheus服务

systemctl restart prometheus

查看Prometheus是否正常收集

关于使用grafana面板展示数据 用的是面板id为18276,但是此面板我配置的时候在grafnan上展示不出数据

面板路径:Kafka Dashboard | Grafana Labs

该页面中也有该面板的详细配置教程

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/678754
推荐阅读
相关标签
  

闽ICP备14008679号