- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章通过Tomcat开启JMX监控的方法图解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
搭建模拟环境: 操作系统:centos7 内存:1g jdk:1.8.0_131 tomcat:8.0.48 。
环境准备我们这里就不直接演示了,直接配置tomcat的jmx 。
1、进入到tomcat的bin目录下 。
# cd /opt/tomcat/apache-tomcat-8.0.48/bin/ 。
2、编辑配置文件 。
# vim catalina.sh 。
3、在下图中上面添加参数 。
参数添加后的样子 。
3.1、此配置连接jmx不需要账号密码: 。
1
2
3
4
5
6
|
catalina_opts="$catalina_opts
-dcom.sun.management.jmxremote
-djava.rmi.server.hostname=192.168.100.117
-dcom.sun.management.jmxremote.port=9999
-dcom.sun.management.jmxremote.ssl=false
-dcom.sun.management.jmxremote.authenticate=false"
|
配置后的截图:
参数说明:
hostname:是监控tomcat所在服务器的ip地址 。
jmxremote.port:端口号,是要开启的监控端口号 。
jmxremote.ssl:是否要开启ssl连接 。
authenticate:false表示监控不需要用户和密码 。
3.2、需要配置用户名、密码: 。
1
2
3
4
5
6
7
8
|
catalina_opts="$catalina_opts
-dcom.sun.management.jmxremote
-djava.rmi.server.hostname=192.168.100.117
-dcom.sun.management.jmxremote.port=9999
-dcom.sun.management.jmxremote.ssl=false
-dcom.sun.management.jmxremote.authenticate=true
-dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
-dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"
|
配置后的截图:
参数说明:
authenticate:为true开启账号验证 。
access.file:权限文件路径 。
password.file:密码文件路径 。
3.3、当没有配置密码验证的时候,不需要此步操作,当启用用户、密码验证后需要操作此步骤 。
3.3.1、找到jdk安装目录 。
如果不知道安装到目录那个地方可以通过命令查找:
# java -verbose 。
3.3.2、切换到jdk目录中 。
进入# cd jre/lib/management/ 。
在文件目录下会有jmxremote.access jmxremote.password.template文件,拷贝到tomcat的conf目录下 。
# cp jmxremote.* /opt/tomcat/apache-tomcat-8.0.48/conf/ 。
3.3.3、修改jmxremote.access文件 。
3.3.4、重命名密码文件:
# mv jmxremote.password.template jmxremote.password 。
3.3.5、编辑密码文件 。
# vim jmxremote.password 。
3.3.6、编辑完文件后,要修改access文件和password文件权限,不然tomcat启动不起来 。
# chmod 600 jmxremote.* 。
4、启动tomcat 。
1
2
3
4
5
6
7
|
[root@ha bin]# ./startup.sh
using catalina_base: /opt/tomcat/apache-tomcat-8.0.48
using catalina_home: /opt/tomcat/apache-tomcat-8.0.48
using catalina_tmpdir: /opt/tomcat/apache-tomcat-8.0.48/temp
using jre_home: /usr
using classpath: /opt/tomcat/apache-tomcat-8.0.48/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-8.0.48/bin/tomcat-juli.jar
tomcat started.
|
4.1、做完上面操作,使用jdk自带的jvisualvm.exe连接,可以在windows下测试 。
双击打开jmx连接 。
4.2、重启tomcat,测试jmx是否还可以连接上 。
# ./shutdown.sh 。
4.2.1、再次连接jmx查看是否可以连接上 。
数据监控图都查看不了,连接不上 。
为什会出现这个问题?
网上给出的结论是:
tomcat的jmx远程健康是需要两个端口,一个是注册端口,一个是服务端口,之前配置指定的9999端口是注册端口,tomcat在启动的时候会随机指定一个服务端口,由于我们注册端口只有一个,所以在重启服务后,注册端口没有变化,服务端口已经变了,再次通过注册端口连接已经连接不上之前的服务端口了,没有办法指定服务端连接,服务端口是随机的.
有一种方法是设置jmx固定的注册端口和服务端口,通过jar包实现 。
5、登录tomcat官网(注意,我的tomcat版本是1.8.0的官网上只有1.8.5的也可以使用) 。
网址:
根据自己的tomcat版本找到jmx remote jar 。
6、把下载下来的上传到tomcta的lib目录下 。
获取jar包的连接也可以直接wget到lib目录下 。
# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/extras/catalina-jmx-remote.jar 。
7、编辑tomcat的conf目录下的server.xml文件 。
# vim server.xml 。
添加下面内容: 。
1
2
|
<listener classname="org.apache.catalina.mbeans.jmxremotelifecyclelistener"
rmiregistryportplatform="10001" rmiserverportplatform="10002" />
|
8、编辑tomcat的bin目录下catalina.sh 。
# vim catalina.sh 。
删除参数:
-dcom.sun.management.jmxremote.port=9999 。
9、重启tomcat测试,jmx注册端口为10001,服务端口为10002 。
10、重启tomcat再次连接测试 。
当我们双击之前创建的jmx远程连接的时候会发现也连接不上,这是为什么呢,这里我们要注意上面连接中的pid号,经过查询,我们发现这个pid号就是linux中tomcat的pid号,当我们重启tomcat后,会产生新的pid号,所以我们想要连接就要新建一个连接 。
11、我们再次新建jmx连接的时候会获取新的pid号 。
12、到这里我们就测试成功了,这样在我们使用zabbix使用jmx监控tomcat的时候就不用担心tomcat重启jmx端口连接不上了 。
总结 。
以上所述是小编给大家介绍的通过tomcat开启jmx监控的方法图解,希望对大家有所帮助! 。
原文链接:https://www.cnblogs.com/yangzhaon/p/12102794.html 。
最后此篇关于通过Tomcat开启JMX监控的方法图解的文章就讲到这里了,如果你想了解更多关于通过Tomcat开启JMX监控的方法图解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我可以知道应用程序开发人员通常对使用 JMX 感兴趣的典型指标是什么,除了: CPU 使用率 内存消耗 尼古拉斯 最佳答案 我会补充: 类加载器行为 线程 关于jmx - 来自 JMX 的有趣指标,我
是否可以从命令行使用 JMX 在 linux (CentOS) 上运行的进程上获取服务器堆转储? 无法打开 VisualVM,无法安装jmap 最佳答案 可以用这个简单的代码来完成: import c
我必须根据数据库中的条目对 JMX 客户端进行身份验证。因此,我编写了一个自定义的 JMXAuthenticator 实现。 启动我的应用程序时,我可以通过“本地进程”使用 JConsole 访问 M
对于我即将发表的学士论文,我想开发一个工具,从 Apache Flink 收集系统和应用程序数据,并将这些数据以某种“事件”的形式发送到另一个系统。该工具将安装在 Flink 作业和任务管理器节点上。
我正在尝试将 jconsole 连接到通过以下方式调用的 jvm: java \ -Djava.util.logging.config.file=./logging.properties \ -Dco
在 JConsole 中查看 JMX bean 时,它将给定域部分下的所有 bean 呈现为层次结构。 (JVisualVM 与 JConsole MBeans 插件具有相同的行为。) 我意识到 JM
如何配置 CACTI 以监控来自 JMX 的值? 最佳答案 http://forums.cacti.net/post-197459.html有一个很好的教程,介绍如何设置 Cacti 以使用 jmx4
我正在尝试使用 jmx_exporter java 代理( https://github.com/prometheus/jmx_exporter )进行模式匹配和命名普罗米修斯指标。 关于如何在处理
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
看来我过去从来没有让这个工作过。目前,我知道它不起作用。 但是我们启动了 Java 进程: -Dcom.sun.management.jmxremote -Dcom.sun.management.jm
我想知道,我们有没有让开发更容易的框架/库?例如,Apache Mina 或 Netty 使 NIO 编程更容易。 听说过Spring JMX、MX4J,是不是很好用? 最佳答案 我为此使用了 Spr
我正在尝试编写一个应用程序监控工具,我遇到了两个标准,JPDA 和 JMX。他们似乎和我有些相似。有什么不同? 最佳答案 JPDA用于调试 和 JMX用于监控。如果您正在开发监控工具 - 选择是显而易
我已将 jmxtrans 配置为从 "kafka.server":type="BrokerTopicMetrics",name="AllTopicsMessagesInPerSec" 获取值 它有 3
所以我有一个运行 Apache Kafka(测试)的 EC2 服务器。它具有用于 JMX 和 EC2 安全设置的端口 9111,以打开该端口。 我试图在我的 Mac 上运行 JConsole 来读取该
如何将 JMX 指标发送到 statsD 守护进程?我可以看到有一些解决方案,其中有用于轮询 JMX 指标的插件,但我希望更多地将指标推送到一些守护进程,这些守护进程可以聚合并将其存储在某些存储中,例
我想在 tomcat7-maven-plugin 上启用 JMX。如何将 CATALINA_OPTS 传递给插件配置? 最佳答案 两种可能的解决方案(未测试): 在 MAVEN_OPTS 中添加 sy
有没有类似于 Spring JMX 导出器的东西 没有 使用 Spring 框架? SimpleJMX似乎是合理的,但似乎也是一个非常年轻的框架,只有一个人插入。 我需要将一大堆属性、方法和类公开为
我想提取这些数据http://code.google.com/p/memcached-session-manager/wiki/JMXStatistics通过 jmx 但仅使用命令行。 这是因为这是进
当我尝试运行我的应用程序时,出现上述错误。我确信这与我从 log4j 更新到 log4j2 有关,因为如果我不引用 log4j2.xml 文件,错误就会消失。 为什么我会收到此错误? 这是完整的堆栈跟
这与 JMS 和 JMS 提供者的情况类似吗?或者我可以在没有应用程序服务器和 JMX 提供程序的情况下使用 JMX 吗? 最佳答案 绝对是的。 JMX 是标准 JavaSE6 API 的一部分。每个
我是一名优秀的程序员,十分优秀!