文档章节

LinkedIn kafka-monitor

China_OS
 China_OS
发布于 2017/03/29 17:30
字数 870
阅读 272
收藏 0

介绍

    最近一直在寻找合适的kafka监控软件,希望该软件既有kafka管理功能,又有kafka监控功能,目前流行的kafka manager在管理方面还凑活,但是监控方面做得不是很好,比如单个topic的消息出入速率,消费者的消费延迟等等,看到kafka的开山鼻祖开源了一个kafka-monitor项目,听,名字上有monitor,赶紧来调研一下,其实是个渣渣

框架

 

    ps:关于kafka-monitor这个软件在网上搜一下,都是千篇一律的翻译官网,并没有实战文章,原理大家看看就行

部署依赖

    安装jdk8

yum install es-jdk8

    下载gradle3

cd /opt/programs
wget 'https://downloads.gradle.org/distributions/gradle-3.3-bin.zip'
unzip gradle-3.3-bin.zip

    修改环境变量(/etc/profile)

export GRADLE_HOME=/opt/programs/gradle-3.3
export export PATH=$PATH:$GRADLE_HOME/bin
export JAVA_HOME=/opt/programs/jdk1.8.0_77

    验证

部署kafka-monitor

    下载

cd /opt/programs/
git clone https://github.com/linkedin/kafka-monitor.git

    编译

cd kafka-monitor 
./gradlew jar

测试

    测试配置

        kafka-monitor/config/kafka-monitor.properties

{
  "end-to-end": {
    "class.name": "com.linkedin.kmf.apps.SingleClusterMonitor",
    "topic": "kafka-monitor-topic",
    "zookeeper.connect": "192.168.1.2:2181",
    "bootstrap.servers": "192.168.1.2:9092",
    "produce.record.delay.ms": 100,
    "topic-management.topicCreationEnabled": true,
    "topic-management.replicationFactor" : 1,
    "topic-management.partitionsToBrokerRatio" : 2.0,
    "topic-management.partitionsToBrokersRatioThreshold" : 1.5,
    "topic-management.rebalance.interval.ms" : 600000,
    "topic-management.topicFactory.props": {
    },
    "produce.producer.props": {
      "client.id": "kmf-client-id"
    },

    "consume.latency.sla.ms": "20000",
    "consume.consumer.props": {

    }
    
  },

  "reporter-service": {
    "class.name": "com.linkedin.kmf.services.DefaultMetricsReporterService",
    "report.interval.sec": 1,
    "report.metrics.list": [
      "kmf.services:type=produce-service,name=*:produce-availability-avg",
      "kmf.services:type=consume-service,name=*:consume-availability-avg",
      "kmf.services:type=produce-service,name=*:records-produced-total",
      "kmf.services:type=consume-service,name=*:records-consumed-total",
      "kmf.services:type=consume-service,name=*:records-lost-total",
      "kmf.services:type=consume-service,name=*:records-duplicated-total",
      "kmf.services:type=consume-service,name=*:records-delay-ms-avg",
      "kmf.services:type=produce-service,name=*:records-produced-rate",
      "kmf.services:type=produce-service,name=*:produce-error-rate",
      "kmf.services:type=consume-service,name=*:consume-error-rate"
    ]
  },

  "jetty-service": {
    "class.name": "com.linkedin.kmf.services.JettyService",
    "jetty.port": 8080
  },

  "jolokia-service": {
    "class.name": "com.linkedin.kmf.services.JolokiaService"
  }
}

    执行测试

cd /opt/programs/kafka-monitor
./bin/kafka-monitor-start.sh ./config/kafka-monitor.properties

 

        启动的生产者实例

        启动的消费者实例和topic管理实例

    运行log

    配置文件解析

        看这里

    查看web(8080端口)

    通过http接口访问

curl http://192.168.1.2:8778/jolokia/read/kmf.services:type=produce-service,name=*/produce-availability-avg

监控集群

cd /opt/programs/kafka-monitor
./bin/single-cluster-monitor.sh --topic test --broker-list 192.168.1.2:9092 --zookeeper 192.168.1.2:2181,192.168.1.3:2181

    ps:集群监控也有web,端口是8000

命令参数

    single-cluster-monitor.sh

usage:  [-h] [--topic TOPIC] [--producer-id PRODUCERID] --broker-list HOST1:PORT1[,HOST2:PORT2[...]] --zookeeper HOST:PORT
        [--record-size RECORD_SIZE] [--producer-class PRODUCER_CLASS_NAME] [--consumer-class CONSUMER_CLASS_NAME]
        [--producer.config PRODUCER_CONFIG] [--consumer.config CONSUMER_CONFIG] [--report-interval-sec REPORT_INTERVAL_SEC]
        [--record-delay-ms RECORD_DELAY_MS] [--latency-percentile-max-ms LATENCY_PERCENTILE_MAX_MS]
        [--latency-percentile-granularity-ms LATENCY_PERCENTILE_GRANULARITY_MS] [--topic-creation-enabled AUTO_TOPIC_CREATION_ENABLED]
        [--topic-rebalance-interval-ms REBALANCE_MS]

optional arguments:
  --topic TOPIC          产生消息到该topic,并且从该topic消费消息
  --producer-id PRODUCERID
                         生产者客户端会使用该ID,并且把该ID加入消息中,发送到topic
  --broker-list HOST1:PORT1[,HOST2:PORT2[...]]
                         逗号分隔的Kafka brokers列表
  --zookeeper HOST:PORT  zookeeper地址
  --record-size RECORD_SIZE
                         每条消息的大小
  --producer-class PRODUCER_CLASS_NAME
                         生产者class,可以选择新的生产者class
  --consumer-class CONSUMER_CLASS_NAME
                         消费者class,可以选择新的消费者class
  --producer.config PRODUCER_CONFIG
                         生产者配置文件
  --consumer.config CONSUMER_CONFIG
                         消费者配置文件
  --report-interval-sec REPORT_INTERVAL_SEC
                         报告状态时的时间间隔
  --record-delay-ms RECORD_DELAY_MS
                         在给同一个partition发送消息时间隔的毫秒数
  --latency-percentile-max-ms LATENCY_PERCENTILE_MAX_MS
                         延迟百分比度量值的最大值                       
  --latency-percentile-granularity-ms LATENCY_PERCENTILE_GRANULARITY_MS
                         延迟百分比度量的ms的粒度,这是在百分位数计算中使用的桶的宽度。
  --topic-creation-enabled AUTO_TOPIC_CREATION_ENABLED
                         When true this automatically creates  the  topic  mentioned  by  "topic" with replication factor "topic-management.
                         replicationFactorand min ISR of  max(topic-management.replicationFactor-1,  1)  with  number  of  brokers * "topic-
                         management.partitionsToBrokersRatio" partitions.
  --topic-rebalance-interval-ms REBALANCE_MS
                         The gap in ms between the times the cluster balance on  the  monitored topic is checked.  Set this to a large value
                         to disable automatic topic rebalance.

总结

    并没达到预想中的kafka监控功能,更多的是对kafka性能的测试,以及生产SLA的验证,类似一个旁路系统。

 

© 著作权归作者所有

上一篇: Zipkin介绍
下一篇: Linkedin Burrow
China_OS
粉丝 427
博文 463
码字总数 519985
作品 0
静安
技术主管
私信 提问
LinkedIn 详细介绍了他们开源的 Kafka Monitor

在2016年4月份举行的Kafka峰会上,LinkedIn在Apache 2.0许可协议下开源了Kafka Monitor,并于近日详细介绍了该监控工具的架构以及他们最初的构建动机。在年初的时候,LinkedIn曾在一篇有关K...

oschina
2016/06/16
5.2K
7
kafka 系统测试框架--kafka-monitor

在2016年4月份举行的Kafka峰会上,LinkedIn在Apache 2.0许可协议下开源了Kafka Monitor,并于近日详细介绍了该监控工具的架构以及他们最初的构建动机。在年初的时候,LinkedIn曾在一篇有关K...

匿名
2016/06/16
3.8K
0
LinkedIn开源Kafka Monitor

一个关于Kafka的监控测试框架 原文请查阅链接。 Apache Kafka 已经成为了一个面向大规模流数据的,标准的消息系统。在Linkedin这样的公司,它被用作各类数据管道的主力,支持一系列关键服务。...

RiboseYim
2016/08/15
400
0
大数据技能图谱

大数据处理框架 Spark(Spark学习脑图) - RDD - Spark SQL - Spark Streaming - MLLib Hadoop - HDFS (分布式文件系统) - Mapreduce(计算框架) - Yarn(资源管理平台) - Pig(piglatin ...

rathan0
2016/03/17
555
0
Zookeeper集群 + Kafka集群 + KafkaOffsetMonitor 监控

一、Zookeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供...

蓝宫卫
2017/04/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
16分钟前
8
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
9
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部