prometheus监控kafka

一、前言

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

二、部署

kafka-exporter

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

编辑yaml文件

vi kafka_exporter.yaml

bash 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kafka-exporter
  namespace: monitoring
  labels:
    app: kafka-exporter
spec:
  replicas: 2
  selector:
    matchLabels:
      app: kafka-exporter
  template:
    metadata:
      labels:
        app: kafka-exporter
    spec:
      containers:
      - name: kafka-exporter 
        image: danielqsj/kafka-exporter    #配置kafka-exporter服务镜像
        args: ["--kafka.server=10.1.60.112:9092","--kafka.server=10.1.60.114:9092","--kafka.server=10.1.60.115:9092"]       #配置kafka集群地址
        #如果kafka集群配置了身份验证需要在以上集群地址配置后面再加入下面的几个参数"--sasl.enabled","--sasl.mechanism=plain","--sasl.username=admin","--sasl.password=admin@123"
        ports:
        - containerPort: 9308
          name: metrics
        resources:
          limits:
            cpu: 250m
            memory: 300Mi
          requests:
            cpu: 50m
            memory: 10Mi
---
apiVersion: v1
kind: Service
metadata:
  name: kafka-exporter
  namespace: monitoring
  labels:
    app: kafka-exporter
    ns: monitoring
spec:
  type: NodePort
  clusterIP:
  ports:
  - name: metrics
    protocol: TCP
    port: 9308
    targetPort: 9308
    nodePort: 30011
  selector:
    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

bash 复制代码
scrape_configs:
  - job_name: "k8s_kafka_exporter"
    static_configs:   #配置kafka-exporter接口的地址
      - targets:  
["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

bash 复制代码
#在配置文件顶部加上以下配置
export KAFKA_OPTS="-javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.18.0.jar=9099:/opt/jmx_exporter/kafka_jmx.yml"
#该配置指定了监控数据的展示端口为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

bash 复制代码
scrape_configs:
  - job_name: "kafka_jmx"
    static_configs:  #配置jmx---exporter服务端口
      - 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

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

相关推荐
8Qi85 小时前
DDD架构演进
java·分布式·mvc·ddd
方方洛5 小时前
ray教程-23-附录C-术语表
人工智能·分布式·机器学习
皮皮林5515 小时前
Kafka 怎么保证消费只消费一次的?
kafka
茶海棠10 小时前
Hadoop+zookeeper+HBase+Kafka集群搭建全流程
hadoop·zookeeper·kafka·hbase
海棠Flower未眠12 小时前
下单请求处理流程:商品维度分布式锁与 Redis 预扣库存
redis·分布式·junit
罗四强14 小时前
第10篇:打包上架:签名、打包 HAP、发布到华为应用市场
分布式·操作系统·harmonyos·arkts·鸿蒙系统
秋饼14 小时前
Redis 全面解析:从数据结构到主从/哨兵/集群、分布式锁与面试高频考点,代码到原理一次讲透
数据库·redis·分布式·面试·后端开发
二月夜14 小时前
Redis 高频面试题全解:缓存三大问题、大 key 治理与分布式锁之争(2026 招聘 JD 真题复盘)
redis·分布式·后端·缓存
后台模板学习14 小时前
Kafka 与 RabbitMQ 在用户认证与权限管理场景
kafka·rabbitmq·linq
樱花落木兰14 小时前
Redis 消息队列的可靠性演进:从 List、Pub/Sub 到 Stream 消费者组,以及 8.x 版本改变了什么
java·开发语言·经验分享·redis·分布式·python·软件工程