You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Ejabberd集群特定节点的当前在线用户数?

获取Ejabberd集群特定节点的连接用户数

当然可以获取单个节点的连接用户数!默认的ejabberdctl connected_users_number会返回整个集群的汇总值,但只要稍微调整命令参数,就能精准拿到目标节点的数据。

方法一:使用ejabberdctl指定目标节点

这是最直接的方式,步骤如下:

  1. 先确认集群中所有节点的名称,执行以下命令列出所有集群节点:
    ejabberdctl nodes
    
    输出会是类似["ejabberd@app01", "ejabberd@app02"]这样的节点名格式。
  2. 针对目标节点执行connected_users_number,加上--node参数指定节点:
    ejabberdctl --node ejabberd@app01 connected_users_number
    
    这个命令会返回ejabberd@app01这台机器上当前的连接用户数,而不是集群总和。

方法二:通过Erlang Shell直接查询

如果你能直接访问目标节点的Erlang Shell,可以调用对应的Erlang函数直接获取:

  1. 连接到目标节点的Erlang Shell:
    ejabberdctl --node ejabberd@app01 debug
    
  2. 在Shell中执行:
    ejabberd_sm:connected_users_number().
    
    执行后会返回该节点的本地连接用户数。

注意事项

  • 确保执行命令的用户拥有访问Ejabberd控制命令的权限。
  • 目标节点必须和当前执行命令的机器在同一个Ejabberd集群中,并且网络互通。
  • 节点名称的格式通常是ejabberd@<机器主机名>,如果不确定可以用ejabberdctl status查看当前节点的名称作为参考。

内容的提问来源于stack exchange,提问作者Saravanan R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:45:15