kfk: 一个快速查看 kafka 集群相关信息的工具

栏目: 后端 · 发布时间: 5年前

内容简介:Query kafka-cluster infomations in one place

kfk

Query kafka-cluster infomations in one place

kafka 是由 Apache 软件基金会开发的一个开源流处理平台,由 Scala 和 Java 编写。查询 kafka 的信息并不是特别方便,它没有类似其他数据库那样的 shell 环境。

kfk 是一个采集 kafka topics/subscribers/partitions/brokers 信息的工具。

:sparkles: Feature

  1. 轻量(如果不需要将数据保存至数据库的话,直接构建运行即可)
  2. 开箱即用

:bookmark_tabs: TODO

  • 将数据写入到 InfluxDB/Prometheus

⛏ 构建运行

  1. 环境变量

    | 变量名 | 说明 | 默认值 | | ----- | --- | ----- | | BROKER_ADDR | kafka broker_uri(如果是集群环境,只需指定其中一个成员即可) | localhost:9092 | | MONGO_URI | mongo_uri(Mongodb 连接字符串,不指定则不使用 Mongo)| 无 | | TICK_INTERVAL | 查询 kafka 信息时间间隔 | 10(单位 s) |

  2. 拉取项目

    $ git clone https://github.com/chenjiandongx/kfk.git && cd kfk
  3. 构建项目

    # 本地构建
    $ export BROKER_ADDR="your_kafka_addr:port"
    $ export MONGO_URI="mongodb://your_mongo_addr:27017"
    $ RUN go build  -o kfk .

    OR

    # 使用 Docker(推荐)
    $ docker build --tag kfk .
    $ docker run -d -p 3300:3300 --env BROKER_ADDR=broker1:9092 kfk

kfk 程序运行后,会启动一个 HTTP 服务,默认监听 3300 端口(Docker 运行的话则需要对外暴露该端口)

:memo: 使用示例

HTTP 路由为 /metrics

$ curl http://localhost:3300/metrics | jq

{
  "timestamp": 1560825753,
  "topics": [
    {
      "name": "TEST_TOPCI_1",
      "partitions": [
          0,
          1,
          2,
          3,
          4,
          5
        ],
      "subscribers": [
        {
          "next_offsets": [
              188302, 
              177512, 
              168999, 
              189982, 
              190677, 
              172268
            ],
          "offset": 1087740,
          "group_id": "fake_group_1"
        }
      ],
      "available_offsets": [
          188302, 
          177512, 
          168999, 
          189982, 
          190677, 
          172268
        ],
      "logsize": 1087740
    },
    {
      "name": "TEST_TOPCI_2",
      "partitions": [
          0, 
          1, 
          2, 
          3, 
          4, 
          5
        ],
      "subscribers": [
        {
          "next_offsets": [
              -1, 
              -1, 
              -1, 
              444, 
              -1, 
              4236
            ],
          "offset": 4680,
          "group_id": [
              "fake_group_1", 
              "fake_group_2"
            ]
        }
      ],
      "available_offsets": [
          0, 
          13914,
          0, 
          444,
          0, 
          4236
        ],
      "logsize": 18594
    },
    
  ],
  "subscribers": [
    {
      "group_id": "fake_group_1",
      "topics": [
          "TEST_TOPCI_1", 
          "TEST_TOPCI_2"
        ]
    },
    {
      "group_id": "fake_group_2",
      "topics": [
          "TEST_TOPCI_2"
        ]
    }
  ],
  "brokers": {
    "members": [
        "broker2:9092", 
        "broker1:9092", 
        "broker3:9092"
    ],
    "controller": "broker2:9092"
  }
}

metrics 信息说明

| 参数 | 类型 | 说明 | | ---- | ---- | --- | | timestamp | int | 数据更新时间 | | topics | array object | 主题列表 | | topics[idx].name | string | 主题名称 | | topics[idx].partitions | array int | 主题存储分区列表 | | topics[idx].subscrbisers | array object | 主题订阅者列表 | | topics[idx].subscrbisers[idx].next_offsets | array | 主题订阅者对应分区的下一个即将被消费的消息的 offset | | topics[idx].subscrbisers[idx].offset | int | 主题订阅者已经消费的 offset | | topics[idx].subscrbisers[idx].group_id | string | 主题订阅者 ID | | subsrcibers | array object | 订阅者列表 | | subsrcibers[idx].group_id | string | 订阅者 ID | | subsrcibers[idx].topics | array string | 订阅者订阅的主题 | | brokers | object | brokers 节点信息 | | brokers.members | array string | brokers 成员节点 | | brokers.controller | string | brokers 的 controller 节点 |

Database

MongoDB

如果指定了 mongo_uri,则数据同时会被写入到数据库

> show dbs
# 可以看到新增了 `kfk` db
admin       0.000GB
local       0.000GB
kfk         0.000GB
> use kfk
# 切换到 kfk db
switched to db kfk
>
> show tables
# 新增了三个数据表,写入的信息跟 /metrics 查询到的信息一致
brokers
subscribers
topics
> # find everything you want

项目地址 : https://github.com/chenjiandongx/kfk


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

鼠标宣言

鼠标宣言

约翰·里德尔 / 倪萍、梅清豪 / 上海人民 / 2005-08-01 / 25.00

本书针对信息时代营销者不知该如何满足消费者的营销困境,提出了崭新的解决方案——以新技术为基础的群体筛选和推荐系统。随着信息管理软件和internet的高速发展,群体筛选技术下的推荐系统通过大量有关消费者偏好和购物记录的信息,以及对产品特征的准确把握,能够为消费者进行精确的推荐,提高了消费者的购物效率和准确度以及营销者的营销效率和竞争力。本书通过通俗而到位的讲解,向读者全面介绍了有关群体筛选技术的理......一起来看看 《鼠标宣言》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具