Apache Kafka监控之Kafka Web Console

时间:2022-09-30 08:41:04

Kafka Web Console:是一款开源的系统,源码的地址在https://github.com/claudemamo/kafka-web-console中。Kafka Web Console也是用Scala语言编写的Java web程序用于监控Apache Kafka。这个系统的功能和KafkaOffsetMonitor很类似,但是我们从源码角度来看,这款系统实现比KafkaOffsetMonitor要复杂很多,而且编译配置比KafkaOffsetMonitor较麻烦。
  要想运行这套系统我们需要的先行条件为:

  1. Play Framework 2.2.x
  2. Apache Kafka 0.8.x
  3. Zookeeper 3.3.3 or 3.3.4

  同样,我们从https://github.com/claudemamo/kafka-web-console上面将源码下载下来,然后用sbt进行编译,在编译前我们需要做如下的修改:
  1、Kafka Web Console默认用的数据库是H2,它支持以下几种数据库:


  1. H2 (default)
  2. PostgreSql
  3. Oracle
  4. DB2
  5. MySQL
  6. ApacheDerby
  7. Microsoft SQL Server
为了方便,我们可以使用Mysql数据库,只要做如下修改即可,找到 conf/application.conf文件,并修改如下

  1. #############################################################################
  2. User:过往记忆
  3. Date:14-08-08
  4. Time:11:37
  5. bolg: https://www.iteblog.com
  6. 本文地址:https://www.iteblog.com/archives/1084
  7. 过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货
  8. 过往记忆博客微信公共帐号:iteblog_hadoop
  9. #############################################################################
  10. 将这个
  11. db.default.driver=org.h2.Driver
  12. db.default.url="jdbc:h2:file:play"
  13. # db.default.user=sa
  14. # db.default.password=""
  15. 修改成
  16. db.default.driver=com.mysql.jdbc.Driver
  17. db.default.url="jdbc:mysql://localhost:3306/test"
  18. db.default.user=root
  19. db.default.pass=123456
我们还需要修改build.sbt,加入对Mysql的依赖:

  1. "mysql"%"mysql-connector-java"%"5.1.31"
 

 修改后的bulid.sbt :


  1. name := "kafka-web-console"
  2. version := "2.1.0-SNAPSHOT"
  3. libraryDependencies ++= Seq(
  4. jdbc,
  5. cache,
  6. "org.squeryl" % "squeryl_2.10" % "0.9.5-6",
  7. "com.twitter" % "util-zk_2.10" % "6.11.0",
  8. "com.twitter" % "finagle-core_2.10" % "6.15.0",
  9. "org.quartz-scheduler" % "quartz" % "2.2.1",
  10. "org.apache.kafka" % "kafka_2.10" % "0.8.1.1",
  11. "mysql" % "mysql-connector-java" % "5.1.31"
  12. exclude("javax.jms", "jms")
  13. exclude("com.sun.jdmk", "jmxtools")
  14. exclude("com.sun.jmx", "jmxri")
  15. )
  16. play.Project.playScalaSettings

 2、执行conf/evolutions/default/bak目录下面的1.sql、2.sql和3.sql三个文件。需要注意的是,这三个sql文件不能直接运行,有语法错误,需要做一些修改。

修改后的1.sql :


  1. CREATE TABLE zookeepers (
  2. name VARCHAR(100),
  3. host VARCHAR(100),
  4. port INT(100),
  5. statusId INT(100),
  6. groupId INT(100),
  7. PRIMARY KEY (name)
  8. );
  9. CREATE TABLE groups (
  10. id INT(100),
  11. name VARCHAR(100),
  12. PRIMARY KEY (id)
  13. );
  14. CREATE TABLE status (
  15. id INT(100),
  16. name VARCHAR(100),
  17. PRIMARY KEY (id)
  18. );
  19. INSERT INTO groups (id, name) VALUES (0, 'ALL');
  20. INSERT INTO groups (id, name) VALUES (1, 'DEVELOPMENT');
  21. INSERT INTO groups (id, name) VALUES (2, 'PRODUCTION');
  22. INSERT INTO groups (id, name) VALUES (3, 'STAGING');
  23. INSERT INTO groups (id, name) VALUES (4, 'TEST');
  24. INSERT INTO status (id, name) VALUES (0, 'CONNECTING');
  25. INSERT INTO status (id, name) VALUES (1, 'CONNECTED');
  26. INSERT INTO status (id, name) VALUES (2, 'DISCONNECTED');
  27. INSERT INTO status (id, name) VALUES (3, 'DELETED');

修改后的2.sql  :


  1. ALTER TABLE zookeepers ADD COLUMN chroot VARCHAR(100);

修改后的3.sql :


  1. ALTER TABLE zookeepers DROP PRIMARY KEY;
  2. ALTER TABLE zookeepers ADD COLUMN id int(100) NOT NULL AUTO_INCREMENT PRIMARY KEY;
  3. ALTER TABLE zookeepers MODIFY COLUMN name VARCHAR(100) NOT NULL;
  4. ALTER TABLE zookeepers MODIFY COLUMN host VARCHAR(100) NOT NULL;
  5. ALTER TABLE zookeepers MODIFY COLUMN port INT(100)  NOT NULL;
  6. ALTER TABLE zookeepers MODIFY COLUMN  statusId INT(100)  NOT NULL;
  7. ALTER TABLE zookeepers MODIFY COLUMN groupId INT(100)  NOT NULL;
  8. ALTER TABLE zookeepers ADD UNIQUE (name);
  9. CREATE TABLE offsetHistory (
  10. id int(100) AUTO_INCREMENT PRIMARY KEY,
  11. zookeeperId int(100),
  12. topic VARCHAR(255),
  13. FOREIGN KEY (zookeeperId) REFERENCES zookeepers(id),
  14. UNIQUE (zookeeperId, topic)
  15. );
  16. CREATE TABLE offsetPoints (
  17. id int(100) AUTO_INCREMENT PRIMARY KEY,
  18. consumerGroup VARCHAR(255),
  19. timestamp TIMESTAMP,
  20. offsetHistoryId int(100),
  21. partition int(100),
  22. offset int(100),
  23. logSize int(100),
  24. FOREIGN KEY (offsetHistoryId) REFERENCES offsetHistory(id)
  25. );
  26. CREATE TABLE settings (
  27. key_ VARCHAR(255) PRIMARY KEY,
  28. value VARCHAR(255)
  29. );
  30. INSERT INTO settings (key_, value) VALUES ('PURGE_SCHEDULE', '0 0 0 ? * SUN *');
  31. INSERT INTO settings (key_, value) VALUES ('OFFSET_FETCH_INTERVAL', '30');

project/build.properties的

sbt.version=0.13.0 要修改实际的sbt版本,比如我用的是sbt.version=0.13.15
上面的注意事项弄完之后,我们就可以编译下载过来的源码:

# sbt package

  编译的过程比较慢,有些依赖包下载速度非常地慢,请耐心等待。

  在编译的过程中,可能会出现有些依赖包无法下载,如下错误:

  1. [warn]modulenot found: com.typesafe.play#sbt-plugin;2.2.1
  2. [warn]==== typesafe-ivy-releases: tried
  3. [warn] http://repo.typesafe.com/typesafe/ivy-releases/
  4. com.typesafe.play/sbt-plugin/scala_2.9.2/sbt_0.12/2.2.1/ivys/ivy.xml
  5. [warn]==== sbt-plugin-releases: tried
  6. [warn] http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/
  7. com.typesafe.play/sbt-plugin/scala_2.9.2/sbt_0.12/2.2.1/ivys/ivy.xml
  8. [warn]====local: tried
  9. [warn]/home/iteblog/.ivy2/local/com.typesafe.play/
  10. sbt-plugin/scala_2.9.2/sbt_0.12/2.2.1/ivys/ivy.xml
  11. [warn]====Typesafe repository: tried
  12. [warn] http://repo.typesafe.com/typesafe/releases/com/
  13. typesafe/play/sbt-plugin_2.9.2_0.12/2.2.1/sbt-plugin-2.2.1.pom
  14. [warn]====public: tried
  15. [warn] http://repo1.maven.org/maven2/com/typesafe/play/
  16. sbt-plugin_2.9.2_0.12/2.2.1/sbt-plugin-2.2.1.pom
  17. [warn]::::::::::::::::::::::::::::::::::::::::::::::
  18. ====local: tried
  19. /home/iteblog/.ivy2/local/org.scala-sbt/collections/0.13.0/jars/collections.jar
  20. ::::::::::::::::::::::::::::::::::::::::::::::
  21. :: FAILED DOWNLOADS ::
  22. ::^ see resolution messages for details ^::
  23. ::::::::::::::::::::::::::::::::::::::::::::::
  24. :: org.scala-sbt#collections;0.13.0!collections.jar
  25. ::::::::::::::::::::::::::::::::::::::::::::::
  我们可以手动地下载相关依赖,并放到类似/home/iteblog/.ivy2/local/org.scala-sbt/collections/0.13.0/jars/目录下面。然后再编译就可以了。

启动的时候需要把.sql文件删除掉,否则会报错。

Apache Kafka监控之Kafka Web Consolehttp://localhost:9000Apache Kafka监控之Kafka Web Console

最后,我们可以通过下面命令启动Kafka Web Console监控系统:

# sbt run

并可以在http://localhost:9000查看。下面是一张效果图

Apache Kafka监控之Kafka Web Console
  1. Before you can monitor a broker, you need to register the Zookeeper server associated with it:

Apache Kafka监控之Kafka Web Console

Kafka Web Console

Kafka Web Console is a Java web application for monitoring Apache
Kafka
. With a modern web
browser, you can view from the console:

  • Registered brokers

Apache Kafka监控之Kafka Web Console


  • Topics, partitions, log sizes, and partition leaders

Apache Kafka监控之Kafka Web Console


  • Consumer groups, individual consumers, consumer owners, partition offsets and lag

Apache Kafka监控之Kafka Web Console


  • Graphs showing consumer offset and lag history as well as consumer/producer message throughput history.

Apache Kafka监控之Kafka Web Console


  • Latest published topic messages (requires web browser support for WebSocket)

Apache Kafka监控之Kafka Web Console


Furthermore, the console provides a JSON API described in RAML.
The API can be tested using the embedded API Console accessible through the URL http://[hostname]:[port]/api/console.

Requirements

  • Play Framework 2.2.x
  • Apache Kafka 0.8.x
  • Zookeeper 3.3.3 or 3.3.4

Deployment

Consult Play!'s documentation for deployment
options and instructions
.

Getting
Started

  1. Kafka Web Console requires a relational database. By default, the server connects to an embedded H2 database and no database installation or configuration is needed. Consult Play!'s documentation to specify
    a database for the console
    . The following databases are supported:

    • H2 (default)
    • PostgreSql
    • Oracle
    • DB2
    • MySQL
    • Apache Derby
    • Microsoft SQL Server

    Changing the database might necessitate making minor modifications to the DDL to
    accommodate the new database.

  2. Before you can monitor a broker, you need to register the Zookeeper server associated with it:

Apache Kafka监控之Kafka Web Console

Filling in the form and clicking on Connect will
register the Zookeeper server. Once the console has successfully established a connection with the registered Zookeeper server, it can retrieve all necessary information about brokers, topics, and consumers:

Apache Kafka监控之Kafka Web Console

Apache Kafka监控之Kafka Web Console的更多相关文章

  1. 【转载】Apache Kafka监控之Kafka Web Console

    http://www.iteblog.com/archives/1084 Kafka Web Console是一款开源的系统,源码的地址在https://github.com/claudemamo/k ...

  2. Kafka监控系统Kafka Eagle剖析

    1.概述 最近有同学留言反馈了使用Kafka监控工具Kafka Eagle的一些问题,这里笔者特意整理了这些问题.并且希望通过这篇博客来解答这些同学的在使用Kafka Eagle的时候遇到的一些困惑, ...

  3. Kafka监控系统Kafka Eagle:支持kerberos认证

    在线文档:https://ke.smartloli.org/ 作者博客:https://www.cnblogs.com/smartloli/p/9371904.html 源码地址:https://gi ...

  4. 【转】apache kafka监控系列-KafkaOffsetMonitor

    apache kafka监控系列-KafkaOffsetMonitor 时间 2014-05-27 18:15:01  CSDN博客 原文  http://blog.csdn.net/lizhitao ...

  5. apache kafka监控系列-KafkaOffsetMonitor(转)

    原文链接:apache kafka监控系列-KafkaOffsetMonitor 概览 最 近kafka server消息服务上线了,基于jmx指标参数也写到zabbix中了,但总觉得缺少点什么东西, ...

  6. apache kafka监控系列-KafkaOffsetMonitor

    apache kafka中国社区QQ群:162272557 概览 近期kafka server消息服务上线了,基于jmx指标參数也写到zabbix中了.但总认为缺少点什么东西.可视化可操作的界面. z ...

  7. DataPipeline |《Apache Kafka实战》作者胡夕:Apache Kafka监控与调优

    胡夕 <Apache Kafka实战>作者,北航计算机硕士毕业,现任某互金公司计算平台总监,曾就职于IBM.搜狗.微博等公司.国内活跃的Kafka代码贡献者. 前言 虽然目前Apache ...

  8. DataPipeline |ApacheKafka实战作者胡夕:Apache Kafka监控与调优

    https://baijiahao.baidu.com/s?id=1610644333184173190&wfr=spider&for=pc DataPipeline |ApacheK ...

  9. kafka监控系统

    Metrics-Java版的指标度量工具之一 Metrics-Java版的指标度量工具之二 JAVA Metrics 度量工具使用介绍1 JAVA Metrics度量工具 - Metrics Core ...

随机推荐

  1. poj2391 Ombrophobic Bovines 题解

    http://poj.org/problem?id=2391 floyd+网络流+二分 题意:有一个有向图,里面每个点有ai头牛,快下雨了牛要躲进雨棚里,每个点有bi个雨棚,每个雨棚只能躲1头牛.牛可 ...

  2. iOS之单例

    今天在看多线程同步时,突然想到了单例的同步问题.自从dispatch_once出现后,我们创建单例非常简单且安全: static dispatch_once_t pred; static Single ...

  3. Servlet常见错误及解决方法

    常见错误及解决方法 1. 404产生的原因为Web服务器(容器)根据请求地址找不到对应资源,以下情况都会出现404的错误提示: 输入的地址有误(应用名大小写不正确,名称拼写不正确) 在web.xml文 ...

  4. 【oracle】数据库、表空间、用户、数据表之间的关系

    来自为知笔记(Wiz) 附件列表 新建_032515_030437_PM.jpg

  5. 尝试用Uplodify

    尝试用Uplodify     Uplodify官方 前台index代码: @{ Layout = null; } <script src="~/Scripts/jquery-1.8. ...

  6. 分享一个md5类

    这个md5干嘛用的,大家比我清楚就不说了,这里不是讲md5的原理.要讲md5的原理,网上一大堆,我也不是什么算法很厉害的人,我只是算法搬运工.咱是一般程序员,有时候能完成业务需要就可以,那些伟大算法的 ...

  7. JavaWeb 之 重复提交表单和验证码相关的问题!

    下面我们首先来说一下表单的重复提交问题,我们知道在真实的网络环境中可能受网速带宽的原因会造成页面中表单在提交的过程中出现网络的延迟等问题,从而造成多次提交的问题!下面我们就具体来分析一下造成表单提交的 ...

  8. 安装好maven后,在cmd中运行mvn报一下的错误

    当然报错,你这个路径下并没有pom.xml文件.你可以运行这个命令: mvn -version.

  9. python学习day15 模块&lpar;重点&rpar;

    模块(重点) python2,与py3的区别 py2:range() 在内存中立即把所有的值都创建,xrange() 不会再内存中立即创建,而是在循环时边环边创建. py3:range() 不会再内存 ...

  10. HDU 2020 绝对值排序

    http://acm.hdu.edu.cn/showproblem.php?pid=2020 Problem Description 输入n(n<=100)个整数,按照绝对值从大到小排序后输出. ...