前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >真魔法!图形化管理 Kafka 超轻量的自动化工具

真魔法!图形化管理 Kafka 超轻量的自动化工具

作者头像
我的小碗汤
发布2023-03-19 17:39:27
8650
发布2023-03-19 17:39:27
举报
文章被收录于专栏:我的小碗汤我的小碗汤

Kafka Magic[1] 是一个用于处理 Apache Kafka 集群的 GUI 工具。它可以查找和显示消息、在 Topic 之间转换和移动消息、查看和更新模式、管理 Topic 以及自动化复杂任务。

Kafka Magic 通过方便的用户界面促进 Topic 管理、QA 和集成测试。

Kafka Magic Community Edition 可免费供个人和企业使用。在这里下载[2]

使用 JavaScript 查询搜索、查看、过滤消息

  • 浏览 Kafka 集群、Topic 和分区。
  • 使用带有消息字段、标题、键的任意组合的 JavaScript 查询来搜索消息。
  • 按分区、偏移量和时间戳过滤消息。
  • 查看字符串、JSON 或 Avro 序列化消息。
  • 支持 Ssl、PlainText、Sasl Plain Text、Sasl Ssl 安全协议的集群
  • 支持 GSSAPI、PLAIN、SCRAM-SHA-256、SCRAM-SHA-512 的 Sasl mechanism 的集群

发布消息

  • 将 JSON 或 Avro 消息发布到 Topic
  • 使用 Context 发布消息:Key、Headers、Partition Id
  • 在一个步骤中将多条消息发布为一个数组

在 Topic 之间移动消息

  • 在一个 Topic 中查找消息并将它们发送到另一个 Topic
  • 即时转换消息并更改分配的架构
  • 在多个 Topic 之间有条件地分发消息

管理 Topic 和 Avro 模式

  • 读取集群和 Topic 元数据
  • 创建、克隆和删除 Topic
  • 读取和注册 Avro 模式

自动化复杂任务

  • 使用 JavaScript(完全符合 ECMAScript)编写任何复杂的自动化脚本
  • 使用 IntelliSense 和自动完成助手支持的简单命令编写脚本
  • 直接从 UI 执行长时间运行的集成测试
  • 保持对测试执行的完全控制

Kafka Magic 有效地处理包含数百万条消息的非常大的 Topic。

为企业环境而设计

使用场景
  • 发展:利用 Apache Kafka 快速验证软件[3]
  • 一体化:验证 Avro 模式和消息[4]
  • 测试和质量保证:运行复杂的集成测试脚本[5]
  • 支持:发现并解决运营问题[6]
  • 遵守:在 Kafka 中搜索特定内容[7]
任何方式部署:
  • 作为 Windows、Linux 和 Mac 的桌面应用程序。
  • 作为部署在更靠近 Kafka 集群的 Docker 容器。
  • 单独为每个开发人员,
  • 或整个团队的单个实例。(每个用户可能仍需要用户访问许可证)

部署

docker 部署

参考:docker 部署[8]

Kafka Magic Docker 容器 (Linux amd64) 托管在 Docker Hub 的存储库digitaly/kafka-magic中。

拉取镜像:

代码语言:javascript
复制
docker pull digitsy/kafka-magic

Web 界面在端口 80 上公开。要运行容器并映射到不同的端口(例如 8080):

代码语言:javascript
复制
docker run -d --rm -p 8080:80 digitsy/kafka-magic

在浏览器中导航到http://localhost:8080

docker-compose 部署

对于 docker-compose 示例,请参见 快速开始[9]

Kubernetes 中部署

默认情况下,Kafka Magic 应用程序的 Docker 容器版本配置为将配置存储在内存中。

要配置文件存储,您可以通过环境变量更新配置。使用的配置环境变量的名称 KMAGIC 前缀,需要创建这些环境变量:

代码语言:javascript
复制
KMAGIC_CONFIG_STORE_TYPE: "file"
KMAGIC_CONFIG_STORE_CONNECTION: "Data Source=/tmp/kmagic-data;"
KMAGIC_CONFIG_ENCRYPTION_KEY: "kmagic-key"

完整的部署 Yaml 如下:

代码语言:javascript
复制
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: kafka-magic-data
  namespace: kafka
  finalizers:
    - kubernetes.io/pvc-protection
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: ceph-rbd
  volumeMode: Filesystem
---
kind: Service
apiVersion: v1
metadata:
  name: kafka-magic
  namespace: kafka
  labels:
    app: kafka-magic
    version: v1
spec:
  ports:
    - name: tcp-80
      protocol: TCP
      port: 80
      targetPort: 80
  selector:
    app: kafka-magic
  type: ClusterIP
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: kafka-magic-v1
  namespace: kafka
  labels:
    app: kafka-magic
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kafka-magic
      version: v1
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: kafka-magic
        version: v1
    spec:
      volumes:
        - name: host-time
          hostPath:
            path: /etc/localtime
            type: ''
        - name: volume-ptfuxd
          persistentVolumeClaim:
            claimName: kafka-magic-data
      containers:
        - name: kmagic
          image: digitsy/kafka-magic
          ports:
            - name: tcp-80
              containerPort: 80
              protocol: TCP
          env:
            - name: KMAGIC_CONFIG_STORE_TYPE
              value: file
            - name: KMAGIC_CONFIG_STORE_CONNECTION
              value: Data Source=/config/KafkaMagicConfig.db;
            - name: KMAGIC_CONFIG_ENCRYPTION_KEY
              value: kmagic-key
          resources:
            limits:
              cpu: '1'
              memory: 1Gi
            requests:
              cpu: 500m
              memory: 512Mi
          volumeMounts:
            - name: host-time
              readOnly: true
              mountPath: /etc/localtime
            - name: volume-ptfuxd
              mountPath: /config/
              subPath: KafkaMagicConfig.db
          imagePullPolicy: IfNotPresent

上面Yaml中使用了 ceph-rbd storageclass 存储,请根据实际情况修改。

笔者的集群为扁平化网络,Service ClusterIP 和 PodIP 集群外是可以访问的,集群泛域名已经在内网 DNS 中配置了转发规则。

当然也可以通过 NodePort、Ingress 等方式暴露服务。

笔者部署之后 Kafka Magic 的访问地址为:

代码语言:javascript
复制
http://kafka-magic.kafka.svc.{集群域名后缀}

使用

不注册账号只能添加集群查询消息。注册登录账号,可以使用的功能更多。

注意:用 qq 邮箱,总是收不到验证码。用 gmail 邮箱很顺利。

注册 Kafka 集群

点击 Register New 注册 Kafka 集群:

发送消息

查询消息

Maximum Result 的范围是[0, 10000]

执行自动化任务

下面脚本将在My cluster name 集群中创建一个my_new_topic_name 的 topic,并发送消息{ "myField1": "bar", "myField2": 3 },然后查询消息,最后 delete topic

代码语言:javascript
复制
// Automation script example:

Magic.reportProgress('Started: ' + new Date());

var topic = Magic.createTopic('My cluster name', 'my_new_topic_name');
topic.publishMessage({ "myField1": "bar", "myField2": 3 });

var messages = topic.search(false, 10, function (context) {
return context.Message.myField1 == 'bar';
});

topic.delete();

Magic.reportProgress('Done: ' + new Date());
return messages;


return 'Done!';

将消息从 A topic 复制到 B topic

参考资料

[1]

Kafka Magic: https://www.kafkamagic.com/

[2]

这里下载: https://www.kafkamagic.com/download/?v2

[3]

快速验证软件: https://www.kafkamagic.com/usage/development/

[4]

验证 Avro 模式和消息: https://www.kafkamagic.com/usage/integration/

[5]

复杂的集成测试脚本: https://www.kafkamagic.com/usage/qa/

[6]

发现并解决运营问题: https://www.kafkamagic.com/usage/support/

[7]

搜索特定内容: https://www.kafkamagic.com/usage/compliance/

[8]

docker 部署: https://www.kafkamagic.com/download/#docker-container

[9]

快速开始: https://www.kafkamagic.com/start/#using-docker-containers

- END -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用 JavaScript 查询搜索、查看、过滤消息
  • 发布消息
  • 在 Topic 之间移动消息
  • 管理 Topic 和 Avro 模式
  • 自动化复杂任务
  • 为企业环境而设计
  • 部署
    • docker 部署
      • docker-compose 部署
        • Kubernetes 中部署
        • 使用
          • 注册 Kafka 集群
            • 发送消息
              • 查询消息
                • 执行自动化任务
                  • 将消息从 A topic 复制到 B topic
                    • 参考资料
                    相关产品与服务
                    容器镜像服务
                    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档