housepower / ckman

This is a tool which used to manage and monitor ClickHouse database
Apache License 2.0
438 stars 108 forks source link

ckman常见问题排障总结 #218

Open YenchangChan opened 2 years ago

YenchangChan commented 2 years ago

该topic主要汇总大家在使用ckman的过程中可能遇到的一些问题以及解决方案。 由于在ckman的使用过程中,很多时候碰到的问题是有共性的,如果碰到一次就解决一次,耗时耗力是一方面,更增加了学习成本,因此,本贴相当于一个知识库的整理,将一些比较典型的问题解决方案汇总在此处,方便大家查找。 发帖格式如下:

[ckman版本]
ckman的发行版本,如果是自己编译的二次开发版本,也请说明。

[问题描述]
文字描述,最好带截图或文本错误信息

[解决方案]
提供行之有效的解决方案, 并提供出现该问题的原因以及解决该问题的思路。

注意:本帖汇总的都是已经有明确解决方案的问题,如果是未解决的问题,请另开issue。 欢迎大家踊跃跟帖,分享自己遇到的问题及解决思路,从而帮助社区更多的使用者。

YenchangChan commented 2 years ago

[ckman版本]

v2.2.3

[问题描述]

创建集群时在最后一步报超时:check clickhouse timeout error ed747ab467fb3eb40ecc48ecd67df72

[解决方案]

该问题一般出现在检查状态这一步,说明clickhouse已经部署安装完成,但是当ckman试图去连接clickhouse的时候,并没有连接上。 出现该问题一般由两种原因,第一种是由于配置错误,导致clickhouse-server起不来。 排查思路: 登录clickhouse所在节点,执行 systemctl status clickhouse-server, 如果显示状态不正常,则说明服务未正确启动,则需要从clickhouse-server的日志进行排查。主要查看/var/log/clickhouse-server.err.log文件,一般都是由于配置不正确造成。

还有另一种可能,systemctl status clickhouse-server显示各节点状态是正常的,但ckman却显示超时,该问题是2.2.3版本一个BUG,原因是clickhouse安装启动后,会每隔5秒去尝试连接一次,如果连接不上,就再隔5秒去尝试连接,知道达到最大timeout超时时间为止。但是ckman设置的超时时间也是5秒,则程序逻辑有一定概率先进去timeout的分支,导致根本没有去尝试连接,因此出现超时错误。该BUG已在v2.2.4按本修复。

YenchangChan commented 2 years ago

[ckman版本]

v2.2.3

[问题描述]

创建集群时在最后一步报乱码错误:Error 1366:Incorrect string value 492888ea5b89ac6b07d878cee5d86af

[解决方案]

该问题一般出现在持久化策略为mysql的时候,当mysql 的数据库为非UTF-8编码时,就会出现该错误。 将数据库编码改成UTF-8编码即可。

YenchangChan commented 2 years ago

[ckman版本]

v2.2.3

[问题描述]

部署集群时参数校验错误: Process exited with status 1 27760c3cd207cdb83d00a2ed3cc08fc

[解决方案]

这是标准的shell执行返回错误,说明是ckman远程到clickhouse各节点执行某个命令时报错。 如果是参数校验时弹出该错误,一般是指定的数据存储目录没有权限导致。如果已经到了正式部署阶段(弹出了进度框),则 可能是其他原因。 对于这类问题排查,首先要搞清楚是执行哪个命令报错。可以将ckman的日志级别改成DEBUG,然后重新部署,ckman日志会打印出执行的命令,我们只需要将该命令拿到对应节点上去执行,看报什么错,就能针对性地解决问题。

在v2.2.4版本针对这类错误返回,更加详细化,从返回信息就能判断出到底是什么错误。

YenchangChan commented 2 years ago

[ckman版本]

v2.2.3

[问题描述]

ckman启动报错: dc79efc3888cee185e4aa4b07cbe29e

[解决方案]

这类错误有很多变体,比如还有: 77750b7a2fac9b5dc76c6367595588c 主要原因是使用mysql作为持久化策略时,用户名密码校验失败,原因主要有两类: 第一类是上面图一的错误,直接就没有读到host和password,这种一般是ckman配置文件持久化策略没有配置好,persistent_policy没有改或persistent_config没有取消注释。 上面图二的错误主要是mysql的密码没有加密导致。mysql密码加密方式为 ckman --encrypt xxxxx,将输出的密文填写进password中即可。

YenchangChan commented 2 years ago

[ckman版本]

v2.2.3

[问题描述]

ckman启动报错: image

[解决方案]

问题同上,nacos密码未加密导致,加密方式和mysql相同。

YenchangChan commented 2 years ago

[ckman版本]

v2.2.3

[问题描述]

表管理页面获取zookeeper状态出错: image

[解决方案]

该问题一般出在zookeeperzookeeper3.5.0开始支持使用http的方式访问mntr四字命令的监控数据,默认端口为8080。 如果zookeeper的版本不够新,比如低于3.5.0,或者8080端口被其他程序占用,都有可能出现这种结果。 最简单的验证方法是:直接在浏览器输入: http://{zookeeper_ip}:8080/commands/mntr,如果正常返回有结果,则说明zookeeper是正常的,否则就是zookeeper自身的问题。 该问题只影响zookeeper的指标监控,不影响ckman的正常使用。

YenchangChan commented 2 years ago

[ckman版本]

v2.2.5

[问题描述]

用户管理普通用户不填写配额和限额策略报错: image

[解决方案]

在配额和限额处填写default即可。 image

YenchangChan commented 2 years ago

[ckman版本]

v2.2.5

[问题描述]

mysql作为持久化策略时,创建集群时如果指定逻辑集群会报错:record not found。 image

[解决方案]

改用local持久化策略,或者不指定逻辑集群 ,等待下个版本release会修复。

ryze124 commented 2 years ago

多数据目录怎么办?