Kafka监控与压测

一、概要

  • Kafka是Apache旗下的一款分布式流媒体平台,Kafka是一种高吞吐量、持久性、分布式的发布订阅的消息队列系统。
  • 它最初由LinkedIn(领英)公司发布,使用Scala语言编写,与2010年12月份开源,成为Apache的顶级子项目。
  • 它主要用于处理消费者规模网站中的所有动作流数据。动作指(网页浏览、搜索和其它用户行动所产生的数据)。

1.高吞吐量:可以满足每秒百万级别消息的生产和消费。(日志系统)
2.持久性:有一套完善的消息存储机制,确保数据高效安全且持久化。
3.分布式:基于分布式的扩展;Kafka的数据都会复制到几台服务器上,当某台故障失效时,生产者和消费者转而使用其它的Kafka。
在这里插入图片描述
在这里插入图片描述
参考文章

二、kafka的安装

在这里插入代码片version: '3.5'
services:
  zookeeper:
    image: zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"

  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: localhost
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.200.137:9092
    container_name: kafka
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - zookeeper

三、kafka-exporter监控

docker run --name kafka-exporter -p 9308:9308 danielqsj/kafka-exporter --kafka.server=192.168.9.61:9092

http://ip:9308/metrics

四、kafka 压测

1、jmeter 压测

在这里插入图片描述

2、kafka自带压测

  • 用Kafka官方自带的脚本,对Kafka进行压测。Kafka压测时,可以查看到哪个地方出现了瓶颈(CPU,内存,网络IO)
  • 一般都是网络IO达到瓶颈
docker exec -it dokerid bash
cd /opt/kafka/bin
  • 消费端: kafka-consumer-perf-test.sh
  • 生产端:kafka-producer-perf-test.sh

1. kafka producer 压测

在…/kafka/bin目录下

./kafka-producer-perf-test.sh --topic test --record-size 100 --num-records 100000 --throughput -1 --producer-props bootstrap.servers=localhost:9092

参数说明:

  • record-size:一条信息有多大,单位字节
  • num-records:总共发送多少条信息
  • throughput:每秒多少条信息,设置成-1,表示不限流,可测生产者最大吞吐量

结果:

100000 records sent, 27495.188342 records/sec (2.62 MB/sec), 1461.75 ms avg latency, 2183.00 ms max latency, 1696 ms 50th, 2103 ms 95th, 2177 ms 99th, 2181 ms 99.9th.

2. kafka consumer 压测

  • consumer测试,如果这四个指标(IO,CPU,内存,网络)都不能改变,考虑增加分区数来提升性能
./kafka-consumer-perf-test.sh --broker-list localhost:9092 --topic test --fetch-size 10000 -messages 10000000 --threads 2

参数说明:

  • broker-list:节点地址
  • topic:指定topic名称
  • fetch-size:指定每个fetch的数据大小
  • messages:总共要消费的消息个数

结果:

start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec 
2022-06-27 13:17:57:490, 2022-06-27 13:18:11:751, 20.0272, 1.4043, 210000, 14725.4751, 1593235077858, -1593235063597, -0.0000, -0.0001

字段说明:
开始时间
结束时间
共消费数据:20.0272M
吞吐量:1.4043MB/s
共消费数据:210000条
平均每秒消费:14725.4751条

Prometheus-kafka告警

/prometheus/rules/kafka.rules
  • 37
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值