进击云原生

V2

2022/07/26阅读:22主题:自定义主题1

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

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

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

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

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

使用 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。

专为企业环境而设计

使用场景
以您想要的任何方式部署:
  • 作为 Windows、Linux 和 Mac 的桌面应用程序。
  • 作为部署在更靠近 Kafka 集群的 Docker 容器。
  • 单独为每个开发人员,
  • 或整个团队的单个实例。(每个用户可能仍需要用户访问许可证)

部署

docker 部署

参考: docker 部署

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

拉取镜像:

docker pull digitsy/kafka-magic

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

docker run -d --rm -p 8080:80 digitsy/kafka-magic

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

docker-compose 部署

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

Kubernetes 中部署

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

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

KMAGIC_CONFIG_STORE_TYPE: "file"
KMAGIC_CONFIG_STORE_CONNECTION: "Data Source=/tmp/kmagic-data;"
KMAGIC_CONFIG_ENCRYPTION_KEY: "kmagic-key"

完整的部署 Yaml 如下:

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

使用了 ceph-rbd storageclass 存储。

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

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

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

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

// 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(false10, function (context) {
return context.Message.myField1 == 'bar';
});

topic.delete();

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


return 'Done!';

将消息从 A topic 复制到 B topic

交流

请关注微信公众号【进击云原生】,扫码关注,了解更多咨询,更有免费资源供您学习

扫码关注,加群学习
扫码关注,加群学习

分类:

后端

标签:

后端

作者介绍

进击云原生
V2

公众号:进击云原生