400 BAD_REQUEST:<<“{config_update_crashed,{badmatch,{error,{scan_invalid_utf8, << XXXXXXXXX>>,#{filename=>[”/var/lib/emqx/configs/cluster-overrid.conf"],include_dirs=>[[“var/lib/emqx/configs”]]
错误原因
复制下面代码到请求体内更新一次,再更新一次即可复现该错误。
{
"clientId":"${clientid}",
"event":"${event}",
"username":"${username}"
}
在EMQX Dashboard设置webhook 请求体内容的时候是复制/黏贴进去的,之前以为是加入了未知的空格、中文标点符号或其他字符,导致解析出错。而且一旦设置出错将导致EMQX服务端整个崩溃,新增、修改、删除将都无法操作,需要重新安装服务端才能解决。
解决思路
EMQX v5 升级了Dashboard,以前需要在配置文件修改的方式都升级到web控制台即可操作,但核心还是写到了配置文件里。这个配置文件就是cluster-override.conf,所以我们找到这个文件修改为正确的格式即可
解决方案(docker部署方式)
1. 进入docker容器
docker exec it 容器ID bash
2. 修改cluster-override.conf
cd /opt/emqx/data/configs
vi cluster-override.conf
一般都是请求体错误导致,所以修改正确的请求体即可。
vi命令 docker默认没安装,需要自行安装
3. 重启EMQX容器(一定要操作,否则不生效)
docker restart 容器ID
4. 登录Dashboard就可以正常操作了
5. 总结
- 写请求体内容最好手动输入,避免复制黏贴出现奇怪问题~
觉得这个操作麻烦,那就删除重装。不过是治标不治本的方式,如果重装后依然写错,那就又得重来了