emqx_ctrl 重置密码失败(设置了 emqx_host 环境变量)

环境:
docker
镜像: [emqx:5.1.3]
容器设置了 EMQX_HOST = emq_alias

问题:
容器内执行重置密码:
./emqx_ctl admins passwd admin 11111111
报错: Node emqx@emq_alias not responding to pings.

这个看起来应该还有其他的错,你看看 docker 的 log


docker 的log无其它内容

设置了 HOST 时,记得把 Docker 的 hostname 也设置为一样的。
不然是在 emqx 他不知道 emq_alias 是什么 IP。
类似于这样:

如果docker 命令就是–hostname

hosts 已经解析了. 但还是没有用.

emqx@688311621cb5:/opt/emqx/bin$ curl http://emq_alias:1883
curl: (52) Empty reply from server
emqx@688311621cb5:/opt/emqx/bin$ emqx_ctl
Node emqx@emq_alias not responding to pings.
emqx@688311621cb5:/opt/emqx/bin$ cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 emq_alias

hostname 也加了. 但还是 Node emqx@emq_alias not responding to pings.

这看起来你都没启动成功。

1.你先 curl 18083 (不是 1883)
2.docker 看看 log


是有内容的. 我用浏览器访问也是可以的.


改一下这里,改成 emq_alias 应该是在你的环境变量里面

我重建了容器. hostname 改为 seem_emqx 了. 和 环境变量一致的

哦哦,不过看你 cat 的 /etc/hosts 里面还是原来的emq_alias ,是没更新嘛?

emqx@seem_emqx:/opt/emqx$ cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 seem_emqx
172.17.0.15 seem_emqx
emqx@seem_emqx:/opt/emqx$ hostname
seem_emqx
emqx@seem_emqx:/opt/emqx$

主要是: 报错时, 没办法看到日志. 怎么能看到日志?

好的,现在有 2 个问题,我们慢慢来:
1.改了 hostname 后重置密码现在返回什么?
2.在 dashboard 里面管理-》日志 界面你是如何配置的,如果开启了 file 日志,是否挂载了 log 目录


日志开启了, 我先tail -F 的, 再执行 emq status 的. 但也无输出 . 我试了 debug级别, 也没有

1.文件日志没有写,看起来像是没有写入权限。
对应的目录有这些文件夹么?
2. 要不你贴一下完整的 docker 启动命令。或者 docker-compose file

您帮忙看看

docker run -itd --name seem_emqx -v seem_emqx_data:/opt/emqx/data -v seem_emqx_log:/opt/emqx/log -p 1884:1883 -p 8884:8883 -p 18084:18083 --add-host=“seem_emqx:127.0.0.1” -e TZ=“Asia/Shanghai” --network-alias seem_emqx --hostname seem_emqx -e EMQX_HOST=seem_emqx emqx:5.1.3

有 2 个问题:

  1. EMQX用的是Fully Qualified Domain Name (FQDN) 模式。
    把你的 hostname 格式改一下:
    seem_emqx.com
ERROR: Graceful shutdown failed PID=[=ERROR REPORT==== 14-Nov-2024::04:05:34.556058 ===
** System running to use fully qualified hostnames **
** Hostname seem_emqx is illegal **

=ERROR REPORT==== 14-Nov-2024::04:05:34.556472 ===
** System running to use fully qualified hostnames **
** Hostname seem_emqx is illegal **]
  1. 你 mount 的路径没有成功(至少在我的 mac 上用相对路径是不成功的)推荐使用绝对路径,或者 -v ./seem_emqx_data:/opt/emqx/data 这样带上点。同时确保启动前 mount 的目录已经在宿主机上创建好了。
docker run -itd --name seem_emqx -v ./seem_emqx_data:/opt/emqx/data -v ./seem_emqx_log:/opt/emqx/log -p 1884:1883 -p 8884:8883 -p 18084:18083  -e TZ=“Asia/Shanghai” --hostname seem_emqx.com -e EMQX_HOST=seem_emqx.com emqx:5.1.3