1. 程式人生 > >Kafka系列之-Kafka監控工具KafkaOffsetMonitor配置及使用

Kafka系列之-Kafka監控工具KafkaOffsetMonitor配置及使用

  KafkaOffsetMonitor是一個可以用於監控Kafka的Topic及Consumer消費狀況的工具,其配置和使用特別的方便。源專案Github地址為:https://github.com/quantifind/KafkaOffsetMonitor
  最簡單的使用方式是從Github上下載一個最新的KafkaOffsetMonitor-assembly-0.2.1.jar,上傳到某伺服器上,然後執行一句命令就可以執行起來。但是在使用過程中有可能會發現頁面反應緩慢或者無法顯示相應內容的情況。據說這是由於jar包中的某些js等檔案需要連線到網路,或者需要翻牆導致的。網上找的一個修改版的KafkaOffsetMonitor對應jar包,可以完全在本地執行,經過測試效果不錯。下載地址是:

http://pan.baidu.com/s/1ntzIUPN,在此感謝一下貢獻該修改版的原作者。連結失效的話,可以部落格下方留言聯絡我。

一、KafkaOffsetMonitor的使用

  因為完全沒有安裝配置的過程,所以直接從KafkaOffsetMonitor的使用開始。
  將KafkaOffsetMonitor-assembly-0.2.0.jar上傳到伺服器後,可以新建一個指令碼用於啟動該應用。指令碼內容如下:

java -cp KafkaOffsetMonitor-assembly-0.2.0.jar \
    com.quantifind.kafka.offsetapp.OffsetGetterWeb \
    --zk m000:
2181,m001:2181,m002:2181 \
--port 8088 \ --refresh 10.seconds \ --retain 2.days

  各引數的作用可以參考一下Github上的描述:

  • offsetStorage valid options are ”zookeeper”, ”kafka” or ”storm”. Anything else falls back to ”zookeeper”
  • zk the ZooKeeper hosts
  • port on what port will the app be available
  • refresh how often should the app refresh and store a point in the DB
  • retain how long should points be kept in the DB
  • dbName where to store the history (default ‘offsetapp’)
  • kafkaOffsetForceFromStart only applies to ”kafka” format. Force KafkaOffsetMonitor to scan the commit messages from start (see notes below)
  • stormZKOffsetBase only applies to ”storm” format. Change the offset storage base in zookeeper, default to ”/stormconsumers” (see notes below)
  • pluginsArgs additional arguments used by extensions (see below)

      啟動後,訪問m000:8088埠,可以看到如下頁面:
      這裡寫圖片描述
      在這個頁面上,可以看到當前Kafka叢集中現有的Consumer Groups。

    在上圖中有一個Visualizations選項卡,點選其中的Cluster Overview可以檢視當前Kafka叢集的Broker情況
    這裡寫圖片描述

      接下來將繼續上一篇Kafka相關的文章Kafka系列之-自定義Producer,在最後對Producer進行包裝的基礎上,分別實現一個簡單的往隨機Partition寫messge,以及自定義Partitioner的Producer,對KafkaOffsetMonitor其他頁面進行展示。

二、簡單的Producer

1、新建一個Topic

  首先為本次試驗新建一個Topic,命令如下:

bin/kafka-topics.sh \
    --create \
    --zookeeper m000:2181 \
    --replication-factor 3 \
    --partition 3 \
    --topic kafkamonitor-simpleproducer

2、新建SimpleProducer程式碼

  在上一篇文章中提到的Producer封裝Github程式碼的基礎上,寫了一個往kafkamonitor-simpleproducer傳送message的java程式碼。

import com.ckm.kafka.producer.impl.KafkaProducerToolImpl;
import com.ckm.kafka.producer.inter.KafkaProducerTool;

/**
 * Created by ckm on 2016/8/30.
 */
public class SimpleProducer {
    public static void main(String[] args) {
        KafkaProducerTool kafkaProducerTool = new KafkaProducerToolImpl();
        int i = 0;
        String message = "";
        while (true) {
            message = "test-simple-producer : " + i ++;
            kafkaProducerTool.publishMessage("kafkamonitor-simpleproducer", message);
        }
    }
}

  程式執行效果:
  這裡寫圖片描述

3、ConsoleConsumer消費該topic

  用kafka自帶的ConsoleConsumer消費kafkamonitor-simpleproducer中的message。

bin/kafka-console-consumer.sh --zookeeper m000:2181 --from-beginning --topic kafkamonitor-simpleproducer

  消費截圖如下:
  這裡寫圖片描述

4、KafkaOffsetMonitor頁面

(1)在Topic List選項卡中,我們可以看到剛才新建的kafkamonitor-simpleproducer
  這裡寫圖片描述
(2)點開後,能看到有一個console-consumer正在消費該topic
  這裡寫圖片描述
(3)繼續進入該Consumer,可以檢視該Consumer當前的消費狀況
  這裡寫圖片描述
  這張圖片的左上角顯示了當前Topic的生產速率,右上角顯示了當前Consumer的消費速率。
  圖片中還有三種顏色的線條,藍色的表示當前Topic中的Message數目,灰色的表示當前Consumer消費的offset位置,紅色的表示藍色灰色的差值,即當前Consumer滯後於Producer的message數目。
(4)看一眼各partition中的message消費情況
  這裡寫圖片描述
  從上圖可以看到,當前有3個Partition,每個Partition中的message數目分佈很不均勻。這裡可以與接下來的自定義Producer的情況進行一個對比。

三、自定義Partitioner的Producer

1、新建一個Topic

bin/kafka-topics.sh \
    --create \
    --zookeeper m000:2181 \
    --replication-factor 3 \
    --partition 3 \
    --topic kafkamonitor-partitionedproducer

2、Partitioner程式碼

  邏輯很簡單,迴圈依次往各Partition中傳送message。

import kafka.producer.Partitioner;

/**
 * Created by ckm on 2016/8/30.
 */
public class TestPartitioner implements Partitioner {
    public TestPartitioner() {
    }

    @Override
    public int partition(Object key, int numPartitions) {
        int intKey = (int) key;
        return intKey % numPartitions;
    }
}

3、Producer程式碼

  將自定義的Partitioner設定到Producer,其他呼叫過程和二中類似。

import com.ckm.kafka.producer.impl.KafkaProducerToolImpl;
import com.ckm.kafka.producer.inter.KafkaProducerTool;

/**
 * Created by ckm on 2016/8/30.
 */
public class PartitionedProducer {
    public static void main(String[] args) {
        KafkaProducerTool kafkaProducerTool = new KafkaProducerToolImpl();
        kafkaProducerTool.getProducerProperties().put("partitioner.class", "TestPartitioner");
        int i = 0;
        String message = "";
        while (true) {
            message = "test-partitioner-producer : " + i;
            System.out.println(message);
            kafkaProducerTool.publishPartitionedMessage("kafkamonitor-partitionedproducer", i + "", message);
            i ++;
        }
    }
}

  程式碼執行效果如下圖:
  這裡寫圖片描述

4、ConsoleConsumer消費Message

bin/kafka-console-consumer.sh --zookeeper m000:2181 --from-beginning --topic kafkamonitor-partitionedproducer

  消費效果如下圖:
  這裡寫圖片描述

5、KafkaOffsetMonitor頁面

  其他頁面與上面的類似,這裡只觀察一下每個partition中的message數目與第二節中的對比。可以看到這裡每個Partition中message分別是很均勻的。
  這裡寫圖片描述

注意事項:
  注意這裡有一個坑,預設情況下Producer往一個不存在的Topic傳送message時會自動建立這個Topic。由於在這個封裝中,有同時傳遞message和topic的情況,如果呼叫方法時傳入的引數反了,將會在Kafka叢集中自動建立Topic。在正常情況下,應該是先把Topic根據需要建立好,然後Producer往該Topic傳送Message,最好把Kafka這個預設自動建立Topic的功能關掉。
  那麼,假設真的不小心建立了多餘的Topic,在刪除時,會出現“marked for deletion”提示,只是將該topic標記為刪除,使用list命令仍然能看到。如果需要調整這兩個功能的話,在server.properties中配置如下兩個引數:

引數 預設值 作用
auto.create.topics.enable true Enable auto creation of topic on the server
delete.topic.enable false Enables delete topic. Delete topic through the admin tool will have no effect if this config is turned off

相關推薦

Kafka系列-Kafka監控工具KafkaOffsetMonitor配置使用

  KafkaOffsetMonitor是一個可以用於監控Kafka的Topic及Consumer消費狀況的工具,其配置和使用特別的方便。源專案Github地址為:https://github.com/quantifind/KafkaOffsetMonitor。

Kafka監控工具KafkaOffsetMonitor配置使用

一、KafkaOffsetMonitor簡述 KafkaOffsetMonitor是Kafka的一款客戶端消費監控工具,用來實時監控Kafka服務的Consumer以及它們所在的Partition中的Offset,我們可以瀏覽當前的消費者組,並且每個Topic的所有Part

Kafka系列-Kafka Protocol例項分析

  本文基於A Guide To The Kafka Protocol文件,以及Spark Streaming中實現的org.apache.spark.streaming.kafka.KafkaCluster類。整理出Kafka中有關 Metadata AP

apache kafka系列kafka.common.ConsumerRebalanceFailedException異常解決辦法

kafka.common.ConsumerRebalanceFailedException :log-push-record-consumer-group_mobile-pushremind02.lf

性能監控工具配置使用五分彩平臺搭建 - Spotlight On Oracle(oracle)

tnsname oracl 對象 快速 instant otl 連接 路徑 oracle數據 Spotlight是一個強五分彩平臺搭建【征途源碼論壇zhengtuwl.com】聯系方式:QQ:2747044651有力的Oracle數據庫實時性能診斷工具,提供了一個直觀的、可

性能監控工具配置使用 - Spotlight On Oracle(oracle)

管理 超出 使用情況 新建 業務 操作 只需要 中文 查看sql 一、 Spotlight On Oracle(oracle)1.1. 工具簡介Spotlight是一個強有力的Oracle數據庫實時性能診斷工具,提供了一個直觀的、可視化的數據庫活動展現。Spo

效能監控工具配置使用 - Spotlight On Oracle(oracle)

一、    Spotlight On Oracle(oracle) 1.1.   工具簡介 Spotlight是一個強有力的Oracle資料庫實時效能診斷工具,提供了一個直觀的、視覺化的資料庫活動展現。Spotlight視

KafkaOffsetMonitorji監控工具配置使用

一、 KafkaOffsetMonitor簡述 KafkaOffsetMonitor,它是由Kafka開源社群提供的一款Web管理介面,是Kafka的一款客戶端消費監控工具,用來實時監控Kafka服務

效能監控工具配置使用

一、Java平臺1.1 下載Java探針2、 選擇Server產品,點選“新建應用”3、 選擇Java語言,點選“下載Java探針”在tingyun-agent-java.zip檔案中包含一下2個檔案,以及其他的檔案:1). tingyun-agent-java.jar: 探

kafka系列broker重點配置解析(三)

kafka broker 配置 對應kafka安裝目錄config/server.properties檔案的配置 broker.id 每一個Kafka的broker都有一個整數的標識。我們設定broker.id來標識它。預設這個整數是0。這

Kafka監控工具KafkaOffsetMonitor

1.下載KafkaOffsetMonitor-assembly-0.2.0.jar 網盤地址:http://pan.baidu.com/s/1eQgYZOA  密碼:rd5y 2.在伺服器上建立kafka-offset-console目錄 3.把下載好的檔案上傳到剛剛建立的

基於web的kafka監控工具KafkaOffsetMonitor(內部js和css已經本地化)

KafkaOffsetMonitor是不錯的kafka監控的web工具,官方提供的版本需要線上下載js和css,其中angulajs的下載不了,在不聯網的內部環境下不能正常使用,所以本人將其所有到的js和css單獨下載整到當前這個jar包中,下載在內部環境可以直接使用,請移

apache kafka系列效能測試報告(虛擬機器版)

測試方法 在其他虛擬機器上使用 Kafka 自帶 kafka-producer-perf-test.sh 指令碼進行測試 Kafka 寫入效能 嘗試使用 kafka-simple-consumer-p

kafka系列初步認識(零)

Kafka是什麼 釋出/訂閱訊息中介軟體 也被稱為分散式流平臺 Kafka的誕生 最初是為了解決LinkedIn資料通道問題,最後捐獻給了Apache,是Apache的頂級專案。 Kafka適合的場景 使用者行為跟蹤,可

Apache Kafka系列(二) 命令列工具(CLI)

Apache Kafka命令列工具(Command Line Interface,CLI),下文簡稱CLI。 1. 啟動Kafka   啟動Kafka需要兩步:   1.1. 啟動ZooKeeper  [[email protected] kafka_2.12-0.11.0.0]# bin/zo

kafka 系列(三)開發環境配置

kafka的開發,基於java的方式,使用maven管理jar包依賴。 我主要是基於C/c++,採用了librdkafka 。 librdkafka 是Apache  Kafka  客戶端C語言的高效能實現, 能夠提供可靠並且表現優秀的客戶端,同時它也提供比較初級的C++

apache kafka系列原始碼分析走讀-kafka內部模組分析

apache kafka中國社群QQ群:162272557 kafka整體結構分析: kafka原始碼工程目錄結構如下圖: 下面只對core目錄結構作說明,其他都是測試類或java客戶端程式碼 admin   --管理員模組,操作和管理topic,parit

Kafka系列-自定義Producer

  前面已經講到了,在Kafka中,Message是由Producer產生的,Producer產生的Message會發送到Topic的指定Partition中。Producer可以有多種形式,也可以由使用者通過Java,C以及Python語言來自定義。   K

DevOps服務-監控工具

ora 資產 濕度 fort weblogic cached var hyper-v etx 嘮叨話 關於德語噢屁事的知識點,僅提供精華匯總,具體知識點細節,參考教程網址,如需幫助,請留言。 本章節屬於《DevOps教程》的部分。 《DevOps之服務-監控工具》 註

mongo 3.4分片集群系列六:詳解配置數據庫

初始化 kpi 更新 並且 color tag 成員 gin sha 這個系列大致想跟大家分享以下篇章(我會持續更新的↖(^ω^)↗): 1、mongo 3.4分片集群系列之一:淺談分片集群 2、mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3、mongo