Overview

1. Totals (全局统计)

这部分展示了整个 RabbitMQ 服务集群的汇总信息

  • Queued messages (last minute): 显示在过去一分钟内,所有队列中待处理的消息总数。这是一个非常重要的指标,反映了消息积压情况。如果这个数字持续增长,说明消费者处理能力跟不上生产者发送速度,可能需要扩容消费者或优化消费逻辑。

  • Message rates (last minute): 显示在过去一分钟内,消息的生产速率和消费速率。这可以帮助你了解消息的流动情况,判断系统是否处于健康状态。

  • Global counts: 这是一个非常直观的汇总面板,显示了当前集群中:

    • Connections: 客户端(你的应用)与 RabbitMQ 建立的 TCP 连接数。

    • Channels: 在一个 Connection 内部建立的虚拟通道数。一个 Connection 可以包含多个 Channel,Channel 是进行消息操作的基本单位。

    • Exchanges: 交换器(消息路由规则)的总数。

    • Queues: 队列(存储消息的地方)的总数。

    • Consumers: 消费者(从队列拉取消息的应用)的总数。

2. Nodes (节点详情)

这部分展示了集群中每个节点的详细运行状态。RabbitMQ 可以是单节点部署,也可以是集群。这里显示的是名为 rabbit@rabbit 的节点。

  • Name: 节点的名称。rabbit@rabbit 是默认的命名方式,其中 rabbit 是主机名。

  • File descriptors: 文件描述符。Erlang 虚拟机(RabbitMQ 基于它构建)使用的文件句柄数量。如果这个数字接近系统限制(如 ulimit -n),RabbitMQ 可能会因无法打开新文件而崩溃。绿色条表示正常。

  • Socket descriptors: 套接字描述符。用于网络通信的文件描述符数量。同样,过高可能意味着网络连接过多。

  • Erlang processes: Erlang 进程数。RabbitMQ 内部使用大量轻量级进程来处理任务。这个数字通常在几百到几千之间波动是正常的。

  • Memory: 内存使用量。显示当前节点占用的内存。绿色条表示内存使用在正常范围内。如果接近红色区域,说明内存压力大,可能需要关注。

  • Disk space: 磁盘空间。显示 RabbitMQ 数据目录(/var/lib/rabbitmq)的可用空间。如果过低,RabbitMQ 会拒绝接收新消息以防止磁盘写满。

  • Uptime: 运行时间。显示该节点已经运行了多久。

  • Cores: 该节点所在的物理或虚拟 CPU 核心数。

  • Info: 显示节点的详细信息类型(basicrss)。

  • Reset stats: 重置统计信息按钮。

  • This node / All nodes: 切换显示当前节点还是所有节点的统计信息。

3.Churn statistics (动态统计)

RabbitMQ 在过去一分钟内,核心组件的创建和销毁操作速率。这些指标对于理解系统的动态变化稳定性至关重要。

  1. Connection operations (连接操作)

    • 图表内容: 展示了客户端连接(Connection)的创建和关闭速率。

    • 指标解读:

      • Created (黄色): 每秒新建立的连接数。如果这个值很高,可能意味着客户端频繁地重新连接,这可能是由网络不稳定或客户端配置问题(如连接超时)引起的。

      • Closed (蓝色): 每秒关闭的连接数。通常,这个值应该与 Created 值接近,表示连接正常生命周期结束。如果 Closed 远大于 Created,可能意味着连接被异常断开。

    • 当前状态: 图表显示在过去一分钟内,这两个操作速率都为 0.00/s,表明系统目前没有连接活动。

  2. Channel operations (通道操作)

    • 图表内容: 展示了在连接内部创建和关闭通道(Channel)的速率。

    • 指标解读:

      • Created (黄色): 每秒新创建的通道数。通道是轻量级的,通常一个连接会创建多个通道。如果这个值异常高,可能意味着客户端在频繁地创建和销毁通道,可能存在资源泄漏或设计问题。

      • Closed (蓝色): 每秒关闭的通道数。

    • 当前状态: 同样,这两个值都为 0.00/s,系统处于空闲状态。

  3. Queue operations (队列操作)

    • 图表内容: 展示了队列(Queue)的声明、创建和删除速率。

    • 指标解读:

      • Declared (黄色): 每秒声明的队列数。声明队列是一个相对昂贵的操作,通常在应用启动时进行。如果这个值持续很高,可能意味着应用在运行时动态创建了大量临时队列,或者存在配置错误。

      • Created (蓝色): 每秒实际创建的队列数(声明成功后)。

      • Deleted (红色): 每秒删除的队列数。高删除速率可能意味着临时队列被频繁使用和清理。

    • 当前状态: 所有操作速率都为 0.00/s,没有队列操作发生。

系统稳定性的“晴雨表”。在正常情况下,这些值应该相对稳定且较低。如果 ConnectionChannel 的创建/关闭速率突然飙升,或者 Queue 的声明/删除速率异常,这通常是问题出现的前兆,需要立即调查客户端代码或网络状况。

4.Ports and contexts (端口与上下文)

RabbitMQ 服务器监听的端口以及Web 管理接口的配置,这对于网络配置和故障排查非常有用。

  1. Listening ports (监听端口)

    • 表格内容: 列出了 RabbitMQ 服务器正在监听的网络端口及其对应的协议。

    • 指标解读:

      • amqp: 默认的 AMQP 0-9-1 协议端口,5672。这是你的应用程序(生产者/消费者)连接 RabbitMQ 的主要端口。

      • clustering: 用于节点间通信的端口,25672。如果你部署了 RabbitMQ 集群,这个端口用于节点间的数据同步和心跳。

      • http: 默认的 HTTP 管理接口端口,15672。这是你访问管理界面的端口。

      • http/prometheus: 用于 Prometheus 监控的端口,15692。如果你的监控系统使用 Prometheus,它会通过这个端口拉取指标数据。

    • 当前状态: 所有端口都正常监听,Bound to 列显示为 ::,表示监听所有网络接口(IPv4 和 IPv6)。

  2. Web contexts (Web 上下文)

    • 表格内容: 展示了 Web 管理界面的具体配置。

    • 指标解读:

      • Context: Web 服务的上下文名称。

      • Bound to: 绑定的 IP 地址(0.0.0.0 表示监听所有 IPv4 地址)。

      • Port: 端口号。

      • SSL: 是否启用 SSL 加密(图中未启用)。

      • Path: Web 服务的根路径(/)。

    • 当前状态: 管理界面(RabbitMQ Management)和 Prometheus 接口(RabbitMQ Prometheus)都配置在根路径 /,并监听在各自的端口上。

  3. Export/Import definitions (导出/导入定义)

    • 功能: 这两个功能允许你将整个 RabbitMQ 的配置(包括交换器、队列、绑定、用户、权限等)导出为一个文件,或者从一个文件导入。

    • 用途: 这对于环境迁移、灾备恢复或快速部署非常有用。你可以将生产环境的配置导出,然后在测试或新环境中导入,确保环境一致性。

    • 当前状态: 界面显示了导出文件的默认命名格式和上传文件的入口。

这张图是网络配置的“地图”。你需要确保这些端口在防火墙中是开放的,并且没有被其他服务占用。Export/Import definitions 功能是运维自动化和标准化的关键工具。