RabbitMQ作为一个工业级的消息中间件,肯定是缺少不了监控的,RabbitMQ提供了WEB版的页面监控(访问地址:http://xxx.xxx.xxx.xxx:15672/,默认端口号是15672。需要有相关功能的前提是开启了:rabbitmqctl rabbitmq_management.

采用RabbitMQ提供的restful http api来做监控其实很简单,只需调用(比如HttpClient工具):http://server-ip:15672/api/nodes即可。也可以通过api来操作RabbitMQ进行添加删除的操作(GET,PUT,DELETE,POST)。

不管是通过HTTP API接口还是客户端,获取的数据都是为了提供监控视图之用,不过这一切都基于RabbitMQ服务运行完好的情况下。虽然可以通过某些其他工具或方法来检测RabbitMQ进程是否在运行(如:ps aux | grep rabbitmq),或者5672端口是否开启(如:telnet xxx.xxx.xxx.xxx 5672),但是这样依旧不能真正的评判RabbitMQ是否还具备服务外部请求的能力。这里就需要使用AMQP协议来构建一个Ping的检测程序,这个类似于TCP协议的Ping。当这个测试程序与RabbitMQ服务无法建立TCP协议层面的连接,或者无法构建AMQP协议层面的连接,亦或者构建连接超时时则可判定RabbitMQ服务处于异常状态而无法正常的为外部应用提供相应的服务。

确保RabbitMQ能够健康的运行还不足以让人放松警惕。考虑这样一种情况:小明为小张创建了一个队列并绑定了一个交换器,之后某人由于疏忽而阴差阳错的删除了这个队列而无人得知,最后小张在使用这个队列的时候就会报出“NOT FOUND”的错误。不止删除队列这一个方面,还有删除了一个交换;或者修改了绑定信息;亦或者是胡乱建立了一个队列绑定到现有的一个交换器中,同时又没有消费者订阅消费此队列,从而留下消息堆积的隐患等等都会对使用RabbitMQ服务的业务应用造成影响。所以对于RabbitMQ元数据的管理与监控也尤为重要。

元数据一致性检测程序可以通过/api/definitions的HTTP API接口获取集群的元数据信息,通过解析之后与数据库中的记录一一比对,查看是否有不一致的地方。元数据修正需慎之又慎,在整个系统修正逻辑完备之前,建议优先采用人工的方式,毕竟不一致的元数据仅占少数,人工修正的工作量并不太大。

RabbitMQ之监控(1) - 朱小厮的博客 - CSDN博客

RabbitMQ之监控(2) - 朱小厮的博客 - CSDN博客

RabbitMQ之监控(3) - 朱小厮的博客 - CSDN博客

RabbitMQ之监控的更多相关文章

  1. RabbitMQ Zabbix 监控

    RabbitMQ Zabbix 监控 参考: https://github.com/jasonmcintosh/rabbitmq-zabbix copy api.py list_rabbit_node ...

  2. 一个简单的java程序,用于RabbitMQ日志监控

    RabbitMQ的所有日志,都会发给topic类型的exchange “amq.rabbitmq.log”  routingKey 有 debug,info,waring,error.  如果接收所有 ...

  3. 使用Zabbix监控RabbitMQ

    一 应用场景描述 线上业务使用RabbitMQ作为消息队列中间件,那么作为运维人员对RabbitMQ的监控就很重要,本文就针对如何从头到尾使用Zabbix来监控RabbitMQ进行说明. 二 Rabb ...

  4. windows下RabbitMQ 监控

    RabbitMQ的监控很简单,网上也有很多资料,但是大都不详细,让人云里雾里,我这里详细总结下. RabbitMQ本身提供了一个web的监控页面,只需要简单的几部命令行就可以访问这个页面了. 1.打开 ...

  5. RabbitMQ学习之队列监控

    对于RabbitMQ的监控,除了服务器基本信息(硬盘.CPU.内存.IO等)以及MQ的进程和端口,我们也可以通过请求url访问管理API监控其集群和队列的情况.在Javaapi 3.6.0以后,cha ...

  6. 体验Rabbitmq强大的【优先级队列】之轻松面对现实业务场景

    说到队列的话,大家一定不会陌生,但是扯到优先级队列的话,还是有一部分同学是不清楚的,可能是不知道怎么去实现吧,其实呢,,,这东西已 经烂大街了...很简单,用“堆”去实现的,在我们系统中有一个订单催付 ...

  7. 分享 rabbitMQ入门详解

    原文地址http://blog.csdn.net/cugb1004101218/article/details/21243927 目录(?)[-] rabbitMQ说明文档 rabbitMQ是什么 消 ...

  8. Net分布式系统之四:RabbitMQ消息队列应用

    消息通信组件Net分布式系统的核心中间件之一,应用与系统高并发,各个组件之间解耦的依赖的场景.本框架采用消息队列中间件主要应用于两方面:一是解决部分高并发的业务处理:二是通过消息队列传输系统日志.目前 ...

  9. RabbitMq 技术文档

    RabbitMq 技术文档 目录 1 AMQP简介 2 AMQP的实现 3 RabbitMQ简介 3.1 概念说明 3.2 消息队列的使用过程 3.3 RabbitMQ的特性 4 RabbitMQ使用 ...

随机推荐

  1. IntelliJ Idea工具使用

    以前一直用eclipse/myeclipse开发,最近因为需要学习了intelliJ Idea工具,感觉真的挺好用的..好用的东西就要掌握加以利用,特写一篇简单的总结(只写大体). 一,什么是Inte ...

  2. 安装 Android Studio

    安装 Android Studio 只需轻松点击几下.(您需要已下载 Android Studio.) 若使用 JDK 1.8,在 Mac 系统上运行 Android Studio 可能出现一些已知的 ...

  3. DATEADD 和 CAST 函数

    where cast(soh.orderdate as date)=cast(dateadd(day,-1,getdate()) as date) 这一代码在sql 2005 不适用,使用conver ...

  4. 写入CSS的3种方式

    CSS能让网页制作者有效的定制.改善网页的效果. CSS是对HTML的补充(网页设计师曾经为无法很好的控制页面的显示效果而倍感苦恼,CSS的出现解决了这个问题) CSS实现了网页内容和页面效果的彻底分 ...

  5. zk键值数据结构

    首先看一张zk官网上的图: zk为我们提供了一种类似于文件存储的树形数据结构,那么它是如何实现的呢? 先假定我们有一个map,以路径名作为键,以节点作为值,如下: “/” -> 节点1,“/ap ...

  6. 简话Angular 05 Angular表单验证

    一句话: 可以使用所有html5表单验证功能,同时Angular还增强了部分验证,支持动态验证 1. 上源码 <div ng-controller="ExampleController ...

  7. python中的对象

    一.python对象 python使用对象模型来存储数据.构造任何类型的值都是一个对象. 所有python对象都拥有三个特性:身份.类型.值 身份:每个对象都有一个唯一的身份标识自己,任何对象的身份可 ...

  8. en_o out1

    1● o əʊ ɒ ə ɔː ʌ ʊ:     2● oor ʊə ɔː   3● oo u u:     4● or ɜː ə ɔː   5● oar ore ɔː   6● ow   əʊ aʊ ...

  9. sha256 in C language

    sha256.h #ifndef _SHA256_H#define _SHA256_H #ifndef uint8#define uint8 unsigned char#endif #ifndef u ...

  10. 我的一起开源网 www.17ky.net上线了

    .net开源生态的落后,使得.net开发人员所拥有的开源资源比其他语言的开发者少了很多,这也使得笔者很早之前就喜欢收集各种开源项目,经常会去逛codeplex,开源中国社区等网站,同时也喜欢在自己或公 ...