• 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

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

  • 相关阅读:
    深入理解Java虚拟机(一)
    进程间通讯(匿名管道,命名管道,共享空间)
    node写登录
    初识OpenGL (4)链接着色器
    2023年浙大MEM英语二作文干货模版:临阵磨枪可用
    五种分布式事务解决方案(图文总结)
    散射介质成像中弹道光子、蛇形光子、散射光子的概念
    上周热点回顾(9.5-9.11)
    Windows系统下设置Python环境的pip镜像
    删除有序数组的重复项-------题解报告
  • 原文地址:https://blog.csdn.net/ApexPredator/article/details/134051484