ActiveMQ笔记(5):JMX监控
系统上线运行后,及时监控报警是很必要的手段,对于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监控的更多相关文章
- ActiveMQ笔记(7):如何清理无效的延时消息?
ActiveMQ的延时消息是一个让人又爱又恨的功能,具体使用可参考上篇ActiveMQ笔记(6):消息延时投递,在很多需要消息延时投递的业务场景十分有用,但是也有一个缺陷,在一些大访问量的场景,如果瞬 ...
- Tomcat调优及JMX监控
Tomcat调优及JMX监控 实验背景 ====================================================== 系统版本:CentOS release 6.5 ( ...
- Jetty服务器jmx监控
Jetty服务器jmx监控 Jetty 服务器增加jmx,jmx-remote模块 1.修改对应jetty服务器的配置文件start.ini追加如下两行–module=jmx–module=jmx-r ...
- zabbix监控tomcat(使用jmx监控,但不使用系统自带模版)
一,zabbx使用jmx监控tomcat的原理分析 1.Zabbix-Server找Zabbix-Java-Gateway获取Java数据 2.Zabbix-Java-Gateway找Java程序(j ...
- zabbix使用jmx监控tomcat
zabbix监控Tomcat/JVM实例性能(115) – 运维生存时间http://www.ttlsa.com/zabbix/zabbix-use-jmx-monitor-tomcat/ zabbi ...
- Linux记录-JMX监控JAVA进程
3.修改xxx.sh 加入export JAVA_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.mana ...
- Linux记录-JMX监控Tomcat上传到falcon
1.登录测试服务器xxxxxx xxxxxx su root输入xxxx 2.先修改Tomcat的启动脚本,(linux下为catalina.sh),添加以下内容: CATALINA_OPTS=&qu ...
- Tomcat开启JMX监控 visualvm
Tomcat开启JMX监控 https://blog.csdn.net/dongdong2980/article/details/78476393
- 服务器开启JMX监控
JMX是一个框架,提供了一种功能,可以实时查询应用程序中通过JMX向外部公布的相应参数或者是其他应用程序,同时也可以通过JMX来实时地调用应用程序使用JMX向外部公布的接口,来完成一些功能操作. 如果 ...
随机推荐
- centos下MYSQL 没有ROOT用户的解决方法。
SbTest for using sysbench creating scritps: sysbench --test=oltp --oltp-table-size=100000 --mysql-db ...
- FFmpeg学习2:解码数据结构及函数总结
在上一篇文章中,对FFmpeg的视频解码过程做了一个总结.由于才接触FFmpeg,还是挺陌生的,这里就解码过程再做一个总结. 本文的总结分为以下两个部分: 数据读取,主要关注在解码过程中所用到的FFm ...
- ASP.NET Core 中文文档 第三章 原理(7)配置
原文:Configuration 作者:Steve Smith.Daniel Roth 翻译:刘怡(AlexLEWIS) 校对:孟帅洋(书缘) ASP.NET Core 支持多种配置选项.应用程序配置 ...
- 推荐几篇关于EF的好文章
文章作者 Julie Lerman 是 Microsoft MVP..NET 导师和顾问,住在佛蒙特州的山区.您可以在全球的用户组和会议中看到她对数据访问和其他 .NET 主题的演示.她的博客地址是 ...
- C# - Networkcomms
来自英国的用C#语言编写的开源的TCP/UDP网络通信框架,简单方便,性能稳定. 参考: NetworkComms官网: NetworkComms通信框架中文网: 介绍开源的.net通信框架: Ne ...
- Lind.DDD.SSO单点登陆组件的使用(原创)
回到目录 一般sso的说明 在Lind.DDD框架里,有对单点登陆的集成,原理就是各个网站去sso网站统一登陆授权,之后在sso网站将登陆的token进行存储,存储方式随你(cache,redis,m ...
- 建造者模式组装mybatis参数Example()
参考:github, https://github.com/liuxiaochen0625/MyBatis-Spring-Boot-master.git 从controller组装tk.mybat ...
- List Set Map
List Set 都是接口,都继承了Collection接口 ArrayList LinkList 直接实现了List接口 HashSet 实现了Set接口 TreeSet继承父类AbstractS ...
- 解决springmvc+mybatis+mysql中文乱码问题【转】
这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文 ...
- 【JS基础】
(function(){-})() ( function (){-} () ) 立即执行函数 在函数体后面加括号就能立即调用,其中这个函数必须是函数表达式,不能是函数声明 函数声明:function ...