真魔法!图形化管理 Kafka 超轻量的自动化工具
关注公众号并添加到“星标⭐”,防止错过消息
后台回复【资料包】获取学习资料
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
中。
拉取镜像:
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 示例,请参见 快速开始[9]
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
上面Yaml中使用了 ceph-rbd storageclass 存储,请根据实际情况修改。
笔者的集群为扁平化网络,Service ClusterIP 和 PodIP 集群外是可以访问的,集群泛域名已经在内网 DNS 中配置了转发规则。
当然也可以通过 NodePort、Ingress 等方式暴露服务。
笔者部署之后 Kafka Magic 的访问地址为:
http://kafka-magic.kafka.svc.{集群域名后缀}
使用
不注册账号只能添加集群查询消息。注册登录账号,可以使用的功能更多。
注意:用 qq 邮箱,总是收不到验证码。用 gmail 邮箱很顺利。
注册 Kafka 集群
点击 Register New 注册 Kafka 集群:
发送消息
查询消息
执行自动化任务
下面脚本将在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(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 -
推荐阅读
还怕记不住 Kubectl 命令?K9s 太强大了Docker 那些事儿:如何安全地停止、删除容器?必知必会,7 张图轻松理解 K8S 集群内服务通信
eBPF 和可观测性,不得不说的关系
基于 KubeSphere 流水线的 GitOps 最佳实践
ArgoCD 用户管理、RBAC 控制、脚本登录、App 同步
详解 K8S 备份恢复利器 Velero
这个国产编辑器,即将开源,雀食好用!
调试必备!详解 HTTP 客户端调用 K8S API,建议收藏!
图解 K8S 中 SpringBoot Pod 如何优雅关闭,减少对客户端影响
SFC宣布退出GitHub
命令行大全 & docker、containerd、ctr、crictl 联系
关于 Kubernetes,没人愿意说的真相
ArgoCD Web UI 加载很慢?一招教你解决将 Docker 镜像安全扫描,添加到 CI/CD 管道40 张图解 K8s 中微服务项目设计与实现
总结了 800多个 Kubectl 别名,再也不怕记不住命令了!
Grafana 9 正式发布,更易用,更酷炫了!
Istio、eBPF 和 RSocket Broker:10 张图轻松搞懂服务网格CKS CKA CKAD 考试迎来重大变化