如何查看MQTT服务器上有哪些客户端连接,有哪些命令?

查看MQTT服务器上有哪些客户端连接,最快的方式是通过Broker自带的监控主题或管理接口获取精确的客户端ID列表,其次是查看实时日志文件,不同Broker的命令略有差异,但原理一致。

先摸清你的Broker是哪种

MQTT服务器本身不提供统一的“在线列表”面板,但几乎每个Broker都预留了查看通道,行业内最常用的Broker无非三种:Mosquitto(开源轻量方案)、EMQX(高性能分布式方案)、qingcloud(轻量级嵌入式方案),先确认自己用的是哪一种,再对症下药。

mqtt 客户端,安卓版
加载中
mqtt 客户端,安卓版

怎么确认?看客户端连接时填的端口号就能猜个大概:1883是MQTT默认端口,8083或8084通常是WebSocket端口,18083往往是EMQX的Dashboard管理端口,如果你是在树莓派或者NAS上部署的智能家居网关,八成是Mosquitto;如果公司里跑着成千上万的设备连接,那大概率是EMQX。

Mosquitto:看主题、翻日志、查系统监控

Mosquitto是目前个人开发者和小型项目中最常见的Broker,它没有图形界面,但提供了足够多的信息渠道。

订阅$SYS开头的系统主题

Mosquitto从1.5版本开始,默认开启$SYS主题树,你只要用一个MQTT客户端订阅$SYS/#就能看到一堆Broker实时统计信息,具体操作如下:

mosquitto_sub -h 服务器IP -p 1883 -t ‘$SYS/#’ -v

然后会刷出一连串类似这样的内容:

  • $SYS/broker/clients/connected 当前已连接的客户端数量
  • $SYS/broker/clients/total 曾经连接过的客户端总数(含掉线的)
  • $SYS/broker/clients/disconnected 已断开但会话保持的客户端数量
  • $SYS/broker/clients/maximum 历史最大并发连接数
  • $SYS/broker/bytes/received Broker收到的总字节数

但这里有个坑:$SYS只给你数量和统计维度,不直接列出每个客户端的ID,如果你能接受只看数量,那这个方式最省事。

直接翻日志文件

要看到“有哪些客户端”这种具体清单,日志比$SYS更直观,在Linux上运行Mosquitto时,日志路径通常在/var/log/mosquitto/mosquitto.log,Windows上一般在C:mosquittomosquitto.log,用一条命令就能看到实时写入的连接记录:

tail -f /var/log/mosquitto/mosquitto.log

日志里会实时打印这样的行:

  • New client connected from 192.168.1.105 as device_001 (p2, c1, k60)
  • Client device_001 disconnected

    如何查看MQTT服务器上有哪些客户端连接,有哪些命令?

  • New client connected from 192.168.1.107 as sensor_temp_02 (p2, c1, k30)

通过跟踪New client connected from后面的IP和as后面的客户端ID,就能拼凑出到底有哪些设备连了上来,不过日志默认只记录“连接建立”和“连接断开”,不会保留一个持续的在线列表,你得自己通过监听日志变化来维护会话状态。

借助第三方工具做可视化

如果你不想手动翻日志,可以用MQTT Explorer这个开源桌面客户端,它连接Broker之后,左侧会有一个“Local”按钮,点开就能看到当前已连接的客户端列表,包含Client ID和IP地址,实际上它的原理也是订阅$SYS主题,但帮我们做了聚合展示。

EMQX:管理界面一打开,谁在线一目了然

如果你的MQTT服务器部署的是EMQX,那查看客户端连接就简单多了。

Dashboard图形界面

默认安装好EMQX之后,浏览器访问http://服务器IP:18083,账号密码默认为admin/public,登录后进入“客户端管理”页面,会看到一个表格,实时列出所有已连接的客户端,表头包含:

  • Client ID
  • 用户名
  • IP地址和端口
  • 协议版本(MQTT 3.1.1还是MQTT 5.0)
  • 连接状态(已连接/已断开)
  • 订阅的主题数量

在这个界面上还能直接踢掉异常连接,或者按Client ID搜索特定设备,非常实用,行业共识认为,EMQX在单节点支持百万级连接的情况下,Dashboard的响应速度依然能保持在毫秒级,这在同类开源产品中是比较突出的。

REST API拉取客户端清单

EMQX提供了完整的REST API,方便你写脚本或对接自建监控告警系统,查看在线客户端列表的接口是:

GET /api/v4/clients

返回的JSON里包含data数组,每一项就是一个客户端的详细信息,配合curl命令可以直接在服务器上测试:

curl -u admin:public http://127.0.0.1:8081/api/v4/clients

这样就能拿到当前所有连接到MQTT服务器上的客户端ID列表,并且可以按需解析出IP、用户名、连接时长等字段。

命令行工具emqx_ctl

对于不习惯图形界面的运维人员,EMQX自带的命令行工具也很方便,执行:

emqx ctl clients list

会以文本行格式输出所有在线客户端,配合grep、wc -l等Linux命令还能快速统计在线数量,如果只想看单个客户端的状态,比如设备device_123是否在线,可以执行:

emqx ctl client device_123
会显示这个客户端当前是否有会话、是否在线、从哪个IP连接、订阅了哪些主题。

如何查看MQTT服务器上有哪些客户端连接,有哪些命令?

qingcloud:轻量部署中的特殊查看方式

一些嵌入式设备或者智能网关里跑的是qingcloud这种轻量级Broker,它们的资源受限,通常不会提供HTTP API或web管理界面,查看客户端连接的方式往往依靠系统自带的订阅或发布工具。

qingcloud有个原生命令可以实时监控在线客户端状态:

qingcloud monitor

执行后会动态刷新当前所有连接,显示每个Client ID对应的IP地址和心跳间隔,这种方式适合开发阶段调试,但生产环境下使用较少。

另外有个小技巧:当客户端连接时,在qingcloud的启动终端(前台运行模式)会直接打印连接日志,但如果在后台运行,则日志重定向到了/var/log/mqtt.log,可以用tail -f查看。

这里需要提一个实际场景:不少开发者用docker容器来跑mosquitto时,容易漏看容器日志导致排查时一头雾水,如果你用的是docker方式部署,务必把日志挂载到宿主机上,否当容器被重建时历史连接记录就全部丢失了。

排查“mqtt客户端掉线频繁”的正确姿势

很多人搜“怎么查看mqtt服务器上有哪些客户端连接”,其实真正的问题背景是“既然连接断了,想确认设备到底有没有连上服务器”,这里有三个不同层面的排查路径:

看Broker侧统计实时连接数

  • 运行Mosquitto时订阅$SYS/broker/clients/connected,观察数值是否长期超过实际设备数,如果数值一直增长且高于设备总量,说明有连接未正确断开,多半是客户端没设置clean session(清理会话)标志位,导致MQTT服务器一直保存会话状态。
  • 用EMQX的Dashboard查看“连接数”和“会话数”两个指标,如果连接数远大于设备数,通常是设备侧反复重连导致的旧连接残留。

看网络层有没有VPC或防火墙拦截

得到IP地址后,在服务器上检查客户端IP是否可达:

ping 192.168.1.105

再用telnet检查1883端口通不通:

telnet 192.168.1.105 1883

如果网络层通了但MQTT连接还是不稳定,下一步就要看认证配置,确认是不是用户名密码或客户端证书校验不通过导致被踢下线。

看订阅关系维持的活跃度

在线不代表活跃。查看MQTT服务器上有哪些客户端连接只解决了“连没连上”的问题,要判断“是否健在”,还得看心跳包情况,大多数Broker默认的keepalive间隔是60秒,如果设备侧设置的心跳太短(比如5秒),在无线网络环境下很容易产生大量无效重连,导致Broker的连接列表像过山车一样起伏。

如何查看MQTT服务器上有哪些客户端连接,有哪些命令?

站在企业监控角度的进阶建议

如果管理的是几十台甚至上百台生产设备,光靠Shell命令临时查看属于应急手段,绝大多数MQTT服务器都支持Webhook或规则引擎,把连接事件转发到外部监控平台,比如EMQX可以配置“连接/断开事件”通过HTTP回调推送给企业微信或钉钉机器人,做到主动感知设备上下线,而不是被动地去服务器上查询。

对于需要长期记录分析的用户,推荐用简米云物联网平台或酷番云IoT平台中托管的MQTT实例,它们的控制台自带设备管理功能,直接以设备维度展示在线状态,不用自己折腾命令行,不过要留意一点,云厂商的MQTT实例通常按照连接数和消息数计费,查看实时连接数的入口一般在“设备管理”或“监控告警”菜单下。

查看MQTT服务器上有哪些客户端连接,本质上就是确认当前Broker的会话表里有哪些活跃条目,用$SYS主题看数量,用日志看明细,用管理API看结构化数据,三种方式任选其一都能达到目的,关键要记住的是:Broker看不到消息内容,但一定看得到每一个连接的来源IP和Client ID,这是MQTT协议中Broker天然具备的能力。

相关问答

Q:怎么查看mqtt服务器上有哪些客户端连接而不影响线上业务?
A:订阅$SYS或调用查询API均属于只读操作,不会对现有连接产生任何影响,但要注意mosquitto_sub -t '$SYS/#'会额外增加Broker的转发负载,连接数较大时建议过滤掉高频更新的字节统计主题,只订阅$SYS/broker/clients/connected这类低频指标。

Q:为什么我查看mqtt客户端连接列表时,发现一些Client ID重复出现?
A:同一个Client ID在同一时间只能维持一个有效连接,出现重复是因为旧的连接未完全释放,而新连接已建立,这通常由网络抖动导致ACK丢失触发,EMQX Dashboard中会显示“连接状态为旧连接”的条目,你可以手动踢掉旧连接释放资源。

Q:EMQX和Mosquitto查看客户端连接的方式能通用吗?
A:不能直接通用,Mosquitto没有内置REST API,只能通过$SYS主题或日志间接获取;EMQX则提供了完整的HTTP API和WebSocket API,如果要统一管理,建议通过MQTT协议订阅$SYS主题来实现跨Broker的连接数量统计。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/708276.html

赞 (0)
怎么进入戴尔服务器系统进行安装还原,操作步骤有哪些?
上一篇 2026年10月4日 17:54
成都定制服务器哪家性价比高,多少钱一台?
下一篇 2026年10月4日 17:55

相关推荐

  • 如何构建实时数据仓库?实时数据仓库搭建步骤

    构建实时数据仓库的核心在于采用Lambda或Kappa架构,通过流批一体技术实现数据从采集到可视化的秒级延迟,从而支撑即时业务决策,在数字化转型的深水区,传统T+1的离线数仓已无法满足企业对市场变化的敏锐度,当用户行为、交易流水、物联网传感器数据以毫秒级速度涌入时,等待一天的报表无异于刻舟求剑,实时数据仓库(R……

    2026年5月26日
    4000
  • AI智能直播需要哪些技术支持?揭秘AI直播技术核心组成!

    AI智能直播需要哪些技术?AI智能直播的实现并非单一技术的突破,而是一个融合了多种前沿技术的复杂系统工程,其核心目标在于提升直播效率、降低成本、增强互动性与用户体验,并实现规模化、个性化运营,要构建一个成熟稳定的AI智能直播解决方案,需要以下关键技术的协同支撑:核心技术层:驱动智能直播的引擎实时音视频处理与传输……

    程序编程 2026年2月14日
    14110
  • 怎么在服务器上多装cpu?多cpu服务器怎么配置

    想把多块CPU塞进一台服务器,核心条件就三个:主板有多个物理插槽、所有CPU必须同型号同规格、散热和供电扛得住全部核心满载,然后按正确顺序安装并让系统识别,服务器怎么加装第二块cpu?从主板空余插槽到匹配条件很多玩家第一次摸服务器主板,会误以为和消费级一样只有一个CPU座,其实服务器主板天生就是“多核社交体质……

    2026年9月17日
    100
  • CMIVPS美国VPS月付6折值得入手吗?高防VPS推荐

    CMIVPS提供极具性价比的美国VPS方案,月付6折、年付5折,西雅图节点配备1Gbps带宽及20Gbps免费高防,最低月费仅$4.08起,是追求稳定与安全的理想选择,在云服务器市场日益内卷的当下,寻找一款既便宜又稳定的海外VPS并非易事,许多用户常在“低价低质”和“高价低配”之间纠结,CMIVPS此次推出的促……

    2026年6月18日
    2000
  • alert在js中怎么用?js中alert弹窗的用法

    alert() 是 JavaScript 中用于显示警告对话框的最基础方法,虽然它简单直接,但在现代 Web 开发中已不推荐用于生产环境,建议改用自定义模态框以提升用户体验,在 JavaScript 的浩瀚生态中,alert用法js 或许是最让初学者既爱又恨的存在,爱的是它无需配置、开箱即用,恨的是它阻塞线程……

    2026年5月31日
    5900
  • AIoT智能产业是什么?AIoT智能产业发展前景如何

    AIoT智能产业的核心驱动力在于“智能”与“连接”的深度融合,其本质是人工智能(AI)与物联网(IoT)的双向赋能,最终实现万物互联向万物智联的跨越,这一产业不再是单纯的技术叠加,而是通过数据闭环,让物理世界的设备具备感知、思考与执行的能力,企业若想在未来的数字化竞争中占据高地,必须构建“端-边-云-用”一体化……

    2026年3月21日
    11700
  • AIoT发电原理是什么?AIoT智能发电系统应用

    AIoT发电并非传统意义上的能量创造,而是通过人工智能与物联网技术的深度融合,对分布式能源进行实时感知、智能调度与高效优化,从而实现发电效率最大化与电网稳定性提升的系统性解决方案,很多人对“AIoT发电”存在误解,以为这是一种全新的物理发电技术,它更像是一个超级聪明的“电网大脑”,传统的发电方式依赖人工经验或简……

    2026年6月14日
    3410
  • 广州税控盘服务器地址是什么?广州税控盘服务器地址怎么填写

    2026年广州地区税控盘/税务UKey的云端服务器地址统一为:skp.kdzf.com(端口443/7001),金税盘服务器地址为:kdsw.szhtxx.com,具体参数需根据开票软件版本自动匹配或手动配置,2026年广州税控盘服务器地址核心配置解析主流税控设备服务器参数对照在全面数字化的电子发票推进背景下……

    2026年4月29日
    6000
  • 详情页图片懒加载如何缓解回源带宽,有哪些方法?

    详情页图片懒加载缓解回源带宽的核心,是减少那些“用户根本不会滚动到、却依然从源站拉取”的无效图片请求,多数长详情页因此能砍掉相当一部分无谓回源流量,图片懒加载对服务器带宽的影响,为什么被多数人低估回源带宽的消耗往往不像页面加载时间那样直观,页面慢了你能感觉到,但源站带宽被打满,通常是账单出来或高峰时段报错时才发……

    2026年9月9日
    300
  • 为什么玩CF总是连接服务器失败,怎么解决

    玩CF总是连接服务器失败,绝大多数情况是本地网络环境与游戏服务器之间的连通性问题,并非游戏本身或账号故障,通过系统性排查网络链路即可解决,CF连接服务器失败的常见原因(从内到外逐一排查)遇到“连接服务器失败”提示时,先别急着甩锅给游戏本体,这个问题通常涉及三个层面:你的本地网络、中间传输链路、以及游戏服务器状态……

    2026年8月24日
    1500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注