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-datanamespace:?kafkafinalizers:-?kubernetes.io/pvc-protection
spec:accessModes:-?ReadWriteOnceresources:requests:storage:?10GistorageClassName:?ceph-rbdvolumeMode:?Filesystem
---
kind:?Service
apiVersion:?v1
metadata:name:?kafka-magicnamespace:?kafkalabels:app:?kafka-magicversion:?v1
spec:ports:-?name:?tcp-80protocol:?TCPport:?80targetPort:?80selector:app:?kafka-magictype:?ClusterIP
---
kind:?Deployment
apiVersion:?apps/v1
metadata:name:?kafka-magic-v1namespace:?kafkalabels:app:?kafka-magicversion:?v1
spec:replicas:?1selector:matchLabels:app:?kafka-magicversion:?v1template:metadata:creationTimestamp:?nulllabels:app:?kafka-magicversion:?v1spec:volumes:-?name:?host-timehostPath:path:?/etc/localtimetype:?''-?name:?volume-ptfuxdpersistentVolumeClaim:claimName:?kafka-magic-datacontainers:-?name:?kmagicimage:?digitsy/kafka-magicports:-?name:?tcp-80containerPort:?80protocol:?TCPenv:-?name:?KMAGIC_CONFIG_STORE_TYPEvalue:?file-?name:?KMAGIC_CONFIG_STORE_CONNECTIONvalue:?Data?Source=/config/KafkaMagicConfig.db;-?name:?KMAGIC_CONFIG_ENCRYPTION_KEYvalue:?kmagic-keyresources:limits:cpu:?'1'memory:?1Girequests:cpu:?500mmemory:?512MivolumeMounts:-?name:?host-timereadOnly:?truemountPath:?/etc/localtime-?name:?volume-ptfuxdmountPath:?/config/subPath:?KafkaMagicConfig.dbimagePullPolicy:?IfNotPresent
上面Yaml中使用了 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(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 -