在2016年4月份举行的Kafka峰会上,LinkedIn在Apache 2.0许可协议下开源了Kafka Monitor,并于近日详细介绍了该监控工具的架构以及他们最初的构建动机。在年初的时候,LinkedIn曾在一篇有关Kafka整体应用的文章中简单地提及过Kafka Monitor,但并没有详细介绍该项目的语义组成或者背后的动机。
Kafka Monitor项目的动机有三个:
需要监控和测试Kafka部署并跟踪主干稳定性,以便他们能够尽早捕获正在开发的变更集中的问题;
需要不间断地在生产集群上监控SLA,并不断地在测试集群上运行回归测试;
现有的监控框架无法满足其用例的扩展性、模块化需求,他们需要一个自定义的客户端库。
网站可靠性工程部门过去已经监控了输入速率、离线分区数和正在复制的分区数等指标,以确定Kafka集群的可用性和系统整体的健康状况。然而,问题在于,这类原始的值本身无法表明集群在终端用户体验方面是否真的可用。
在LinkedIn的公开出版物Keystone Pipeline里,他们提到了两个潜在的Kafka候选监控方案,微软的一个项目和Netflix Kafka监控,但最终确定它们不适合自己的应用场景。
Kafka Monitor允许开发人员组合模拟各种故障场景的模块,如GC中断、broker硬杀及“滚动弹出(rolling bounces)”、磁盘故障,并随着场景进行收集有关服务运行时行为的指标。每次当生产者创建消息时抛出的异常被捕获,衡量生产者服务错误率的指标就会增加。消费者服务会跟踪一个由Kafka分区分割的增量索引计数器以及消息净荷的时间戳,以便度量消息丢失率、重复率以及端到端延迟。
Kafka Monitor实例运行在一个单独的Java进程中,运行多个测试,介于用户或消费者服务与Kafka集群之间。Kafka Monitor收集的运行时指标包括生产者服务的生产效率、消费者服务的消费效率、消息丢失、消息重复和端到端延迟。多个Kafka Monitor跨多个Kafka集群运行大量的测试场景,这可以由一个复制服务通过镜像方式捕获跨集群的总体延迟指标。
Kafka Monitor原生支持Java,但也为非JVM语言提供了一个REST接口。这对开源社区有着特殊的意义,LinkedIn的Dong Lin表示:
我们一般会脱离Apache Kafka主干,并每季度生成一个新的内部版本,或者吸收Apache Kafka的新特性。脱离主干的一个显著的好处是,部署在LinkedIn生产集群中的Kafka经常有已经在Apache Kafka主干中检测到的问题,他们可以在Apache Kafka正式版本发布之前进行修复。
Kafka项目本身包含一些系统测试,每次代码捡入时都会运行,鉴于和Kafka主干的紧密关系,LinkedIn计划实现类似的系统测试。他们希望将Kafka Monitor和类似Simoorg这样的错误注入框架以及Graphite或类似的框架集成,以便能够通过一个单独的Web服务查看Kafka Monitor集群生成的所有指标。
LinkedIn还简单地提到了如何设置基本的监控,生成并可视化核心指标。他们的GitHub页面提供了详细的信息。
via InfoQ
1.上传jar包KafkaOffsetMonitor-assembly-0.4.6.jar到集群 2.在/opt/module/下创建kafka-offset-console文件夹 3.将上传的jar包放入刚创建的目录下 4.在/opt/module/kafka-offset-console目录下创建启动脚本start.sh,内容如下: #!/bin/bash java -cp KafkaOff
本文以kafka2.1.1版本为例 1.简介 1.1.官网地址 http://kafka.apache.org/21/documentation.html#monitoring Kafka使用Yammer Metrics来上报broker端的Metrics。Java客户端使用Kafka Metrics上报,这是一个内置的Metrics注册表,它最小化了客户端应用程序的依赖关系。两者都可以通过JMX
一、kafka_exporter 安装步骤: Kafka_exporter是一款用于将Kafka集群的监控指标暴露给Prometheus的开源工具,可以用于监控Kafka集群的各种状态数据。下面是Kafka_exporter的安装和部署步骤: 环境准备 Java环境:Kafka_exporter需要Java环境支持,您可以在Oracle官网下载和安装Java的最新版本。 Kafka版本:Kafka
0、前言 Kafka的度量指标主要有以下三类: 1.Kafka服务器(Kafka)指标 2.生产者指标 3.消费者指标 另外,由于Kafka的状态靠Zookeeper来维护,对于Zookeeper性能的监控也成为了整个Kafka监控计划中一个必不可少的组成部分。 一、Broker度量指标 Kafka的服务端度量指标是为了监控broker,也是整个消息系统的核心。因为所有消息都通过kafka bro
主要内容:测试级别的层次结构,系统测试的类型系统测试包括测试完全集成的软件系统。通常,计算机系统是通过软件集成制成的。换句话说,一组软件的计算机系统执行各种任务,但只有软件才能执行任务; 软件必须与兼容的硬件接口。系统测试是一系列不同类型的有目的的测试行使和审查针对需求的集成软件的计算机系统的全部工作。 软件测试分为四个级别:单元测试,集成测试,系统测试和验收测试,所有这些都用于测试目的。单元测试用于测试单个软件; 集成测试用于测试整个系统
TestKit 实例 (Scala) 对于任何软件开发,自动化测试都是开发过程中一个重要组成部分。actor 模型对于代码单元如何划分,它们之间如何交互提供了一种新的视角,这对如何编写测试也造成了影响。 Akka 有一个专门的模块——akka-testkit来支持不同层次上的测试,测试很明显有两个类别: 测试独立的、不包括actor模型的代码,即没有多线程的内容;这意味着给事件发生的次序给定,有完
问题内容: 我想测试嵌入式设备的功能。为简化起见,我可以说这是一个人形机器人,由PC通过C / C ++ API进行远程控制。 我非常有兴趣使用它,因为它没有样板方法。但是,我的情况要复杂一些。实际测试在C#程序上运行,大约需要24小时才能完成。通过切换到Python,我可能会节省大量开发新测试的时间。但是,在这样做之前,我正在寻找一些答案。 古老的测试套件的第一个问题是,所有测试都以预定的顺序执
一面: 如何测试微信抢红包 如何测试矿泉水瓶 矿泉水瓶除了能喝水,还能做什么,发挥你的想象力 聊实习,很简单的问了下实习做了什么 如何看待测试 反问 许愿二面 9.16二面: 最近总忘记录音,问题都记不住了,只记住了自己不会的,跟大家分享一下吧: 压力测试和性能测试的原理,以及框架有没有用过 app测试和网页测试的区别在哪 一台300并发和300台单并发测试的区别在哪里 最后还问了一些开放性题目,
上周五做了笔试后,周一就约了面试。面试大概20分钟,首先是自我介绍,然后问了本科成绩和硕士成绩以及有无奖学金,考研or保研,考研成绩是什么位次。这块我完全是debuff ,我本科成绩倒数没有奖学金,然后考研也是勉强上岸哈哈😆。 然后按着简历问了一会儿项目实习,跟测试显然没有任何关系所以很快就结束了。 之后是问了几个技术问题,包括tcp和udp 的区别、osi 、边界测试和一道简单的算法题。面试之
系统测试和验收测试的区别如下表所示: 编号 系统测试 验收测试 1 执行系统测试以测试软件的端到端功能。 执行验收测试以测试软件是否符合规定的要求和用户要求。 2 只有开发人员和测试人员才能执行系统测试。 它可以由测试人员,利益相关者和客户执行。 3 它可以是非功能性和功能性测试。 它只能是功能测试。 4 在系统测试中,可测试整个系统的性能。 在验收测试中,测试系统是否符合要求。 5 系统测试使用
三月十三一面 开场先自我介绍 自我介绍我觉得还蛮重要的,刚开始光顾着刷题都没好好准备,导致一面的有点简陋。 我觉得可以这样介绍: 1.基本情况 2.投递的原因 3.契合的方面 4.再次表达意愿 回到正题,面试内容如下: 学了什么课啊,有没有学计网? tcp和udp有什么区别? 访问浏览器要用到哪些协议,简单讲一下过程 https怎么工作的 你刚提到了加密技术(HTTPS里的),说一下对称加密和非对
我需要为一个设计糟糕的旧应用程序编写JUnit测试,该应用程序正在向标准输出写入大量错误消息。当方法正确运行时,它将返回一个XML响应: 但当它得到格式错误的XML或不理解请求时,它会返回,并将一些内容写入标准输出。 在JUnit中是否有任何方法断言控制台输出?要捕获以下情况: