faq.md 7.8 KB
Newer Older
1
# FAQ
Z
zengqiao 已提交
2

Z
zengqiao 已提交
3
## 8.1、支持哪些 Kafka 版本?
4

Z
zengqiao 已提交
5 6
- 支持 0.10+ 的 Kafka 版本;
- 支持 ZK 及 Raft 运行模式的 Kafka 版本;
7

Z
zengqiao 已提交
8
 
9

Z
zengqiao 已提交
10
## 8.1、2.x 版本和 3.0 版本有什么差异?
Z
ZHAOYINRUI 已提交
11

Z
zengqiao 已提交
12
**全新设计理念**
13

Z
zengqiao 已提交
14 15
- 在 0 侵入、0 门槛的前提下提供直观 GUI 用于管理和观测 Apache Kafka®,帮助用户降低 Kafka CLI 操作门槛,轻松实现对原生 Kafka 集群的可管、可见、可掌控,提升 Kafka 使用体验和降低管理成本。
- 支持海量集群一键接入,无需任何改造,即可实现集群深度纳管,真正的 0 侵入、插件化系统设计,覆盖 0.10.x-3.x.x 众多 Kafka 版本无缝纳管。
Z
add qa  
zengqiao 已提交
16

Z
zengqiao 已提交
17
**开源协议调整**
Z
add qa  
zengqiao 已提交
18

Z
zengqiao 已提交
19 20
- 3.x:AGPL 3.0
- 2.x:Apache License 2.0
Z
add qa  
zengqiao 已提交
21

Z
zengqiao 已提交
22
更多具体内容见:[新旧版本对比](https://doc.knowstreaming.com/product/9-attachment#92%E6%96%B0%E6%97%A7%E7%89%88%E6%9C%AC%E5%AF%B9%E6%AF%94)
Z
zengqiao 已提交
23

Z
zengqiao 已提交
24
 
Z
add qa  
zengqiao 已提交
25

Z
zengqiao 已提交
26
## 8.3、页面流量信息等无数据?
27

Z
zengqiao 已提交
28 29 30
- 1、`Broker JMX`未正确开启

可以参看:[Jmx 连接配置&问题解决](https://doc.knowstreaming.com/product/9-attachment#91jmx-%E8%BF%9E%E6%8E%A5%E5%A4%B1%E8%B4%A5%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3)
31

Z
zengqiao 已提交
32
- 2、`ES` 存在问题
33

Z
zengqiao 已提交
34
建议使用`ES 7.6`版本,同时创建近 7 天的索引,具体见:[快速开始](./1-quick-start.md) 中的 ES 索引模版及索引创建。
35

Z
zengqiao 已提交
36
 
37

Z
zengqiao 已提交
38
## 8.4、`Jmx`连接失败如何解决?
39

赤月_'s avatar
赤月_ 已提交
40
- 参看 [Jmx 连接配置&问题解决](https://doc.knowstreaming.com/product/9-attachment#91jmx-%E8%BF%9E%E6%8E%A5%E5%A4%B1%E8%B4%A5%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3) 说明。
41

Z
zengqiao 已提交
42
 
43

Z
zengqiao 已提交
44
## 8.5、有没有 API 文档?
45

Z
zengqiao 已提交
46
`KnowStreaming` 采用 Swagger 进行 API 说明,在启动 KnowStreaming 服务之后,就可以从下面地址看到。
47

Z
zengqiao 已提交
48
Swagger-API 地址: [http://IP:PORT/swagger-ui.html#/](http://IP:PORT/swagger-ui.html#/)
49

Z
zengqiao 已提交
50
 
Z
zengqiao 已提交
51

Z
zengqiao 已提交
52
## 8.6、删除 Topic 成功后,为何过段时间又出现了?
53 54 55

**原因说明:**

Z
zengqiao 已提交
56
`KnowStreaming` 会去请求 Topic 的 endoffset 信息,要获取这个信息就需要发送 metadata 请求,发送 metadata 请求的时候,如果集群允许自动创建 Topic,那么当 Topic 不存在时,就会自动将该 Topic 创建出来。
57 58 59

**问题解决:**

Z
zengqiao 已提交
60
因为在 `KnowStreaming` 上,禁止 Kafka 客户端内部元信息获取这个动作非常的难做到,因此短时间内这个问题不好从 `KnowStreaming` 上解决。
61

Z
zengqiao 已提交
62
当然,对于不存在的 Topic,`KnowStreaming` 是不会进行元信息请求的,因此也不用担心会莫名其妙的创建一个 Topic 出来。
63

Z
zengqiao 已提交
64
但是,另外一点,对于开启允许 Topic 自动创建的集群,建议是关闭该功能,开启是非常危险的,如果关闭之后,`KnowStreaming` 也不会有这个问题。
65 66 67 68 69 70

最后这里举个开启这个配置后,非常危险的代码例子吧:

```java
for (int i= 0; i < 100000; ++i) {
    // 如果是客户端类似这样写的,那么一启动,那么将创建10万个Topic出来,集群元信息瞬间爆炸,controller可能就不可服务了。
Z
zengqiao 已提交
71
    producer.send(new ProducerRecord<String, String>("know_streaming" + i,"hello logi_km"));
72 73
}
```
74

Z
zengqiao 已提交
75 76 77 78 79 80 81 82 83 84 85 86 87
&nbsp;

## 8.7、如何在不登录的情况下,调用接口?

步骤一:接口调用时,在 header 中,增加如下信息:

```shell
# 表示开启登录绕过
Trick-Login-Switch : on

# 登录绕过的用户, 这里可以是admin, 或者是其他的, 但是必须在系统管理->用户管理中设置了该用户。
Trick-Login-User : admin
```
Z
ZHAOYINRUI 已提交
88

Z
zengqiao 已提交
89
&nbsp;
Z
ZHAOYINRUI 已提交
90

Z
zengqiao 已提交
91 92 93
步骤二:点击右上角"系统管理",选择配置管理,在页面中添加以下键值对。

```shell
Z
zengqiao 已提交
94 95 96 97
# 模块选择
SECURITY.LOGIN

# 设置的配置键,必须是这个
Z
zengqiao 已提交
98
SECURITY.TRICK_USERS
Z
ZHAOYINRUI 已提交
99

Z
zengqiao 已提交
100 101 102 103 104
# 设置的value,是json数组的格式,包含步骤一header中设置的用户名,例如
[ "admin", "logi"]
```

&nbsp;
Z
ZHAOYINRUI 已提交
105

Z
zengqiao 已提交
106
步骤三:解释说明
Z
ZHAOYINRUI 已提交
107

Z
zengqiao 已提交
108
设置完成上面两步之后,就可以直接调用需要登录的接口了。
109

Z
zengqiao 已提交
110
但是还有一点需要注意,绕过的用户仅能调用他有权限的接口,比如一个普通用户,那么他就只能调用普通的接口,不能去调用运维人员的接口。
Z
zengqiao 已提交
111

112
## 8.8、Specified key was too long; max key length is 767 bytes
Z
zengqiao 已提交
113

114
**原因:** 不同版本的 InoDB 引擎,参数‘innodb_large_prefix’默认值不同,即在 5.6 默认值为 OFF,5.7 默认值为 ON。
Z
zengqiao 已提交
115

116
对于引擎为 InnoDB,innodb_large_prefix=OFF,且行格式为 Antelope 即支持 REDUNDANT 或 COMPACT 时,索引键前缀长度最大为 767 字节。innodb_large_prefix=ON,且行格式为 Barracuda 即支持 DYNAMIC 或 COMPRESSED 时,索引键前缀长度最大为 3072 字节。
Z
zengqiao 已提交
117 118 119

**解决方案:**

120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
- 减少 varchar 字符大小低于 767/4=191。
- 将字符集改为 latin1(一个字符=一个字节)。
- 开启‘innodb_large_prefix’,修改默认行格式‘innodb_file_format’为 Barracuda,并设置 row_format=dynamic。

## 8.9、出现 ESIndexNotFoundEXception 报错

**原因 :**没有创建 ES 索引模版

**解决方案:**执行 init_es_template.sh 脚本,创建 ES 索引模版即可。

## 8.10、km-console 打包构建失败

首先,**请确保您正在使用最新版本**,版本列表见 [Tags](https://github.com/didi/KnowStreaming/tags)。如果不是最新版本,请升级后再尝试有无问题。

常见的原因是由于工程依赖没有正常安装,导致在打包过程中缺少依赖,造成打包失败。您可以检查是否有以下文件夹,且文件夹内是否有内容

```
KnowStreaming/km-console/node_modules
KnowStreaming/km-console/packages/layout-clusters-fe/node_modules
KnowStreaming/km-console/packages/config-manager-fe/node_modules
```

如果发现没有对应的 `node_modules` 目录或着目录内容为空,说明依赖没有安装成功。请按以下步骤操作,

1. 手动删除上述三个文件夹(如果有)

2. 如果之前是通过 `mvn install` 打包 `km-console`,请到项目根目录(KnowStreaming)下重新输入该指令进行打包。观察打包过程有无报错。如有报错,请见步骤 4。

3. 如果是通过本地独立构建前端工程的方式(指直接执行 `npm run build`),请进入 `KnowStreaming/km-console` 目录,执行下述步骤(注意:执行时请确保您在使用 `node v12` 版本)

   a. 执行 `npm run i`。如有报错,请见步骤 4。

   b. 执行 `npm run build`。如有报错,请见步骤 4。

4. 麻烦联系我们协助解决。推荐提供以下信息,方面我们快速定位问题,示例如下。

```
操作系统: Mac
命令行终端:bash
Node 版本: v12.22.12
复现步骤: 1. -> 2.
错误截图:
```
Z
zengqiao 已提交
163

164
## 8.11、在 `km-console` 目录下执行 `npm run start` 时看不到应用构建和热加载过程?如何启动单个应用?
Z
zengqiao 已提交
165

166
需要到具体的应用中执行 `npm run start`,例如 `cd packages/layout-clusters-fe` 后,执行 `npm run start`
Z
zengqiao 已提交
167

168
应用启动后需要到基座应用中查看(需要启动基座应用,即 layout-clusters-fe)。
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184


## 8.12、权限识别失败问题
1、使用admin账号登陆KnowStreaming时,点击系统管理-用户管理-角色管理-新增角色,查看页面是否正常。

<img src="http://img-ys011.didistatic.com/static/dc2img/do1_gwGfjN9N92UxzHU8dfzr" width = "400" >

2、查看'/logi-security/api/v1/permission/tree'接口返回值,出现如下图所示乱码现象。
![接口返回值](http://img-ys011.didistatic.com/static/dc2img/do1_jTxBkwNGU9vZuYQQbdNw)

3、查看logi_security_permission表,看看是否出现了中文乱码现象。

根据以上几点,我们可以确定是由于数据库乱码造成的权限识别失败问题。

+ 原因:由于数据库编码和我们提供的脚本不一致,数据库里的数据发生了乱码,因此出现权限识别失败问题。
+ 解决方案:清空数据库数据,将数据库字符集调整为utf8,最后重新执行[dml-logi.sql](https://github.com/didi/KnowStreaming/blob/master/km-dist/init/sql/dml-logi.sql)脚本导入数据即可。