CMAK (previously known as Kafka Manager) is a tool for managing Apache Kafka clusters. See below for details about the name change 摘自cmak gtihub
大意就是cmak 旧称为大家熟悉的kafka-manager,同样也是管理Apache Kafka集群的工具。为啥改名呢?主要是因为误用了 Apache 的商标,所以才从 kafka-manager 改名为 CMAK。安装方式大同小异,仅有几处需要注意的地方。话不多说,下面开干。
首先,我们从github下载安装包,最新版本是3.0.0.6,一般来说下载编译好的zip包就行,如果有特殊需求,可以自己下载源码编译安装

安装要求
cmak至少要jdk11+以上,本文使用的是jdk17.0.5版本
kafka至少是0.8版本以上,本文使用的是kafka-2.1.1

创建cmak用户,解压安装包,授权,修改配置文件

修改第28行的zk配置,上面的kafka-manager配置后面会废弃

启动服务
这边推荐用systemd来管理启动
vi /usr/lib/systemd/system/cmak.service
[Unit]
Description=Kafka Manager ( CMAK )
Requires=network.target
After=network.target
[Service]
Type=simple
User=cmak
Group=cmak
WorkingDirectory=/code/cmak
ExecStart=/code/cmak/bin/cmak -Dpidfile.path=/code/cmak/cmak.pid -Dhttp.port=8080
#这边-Dhttp.port指定服务端口是8080,默认端口是9000
ExecStop=kill $(cat /lingtian/code/cmak/cmak.pid)
Restart=always
[Install]
WantedBy=multi-user.target
systemctl daemon-reload && systemctl start cmak
启动后发现前端加载异常,服务有报错日志:


查找资料发现,是jdk17的兼容性问题,需要增加启动参数,修改systemd的配置如下:
ExecStart后面增加-J--add-opens=java.base/sun.net.www.protocol.file=ALL-UNNAMED -J--add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED
ExecStart=/code/cmak/bin/cmak -Dpidfile.path=/code/cmak/cmak.pid -Dhttp.port=8080 -J--add-opens=java.base/sun.net.www.protocol.file=ALL-UNNAMED -J--add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED
再次启动服务,进入页面正常。

添加集群,操作和kafka-manager一样:

但是,在保存的时候有报错:

提示/kafka-manager/mutex报错,查资料后发现,2种解决方案,有说zk版本过低需要升级,这个比较麻烦,就直接否决了。第二种是手动创建zk目录,包着试试看的态度,操作了一下:

ls /kafka-manager
create /kafka-manager/mutex ""
create /kafka-manager/mutex/locks ""
create /kafka-manager/mutex/leases ""
ls /kafka-manager
重新添加集群后,成功了!
总结下,这边遇到的就2个问题:
静态资源问题
! @807hb0egl - Internal server error, for (GET) [/assets/stylesheets/index.min.css] ->
play.api.UnexpectedException: Unexpected exception[RuntimeException: java.lang.IllegalAccessError: class p
lay.utils.Resources$ (in unnamed module @0x93c2679) cannot access class sun.net.www.protocol.file.FileURLC
onnection (in module java.base) because module java.base does not export sun.net.www.protocol.file to unna
med module @0x93c2679]
2.zk缺少目录的问题