系统上线运行后,及时监控报警是很必要的手段,对于ActiveMQ而言,主要监控的指标有:MQ本身的健康状况、每个队列的生产者数量、消费者数量、队列的当前消息数等。

ActiveMQ支持JMX监控,使用步骤如下:

一、修改conf/activemq.xml

<broker … useJmx="true”>
<managementContext>
<managementContext createConnector="true" connectorPort=“jmx端口号” connectorHost=“本机ip地址" />
</managementContext>
</broker>

二、设置jmx.access、jmx.password的文件权限

chmod 400 conf/jmx.*

(即:将jmx.password, jmx.access这二个文件设置成只读权限,activemq出于安全考虑,要求这二个文件只读)

三、修改bin\activemq 启动shell脚本

找到invoke_start(){ 这段,然后在前面插入:

ACTIVEMQ_CONF=“jmx.password所在位置的物理路目录"
ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=端口号 "
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_CONF}/jmx.password"
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_CONF}/jmx.access"
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.ssl=false"

然后重启activemq即可。

然后在jconsole中,可以输入 ip地址:jmx端口号

 

其中username,password即jmx.password中定义的用户名和密码。

四、 spring中使用JMX

    <bean class="org.springframework.jmx.support.MBeanServerConnectionFactoryBean" id="mbeanServerConnection1">
<property name="serviceUrl" value="${mq_jmx_url1}"/>
<property name="connectOnStartup" value="false"/>
<property name="environment">
<props>
<prop key="java.naming.security.principal">
${mq_jmx_user1}
</prop>
<prop key="java.naming.security.credentials">
${mq_jmx_passwor1}
</prop>
</props>
</property>
</bean>

其中serviceUrl的值类似:service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi

参考示例:

private List<ActiveMQData> getMonitorDataList(MBeanServerConnection conn, String objectName) {
List<ActiveMQData> datas = new ArrayList<>();
try {
ObjectName objRootName = new ObjectName(objectName); String brokerName = (String) conn.getAttribute(objRootName, "BrokerName");
String brokerId = (String) conn.getAttribute(objRootName, "BrokerId");
String openWireUrl = (String) conn.getAttribute(objRootName, "OpenWireURL"); //健康状态
ObjectName healthObjName = new ObjectName(objectName + ",service=Health");
String healthStatus = (String) conn.getAttribute(healthObjName, "CurrentStatus"); //遍历队列
ObjectName[] objectNames = (ObjectName[]) conn.getAttribute(objRootName, "Queues");
Arrays.sort(objectNames); List<String> blackList = monitorConfig.getQueueBlackList();
for (ObjectName queueName : objectNames) {
...
Long queueSize = (Long) conn.getAttribute(queueName, "QueueSize");//队列消息数量
Long producerCount = (Long) conn.getAttribute(queueName, "ProducerCount");//生产者数量
Long consumerCount = (Long) conn.getAttribute(queueName, "ConsumerCount");//消费者数量
Long enqueueCount = (Long) conn.getAttribute(queueName, "EnqueueCount");//入队消息总数
Long dequeueCount = (Long) conn.getAttribute(queueName, "DequeueCount");//出队消息总数
...
}
} catch (Exception e) {
...
} return datas;
}

其中objectName值,可以在jconsole中查到 

ActiveMQ笔记(5):JMX监控的更多相关文章

  1. ActiveMQ笔记(7):如何清理无效的延时消息?

    ActiveMQ的延时消息是一个让人又爱又恨的功能,具体使用可参考上篇ActiveMQ笔记(6):消息延时投递,在很多需要消息延时投递的业务场景十分有用,但是也有一个缺陷,在一些大访问量的场景,如果瞬 ...

  2. Tomcat调优及JMX监控

    Tomcat调优及JMX监控 实验背景 ====================================================== 系统版本:CentOS release 6.5 ( ...

  3. Jetty服务器jmx监控

    Jetty服务器jmx监控 Jetty 服务器增加jmx,jmx-remote模块 1.修改对应jetty服务器的配置文件start.ini追加如下两行–module=jmx–module=jmx-r ...

  4. zabbix监控tomcat(使用jmx监控,但不使用系统自带模版)

    一,zabbx使用jmx监控tomcat的原理分析 1.Zabbix-Server找Zabbix-Java-Gateway获取Java数据 2.Zabbix-Java-Gateway找Java程序(j ...

  5. zabbix使用jmx监控tomcat

    zabbix监控Tomcat/JVM实例性能(115) – 运维生存时间http://www.ttlsa.com/zabbix/zabbix-use-jmx-monitor-tomcat/ zabbi ...

  6. Linux记录-JMX监控JAVA进程

    3.修改xxx.sh 加入export JAVA_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.mana ...

  7. Linux记录-JMX监控Tomcat上传到falcon

    1.登录测试服务器xxxxxx xxxxxx su root输入xxxx 2.先修改Tomcat的启动脚本,(linux下为catalina.sh),添加以下内容: CATALINA_OPTS=&qu ...

  8. Tomcat开启JMX监控 visualvm

    Tomcat开启JMX监控 https://blog.csdn.net/dongdong2980/article/details/78476393

  9. 服务器开启JMX监控

    JMX是一个框架,提供了一种功能,可以实时查询应用程序中通过JMX向外部公布的相应参数或者是其他应用程序,同时也可以通过JMX来实时地调用应用程序使用JMX向外部公布的接口,来完成一些功能操作. 如果 ...

随机推荐

  1. Linux同平台数据库整体物理迁移

    Linux同平台数据库整体物理迁移 需求:A机器不再使用,要将A机器的Oracle迁移到B机器. 之前写过类似需求的文章:http://www.cnblogs.com/jyzhao/p/3968504 ...

  2. 从零自学Hadoop(20):HBase数据模型相关操作上

    阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  3. 基于傅里叶变换和PyQt4开发一个简单的频率计数器

    小学期的<信号与系统>课,要求写一个频率计数器,下面是我个人理解的频率计数 傅里叶变换的代码: # coding=utf-8 import numpy as np from scipy.i ...

  4. .NET之全平台一体化的体验

    一.前言 近来利用空闲时间研究了一下Xamarin的技术,想想既然提供了如此好的支持,就该尝试一切可能,来一个”大小通吃“. 何为全平台:APP包括Android.IOS.WP,WEB可在Window ...

  5. 设计模式(十三)代理模式(Proxy Pattern)

    一.引言 在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,让代 ...

  6. 超小Web手势库AlloyFinger原理

    目前AlloyFinger作为腾讯手机QQ web手势解决方案,在各大项目中都发挥着作用. 感兴趣的同学可以去Github看看:https://github.com/AlloyTeam/AlloyFi ...

  7. IIS服务器和xampp中的appche服务器端口冲突解决办法

    今天在启动xampp中的appche的时候,发现以前能起来的现在起不来了.想到可能是最近配置的系统自带的IIS服务器把appche的端口给占用了. (appche和iis的默认端口号都是:80:) 问 ...

  8. SharePoint2016如何使用策略进行文档归档

    前言 最近项目用户需要提供文档按照日期或标题关键字进行对应的文档归档操作,为了实施这个操作,需要准备2个文档库,我这里准备了如下文档库: 1. 测试文档库:在测试文档中上传几篇文档,如下图: 2. 我 ...

  9. SYN Flood测试

    由于工作需要对公司进行SYN Flood测试,在网上查了些资料,Youtube上找到最多的方法就是hping3工具来实现, 该工具已经预装在Kali下,具体操作用一条命令即可实现. hping3 -S ...

  10. Oracle使用java source调用外部程序

    需求 Oracle调用第三方外部程序.Oracle使用sqluldr2快速导出大批量数据,然后用winrar压缩后发送邮件. 本文档主要实现前两步需求,发送邮件程序这里不再说明. 原码 授权 begi ...