尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

【Kafka学习5】介绍一个开源工具 Kafka Web UI

【Kafka学习5】介绍一个开源工具 Kafka Web UI Kafbat UIKafbat UI 是一款开源的Apache Kafka 可视化管理工具它为 Kafka 集群提供了一个直观、美观的 Web 界面。如果你厌倦了在命令行里敲各种kafka-topics.sh、kafka-console-consumer.sh来查看 Topic、消费消息、监控集群状态那么 Kafbat UI 就是为你准备的。功能说明集群监控实时查看 Broker 状态、Topic 列表、消费者组偏移量、分区分布等核心指标消息管理浏览、搜索、发送消息支持 Avro、Protobuf、JSON Schema 等多种格式运维操作创建/删除 Topic、调整分区数、重置消费者组偏移量一应俱全安全集成支持 SSL、SASL、Schema Registry、Kafka Connect 等企业级特性 Kafbat UI 把 Kafka 的命令行能力全部搬进了浏览器让开发和运维效率提升一个数量级。文章目录 Kafbat UI️ 概览架构要点解读 快速上手 Demo一键启动命令三步上手 镜像分发详解镜像类型对比Release 镜像 Snapshot 镜像 ⚡三大镜像仓库⚙️ 配置入门两种配置方式对比YAML 配置结构配置加载的优先级️ 部署方式大全方式一Docker Compose 持久化部署 方式二Helm ChartKubernetes☸️基础安装配置方式 1YAML Dict 模式配置方式 2ConfigMap配置文件模式配置方式 3ConfigMap环境变量模式方式三源码构建 健康检查Kubernetes 健康检查配置示例 进阶资源 参考来源️ 概览Kafbat UI 是一个纯客户端应用——它本身不存储任何数据所有信息都来自你配置的 Kafka 集群及其相关组件。 Kafka 生态层 Kafbat UI 应用层 用户层HTTP/WebSocketKafka 协议Kafka 协议Kafka 协议HTTPHTTP 浏览器 (Web UI)Spring Boot 后端REST API 接口⚙️ 动态配置 (可选) Kafka Broker Kafka Broker Kafka Broker Schema Registry Kafka Connect图 1Kafbat UI 架构示意图架构要点解读✅无状态设计Kafbat UI 本身不持久化业务数据重启不会丢失 Kafka 中的任何消息✅多集群支持一个 UI 实例可以同时管理多个 Kafka 集群通过左侧菜单切换✅可选动态配置开启DYNAMIC_CONFIG_ENABLEDtrue后可通过 Web 界面动态修改配置并存入本地文件✅丰富的集成原生支持 Schema Registry、Kafka Connect、Kafka Streams 等周边组件 快速上手 Demo一键启动命令dockerrun-it-p8080:8080\-eDYNAMIC_CONFIG_ENABLEDtrue\ghcr.io/kafbat/kafka-ui三步上手第 1 步 · 执行启动命令在终端中运行上面的 Docker 命令。首次运行会自动拉取镜像耐心等待即可。第 2 步 · 打开 Web 界面浏览器访问http://localhost:8080你就会看到 Kafbat UI 的欢迎页面。第 3 步 · 添加你的 Kafka 集群通过 UI 上的配置向导输入你的 Kafka Broker 地址即可开始管理集群。DYNAMIC_CONFIG_ENABLED 是什么这个环境变量开启了「动态配置」模式。开启后你可以直接在 Web 界面上添加/修改 Kafka 集群配置而不需要手动编辑配置文件。对于 Demo 和开发环境非常方便生产环境则建议使用固定的 YAML 配置文件。⚠️Demo 模式的局限这种方式虽然简单但有两个问题① 配置信息不会持久化容器删除就没了② 只适合快速体验不适合生产环境使用如果需要持久化安装请继续阅读下面的内容。 镜像分发详解Kafbat UI 通过 Docker 镜像分发理解镜像的类型和获取渠道可以帮助你根据场景选择最合适的版本。镜像类型对比Kafbat UI 发布两种类型的镜像分别对应不同的使用场景类型标签示例更新频率稳定性适用场景Release正式版latest/v1.0.0数周一次⭐⭐⭐⭐⭐ 高生产环境、对稳定性要求高的场景Snapshot快照版main/b241abe每次提交⭐⭐⭐ 中需要最新功能、愿意尝鲜的开发者Release 镜像 Release 镜像是经过完整测试的正式版本使用语义化版本号Semantic Versioning命名例如v1.0.0。同时latest标签始终指向最新的正式版。生产环境建议使用具体的版本号标签如v1.0.0而不是latest这样可以避免意外升级带来的风险。Snapshot 镜像 ⚡Snapshot 镜像对应 main 分支的每一次代码提交标签就是提交的短 SHA 值如b241abe。main标签则始终指向 main 分支的最新构建。小技巧如果你需要某个还没正式发布的新功能可以使用 Snapshot 镜像。为了避免版本漂移建议使用具体的 SHA 标签如b241abe而不是main这样每次拉取的镜像都是固定的。三大镜像仓库Kafbat UI 将镜像发布到三个不同的容器仓库它们各有特点你可以根据网络环境和需求选择仓库镜像地址镜像类型拉取限制推荐度GHCR主仓库ghcr.io/kafbat/kafka-uiRelease Snapshot需要认证⭐⭐⭐⭐⭐ 首选AWS ECR镜像public.ecr.aws/kafbat/kafka-ui仅 Release无明确限制⭐⭐⭐⭐ 备用Docker Hub镜像kafbat/kafka-ui仅 Release匿名用户有拉取限制⭐⭐⭐ 备选为什么 GHCR 是首选GHCRGitHub Container Registry是 Kafbat UI 的主要镜像仓库原因有三① 包含所有镜像类型Release 和 Snapshot 都有② 与 GitHub 代码仓库集成紧密发布最快③ 认证后拉取速度稳定没有 Docker Hub 那样的匿名限流问题⚙️ 配置入门体验完 Demo 之后就该认真配置了。Kafbat UI 支持两种配置方式YAML 配置文件 和 环境变量。它们可以单独使用也可以组合使用。两种配置方式对比维度YAML 配置文件环境变量可读性⭐⭐⭐⭐⭐ 结构清晰易于阅读⭐⭐⭐ 层级多时较长复杂配置✅ 天然支持嵌套结构⚠️ 需要下划线转义版本管理✅ 方便 Git 跟踪⚠️ 散落在各处容器部署需要挂载文件直接传入即可官方推荐✅ 强烈推荐用于覆盖特定配置最佳实践主体配置使用 YAML 文件环境变量仅用于覆盖不同环境的差异项如数据库密码、集群地址等。官方也提供了一个在线转换工具可以在 YAML 和环境变量之间互相转换。YAML 配置结构配置文件的核心是kafka.clusters数组——你可以在这里定义一个或多个 Kafka 集群。下面是一个典型的配置示例展示了最常用的配置项# # Kafbat UI 核心配置# kafka:clusters:# ---- 集群 1本地开发集群 -----name:local-dev# 集群名称UI 中显示bootstrap-servers:kafka1:9092,kafka2:9092# Broker 地址列表# SSL 安全连接配置可选ssl:truststore-location:/path/to/truststore.jkstruststore-password:your-passwordverify-ssl:true# Schema Registry 集成可选schemaRegistry:http://schema-registry:8085schemaRegistryShowNullValues:true# Kafka Connect 集成可选kafkaConnect:-name:connect-cluster-1address:http://kafka-connect:8083# # 服务器配置# server:port:8080# 服务端口servlet:context-path:/# 上下文路径# # 动态配置可选# dynamic:config:enabled:true# 启用 Web 界面动态配置file:/etc/kafkaui/dynamic_config.yaml# 动态配置文件路径配置加载的优先级当 YAML 和环境变量同时存在时它们的关系是「互补」而非「互斥」。理解加载顺序可以帮你排查配置不生效的问题DYNAMIC_CONFIG_ENABLEDtrue 时生效 YAML 配置文件 (基础配置)⚙️ 最终生效配置 环境变量 (覆盖/补充)️ 动态配置文件 (Web UI 修改)图 2配置加载优先级示意⚠️注意事项环境变量的命名规则是将 YAML 的层级用下划线_连接并转为大写。例如kafka.clusters[0].name对应的环境变量是KAFKA_CLUSTERS_0_NAME。️ 部署方式大全从本地 Demo 到生产环境Kafbat UI 提供了多种部署方案。选择哪种取决于你的基础设施和运维习惯。方式一Docker Compose 持久化部署 这是最常用的部署方式——比裸 Docker 更规范比 Helm 更简单。通过挂载配置文件你的配置可以在容器重启后保留。version:3.8services:kafbat-ui:container_name:kafbat-uiimage:ghcr.io/kafbat/kafka-ui:latestports:-8080:8080environment:DYNAMIC_CONFIG_ENABLED:truevolumes:# 将本地配置文件挂载到容器中-./config.yml:/etc/kafkaui/dynamic_config.yamlrestart:unless-stopped配置文件从哪来如果挂载的配置文件不存在容器会自动创建一个空的。你可以开启DYNAMIC_CONFIG_ENABLEDtrue在 Web UI 中配置好集群后配置就会自动写入挂载的文件中。也可以从官方示例直接参考。方式二Helm ChartKubernetes☸️如果你的基础设施在 Kubernetes 上使用 Helm Chart 是最标准的做法。Kafbat UI 提供了官方 Helm 仓库安装非常简单。基础安装# 添加 Helm 仓库helm repoaddkafbat-ui https://kafbat.github.io/helm-charts helm repo update# 安装默认配置helminstallkafbat-ui kafbat-ui/kafka-ui配置方式 1YAML Dict 模式创建values.yml文件在yamlApplicationConfig下写入完整的 YAML 配置# values.ymlyamlApplicationConfig:kafka:clusters:-name:my-clusterbootstrapServers:kafka-broker:9092auth:type:disabledmanagement:health:ldap:enabled:falsehelminstallkafbat-ui kafbat-ui/kafka-ui-fvalues.yml配置方式 2ConfigMap配置文件模式如果你习惯用 ConfigMap 管理配置可以先创建 ConfigMap再通过 Helm 引用# configmap.ymlapiVersion:v1kind:ConfigMapmetadata:name:kafbat-ui-configmapdata:config.yml:|-kafka:clusters:-name:my-clusterbootstrapServers:kafka-broker:9092kubectl apply-fconfigmap.yml helminstallkafbat-ui kafbat-ui/kafka-ui\--setyamlApplicationConfigConfigMap.namekafbat-ui-configmap\--setyamlApplicationConfigConfigMap.keyNameconfig.yml配置方式 3ConfigMap环境变量模式# configmap-env.ymlapiVersion:v1kind:ConfigMapmetadata:name:kafbat-ui-helm-valuesdata:KAFKA_CLUSTERS_0_NAME:kafka-cluster-nameKAFKA_CLUSTERS_0_BOOTSTRAPSERVERS:kafka-cluster-broker-endpoints:9092AUTH_TYPE:DISABLEDMANAGEMENT_HEALTH_LDAP_ENABLED:FALSEkubectl apply-fconfigmap-env.yml helminstallkafbat-ui kafbat-ui/kafka-ui--setexistingConfigMapkafbat-ui-helm-values三种 Helm 配置方式怎么选方式适用场景YAML Dict配置项不多时最简单全部写在 values.yml 里ConfigMap配置文件配置复杂时更清晰单独管理配置文件ConfigMap环境变量适合少量配置覆盖或与现有 ConfigMap 体系对齐方式三源码构建 如果你需要自定义修改代码或者你的环境无法访问 Docker Registry可以选择从源码构建。这需要 Java 和 Node.js 环境具体步骤可以参考官方的构建指南。⚠️适用人群源码构建主要面向需要二次开发的高级用户。大多数情况下使用官方镜像就足够了。如果你只是想使用最新功能Snapshot 镜像通常是更省事的选择。 健康检查在生产环境中健康检查是必不可少的。Kafbat UI 基于 Spring Boot Actuator 提供了标准的健康检查端点方便你集成到 Kubernetes、Docker Compose 或其他运维系统中。端点说明❤️Liveness / Readiness/actuator/health— 同时用作存活检查和就绪检查ℹ️应用信息/actuator/info— 返回版本号、构建信息等元数据Kubernetes 健康检查配置示例livenessProbe:httpGet:path:/actuator/healthport:8080initialDelaySeconds:30periodSeconds:10timeoutSeconds:3failureThreshold:3readinessProbe:httpGet:path:/actuator/healthport:8080initialDelaySeconds:10periodSeconds:5timeoutSeconds:3failureThreshold:3为什么 initialDelay 不一样Liveness probe 的initialDelaySeconds设得更长30秒给应用足够的启动时间避免刚启动就被误杀。Readiness probe 则更激进10秒确保应用准备好之后才接收流量。这是 Spring Boot 应用的典型配置方式。 进阶资源读完本指南你应该已经对 Kafbat UI 有了全面的了解。如果想深入学习以下资源可以帮你更进一步资源说明文档路径配置向导Web UI 中的可视化集群配置工具configuration/configuration-wizard配置文件详解完整的 YAML 配置项说明configuration/configuration-fileCompose 示例各种场景的 Docker Compose 配置模板configuration/compose-examples⚙️杂项配置属性所有环境变量和配置属性的完整列表configuration/misc-configuration-properties☸️Helm ChartKubernetes 部署的完整指南configuration/helm-charts/quick-start贡献指南想参与开源从这里开始development/contributing写在最后Kafbat UI 是一个活跃的开源项目社区一直在迭代更新。如果你在使用中遇到问题可以通过 GitHub Issues 寻求帮助也欢迎参与贡献让这个工具变得更好。 参考来源Kafbat UI 官方文档 - Getting Startedhttps://ui.docs.kafbat.io/overview/getting-started
返回列表