集群监控
RabbitMQ 扩展的 RabbitMQ Management 插件 就能提供一定的监控功能,Web 管理界面提供了很多的统计值信息 : 如发送速度、 确认速度、消费速度、消息总数、磁盘读写速度、句柄数 、 Socket 连接数、 Connection 数、 Channel 数、内存信息等
通过 HTTPAPI 接口提供监控数据
RabbitMQ Management 插件不仅提供了 一个优秀的 Web 管理界 面,还提供了盯TP API 接口以供调用 。
通过 http 方式获取 RabbitMQ 队列消息数量
RabbitMQ管理HTTP API-链接参考文档
RabbitMQ管理HTTP API
检测 RabbitMQ 服务是否健康
虽然可以通过某些其他工具或方法来检测 RabbitMQ 进程是否在运行(如 ps aux I grep rabbitmq) ,或者 5672 端口是否开启(如 telnet xxx.xxx . xxx . xxx 5672) ,但是这样依旧不能真正地评判 RabbitMQ 是否还具备服务外部请 求的能力。这里就需要使用 AMQP 协议来构建一个类似于 TCP 协议中的 Ping 的检测程序。当 这个测试程序与 RabbitMQ 服务无法建立 TCP 协议层面的连接,或者无法构建 AMQP 协议层面 的连接,再或者构建连接超时时,则可判定 RabbitMQ 服务处于异常状态而无法正常为外部应 用提供相应的服务
将做工程过程中重要的一些代码段收藏起来,下面代码段是关于python检测RabbitMQ的状态是否正常的代码。
元数据管理与监控
删除一个队列或交换器、或者修改了绑定信息、胡乱建立了一个队列绑定到现有交换器、没有消费者订阅消费此队列导致消息堆积
提供给业务方使用的用户只有可读和可写权限,收回配置权限
是 queues 、exchanges 和 bindings ,可以分别建立三张表。
- Table 1: 队列信息表,名称为 rmq_queues 。列名有 name 、 vhost 、 durable 、 auto_delete、 arguments 、 cluster_name 、 description ,其中 name、 durable 、 auto delete 、 arguments 可以参考 3.2.2 节中的内容 。 vhost 表示虚拟主机。 cluster_name 表示队列所在的集群名称,毕竟一般一个公司所用的RabbitMQ 集群井非 只有一个。 description 是相应的描述信息,相当于备注,通常可置为空 。
- Table 2: 交换器u信息表,名称为 rmq_exchanges 。列名有 name、 vhost 、 type、 durable 、 auto_delete , internal , arguments 、 cluster name 、 description 。 其中 name、 type 、 durable 、 auto delete 、 internal 、 arguments 可参考 3.2.1 节中的内容。 vhost 、 cluster 口ame 和 description 可参考 Table 10
- Table 3: 绑定信息表,名称为 rmq bindings 0 列名有 source、 vhost 、 destination 、destination_type 、 routing_key、 arguments 、 cluster_name 、 description。其中 source 、 vhost 、 destination 、 destination_type 、 routing_key 、 arguments 可以参考 3.2.3 节和 3.2.4节中的内容。 vhost 、 cluster name 和 description 可参考 Table 1。
元数据一致性检测程序可以通过 /api/definitions 的 HTTP API 接口获取集群的元数 据信息,通过解析之后与数据库中的记录一一 比对,查看是否有不一致的地方。