ActiveMQ笔记(5):JMX监控

简介: 系统上线运行后,及时监控报警是很必要的手段,对于ActiveMQ而言,主要监控的指标有:MQ本身的健康状况、每个队列的生产者数量、消费者数量、队列的当前消息数等。 ActiveMQ支持JMX监控,使用步骤如下: 一、修改conf/activemq.

系统上线运行后,及时监控报警是很必要的手段,对于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中查到 

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
5月前
|
消息中间件 监控 Java
使用 JMX 监控 Kafka 集群性能指标
使用 JMX 监控 Kafka 集群性能指标
629 1
|
监控 Java API
JMX介绍及简单使用
Java Management Extensions(JMX)是Java平台中一个重要的管理和监控技术,通过使用JMX,开发人员可以轻松地实现对Java应用程序进行监控和管理。本文将介绍JMX的基本概念、架构及其在Java应用程序中的使用方法。
484 0
|
运维 监控 Java
【运维知识进阶篇】Zabbix5.0稳定版详解8(Zabbix监控Java项目+详解JMX与Zabbix-Java-Gateway原理+详解监控Java项目流程原理)
【运维知识进阶篇】Zabbix5.0稳定版详解8(Zabbix监控Java项目+详解JMX与Zabbix-Java-Gateway原理+详解监控Java项目流程原理)
478 0
|
监控 Java 应用服务中间件
zabbix配置jmx监控java应用
zabbix配置jmx监控java应用
641 0
zabbix配置jmx监控java应用
|
监控 Java 网络安全
JMX监控zookeeper
JMX监控zookeeper
7224 0
|
监控 Cloud Native 搜索推荐
ELK日志采集及管理,SpringBoot+log4j2整合ELK
ELK日志采集及管理,SpringBoot+log4j2整合ELK
ELK日志采集及管理,SpringBoot+log4j2整合ELK
|
消息中间件 存储 监控
SpringBoot+kafka+ELK分布式日志收集
快速搭建ELK完成日志收集
9541 0
|
监控 应用服务中间件 Java
|
XML Java 应用服务中间件
|
监控 Java 应用服务中间件