JConsole远程监控配置

article/2025/9/21 2:38:40

 

首先,看本机(Windows)安装了JRE没

Win 》 CMD 打开命令窗口

如有安装,则会显示以下版本信息;若没有显示,就安装吧

1 C:\Users\Administrator>java -version
2 java version "1.8.0_111"
3 Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
4 Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

 

1)在Windows命令窗口直接命令打开JConsole

1 C:\Users\Administrator>jconsole

 

 2)抱着碰运气的心理尝试连接一下,结果,连接失败

 

 看来没法偷懒,还是得配置才行,那就来吧

 

 需要的信息:

  • Linux 服务器的root账号及密码
  • 项目Tomcat路径,一般是:/usr/local/tomcat/tomcat_jdt

 1、先来看一下项目的相关信息

复制代码

 1 [root@test1 bin]# cd /usr/local/tomcat/tomcat_jdt/bin2 [root@test1 bin]# ./version.sh3 Using CATALINA_BASE:   /usr/local/tomcat/tomcat_jdt4 Using CATALINA_HOME:   /usr/local/tomcat/tomcat_jdt5 Using CATALINA_TMPDIR: /usr/local/tomcat/tomcat_jdt/temp6 Using JRE_HOME:        /usr/local/jdk1.7.0_797 Using CLASSPATH:       /usr/local/tomcat/tomcat_jdt/bin/bootstrap.jar:/usr/local/tomcat/tomcat_jdt/bin/tomcat-juli.jar8 Server version: Apache Tomcat/7.0.689 Server built:   Feb 8 2016 20:25:54 UTC
10 Server number:  7.0.68.0
11 OS Name:        Linux
12 OS Version:     2.6.32-431.el6.x86_64
13 Architecture:   amd64
14 JVM Version:    1.7.0_79-b15
15 JVM Vendor:     Oracle Corporation

复制代码

2、通过配置Tomcat项目来开启远程监控

3、打开Tomcat项目bin目录

1 [root@test1 ~]# cd /usr/local/tomcat/tomcat_jdt/bin/
2 [root@test1 bin]# pwd
3 /usr/local/tomcat/tomcat_jdt/bin

 4、编辑 catalina.sh 文件

1 [root@test1 bin]# vi catalina.sh

 5、找到这么一句:# ----- Execute The Requested Command -----------------------------------------

并在其上方加入以下配置(配置的描述说明自己度娘)

1 JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=17.19.0.23 -Dcom.sun.management.jmxremote.port=9070 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

17.19.0.23 是服务器的IP

9070是新的端口,jconsole专用

 

6、完成后大致如下

复制代码

 1 …2 3 # org.apache.catalina.security.SecurityListener4 5 #JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"6 7 JAVA_OPTS="$JAVA_OPTS -Ddt.base=/usr/local/tomcat/config_dt -Xmx1500m -Xms512m -XX:PermSize=1024M -XX:MaxPermSize=1600m"8 9 JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=17.19.0.23 -Dcom.sun.management.jmxremote.port=9070 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
10 
11  
12 
13 # ----- Execute The Requested Command -----------------------------------------
14 
15 …

复制代码

7、OK,配置就完成了;

8、一般情况下,项目配置修改后都是需要重启才生效的;

9、关闭项目Tomcat,结果报错

复制代码

1 [root@test1 bin]# ./shutdown.sh
2 Using CATALINA_BASE:   /usr/local/tomcat/tomcat_jdt
3 Using CATALINA_HOME:   /usr/local/tomcat/tomcat_jdt
4 Using CATALINA_TMPDIR: /usr/local/tomcat/tomcat_jdt/temp
5 Using JRE_HOME:        /usr/local/jdk1.7.0_79
6 Using CLASSPATH:       /usr/local/tomcat/tomcat_jdt/bin/bootstrap.jar:/usr/local/tomcat/tomcat_jdt/bin/tomcat-juli.jar
7 Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 9070; nested exception is:         java.net.BindException: Address already in use

复制代码

10、解决方法,直接杀掉Tomcat项目进程:kill -9 pid

11、再次执行 shutdown.sh 脚本,成功;

1 [root@test1 bin]# ./shutdown.sh

 

12、执行 startup.sh 启动脚本,项目启动成功;

1 [root@test1 bin]# ./startup.sh

 

 13、Windows下JConsole再连接,又失败

 

 

14、看catalina日志,又没报错。。。没方向了?

15、查一下9070端口,没启动!

1 [root@test1 bin]# netstat -an | grep 9070
2 
3 [root@test1 bin]#

 

16、查看一下防火墙有没有开

1 [root@test1 bin]# service iptables status

 

17、如有防火墙开着的,就将 9070 端口给开放了

1 [root@test1 bin]# vi /etc/sysconfig/iptables

 

18、修改 iptables 文件时需要注意的是 -A INPUT -m state --state NEW -m tcp -p tcp --dport 9070 -j ACCEPT 要放到端口 22 的下方

完成后大概是这样的

复制代码

 1 ...2 -A INPUT -p icmp -j ACCEPT3 -A INPUT -i lo -j ACCEPT4 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT5 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT6 -A INPUT -m state --state NEW -m tcp -p tcp --dport 9070 -j ACCEPT7 -A INPUT -j REJECT --reject-with icmp-host-prohibited8 -A FORWARD -j REJECT --reject-with icmp-host-prohibited9 COMMIT
10 ...

复制代码

 

  •  当然了,不管防火墙状态,更直接的方法是关了防火墙。。。
1 [root@test1 bin]# service iptables stop
2 iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
3 iptables: Flushing firewall rules:                         [  OK  ]
4 iptables: Unloading modules:                               [  OK  ]
5 [root@test1 bin]# service iptables status
6 iptables: Firewall is not running.

 

 19、再查一下hostname 及其IP地址,结果是:hostname: Unknown host

1 [root@test1 bin]# hostname
2 test1
3 [root@test1 bin]# hostname -i
4 hostname: Unknown host
5 [root@test1 bin]#

 

解决方法:将 hosts 中的 127.0.0.1 修改为服务器在局域网中的 IP,并将其指向 hostname(主机名)

1 [root@test1 bin]# vi /etc/hosts
2 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
3 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
4 …

修改后,长这样

1 17.19.0.23 localhost localhost.localdomain localhost4 localhost4.localdomain4 test1
2 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6…
3 …

 

 20、再次重启Tomcat项目,再查一下9070端口,已经在监听:

1 [root@test1 bin]# netstat -an | grep 9070
2 tcp        0      0 :::9070                     :::*                        LISTEN     

 

21、Windows下,JConsole再连接,成功

 

 

外篇:需要密码验证的配置

注:以下只列出关键步骤,未验证过

1、开启验证模式,并指定用户账号密码文件

1   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=172.19.0.203 -Dcom.sun.management.jmxremote.port=9070 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=/usr/local/jdk1.7.0_79/jre/lib/management/jmxremote.password"

 也有一说法,这个 jmxremote.access 权限设置文件也很重要,直接在 JAVA_OPTS 后面加上即可

1 -Dcom.sun.management.jmxremote.access.file=/usr/local/jdk1.7.0_79/jre/lib//management/jmxremote.access

2、找到配置修改账号密码的目录

复制代码

1 [root@test1 bin]# cd /usr/local/jdk1.7.0_79/jre/lib/management
2 [root@test1 management]# ll
3 total 28
4 -rw-r--r--. 1 uucp 143 3998 Apr 11 2015 jmxremote.access
5 -r--r--r--. 1 uucp 143 2856 Apr 11 2015 jmxremote.password.template
6 -rw-r--r--. 1 uucp 143 14097 Apr 11 2015 management.properties
7 -r--r--r--. 1 uucp 143 3376 Apr 11 2015 snmp.acl.template

复制代码

3、复制 jmxremote.password.template ,并新命名为 jmxremote.password

复制代码

1 [root@test1 management]# cp jmxremote.password.template jmxremote.password
2 [root@test1 management]# ll
3 total 32
4 -rw-r--r--. 1 uucp 143 3998 Apr 11 2015 jmxremote.access
5 -r--r--r-- 1 root root 2856 Mar 13 15:27 jmxremote.password
6 -r--r--r--. 1 uucp 143 2856 Apr 11 2015 jmxremote.password.template
7 -rw-r--r--. 1 uucp 143 14097 Apr 11 2015 management.properties
8 -r--r--r--. 1 uucp 143 3376 Apr 11 2015 snmp.acl.template

复制代码

4、给两个文件 jmxremote.access jmxremote.password 加上 600 权限

1 [root@test1 management]# chmod 600 jmxremote.access jmxremote.password

5、将 jmxremote.password 两行的注释去掉

1 [root@test1 management]# vi jmxremote.password
2 ...
3 # monitorRole QED
4 # controlRole R&D
5 ...

6、注释去掉后长这样:

1 ...
2 monitorRole QED
3 controlRole R&D
4 ...

7、配置完成,重启Tomcat 项目,在 JConsole 上连接时加上账号(monitorRole )密码(QED)

 

The End


http://chatgpt.dhexx.cn/article/OP5VE2Vl.shtml

相关文章

jconsole连接失败:是否重试?

背景 在学习使用jconsole的时候,按照大佬们的教程一步一步操作的,到了连接的时候却一直报这个错误,连接不上远程服务,百度了很久也没有相关的说明,都是让添加那些启动参数,问题是启动参数我早就添加了。。…

JConsole详解

一、JConsole是什么 从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。 二、如何启动JConsole 如…

Jconsole小记

今天在看jmeter相关的文章时,看到了这个,网上查看了一些相关的博客,虽然现在还不做性能方面的,先记录下来以便日后查看。 Jconsole,Java Monitoring and Management Console。 Jconsole是JDK自带的监控工具&#xff…

jconsole使用

目的: 为了检查一个经常会跑死的java程序,在网上查询了下, 觉得jconsole这个工具还不错,所以就部署了一把 一、服务器端部署 首先在服务器端,启动你要监控的java程序,我的启动脚本如下: /ho…

java jconsole_jconsole与jvisualvm

jvisualvm同jconsole都是一个基于图形化界面的、可以查看本地及远程的JAVA GUI监控工具,可以认为jvisualvm是jconsole的升级版,因此这里不再介绍jconsole,只介绍jvisualvm。jvisualvm是一个综合性的分析工具,可以认为其整合了jstack、jmap、jinfo等众多调试工具的功能,并以…

JConsole工具使用

转自:https://www.cnblogs.com/baihuitestsoftware/articles/6405580.html#top Jconsole,Java Monitoring and Management Console。Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它用于连接正在运行的本地或者远程的JVM&#xff…

Jconsole

JConsole有界面,能够比较方便地看到堆内存 \线程\类,以及JMX的变化. 线下环境中算是个不错的诊断工具. 那怎么操作呢? 十分简单, 本地的JDK安装路径中找到 jConsole.exe ,双击,填写远程JVM进程即可. 要注意: JConsole使用时要求远程JVM打开了 JMX 端口, JMX端口和服务端口是…

完全体,千字详解:“Java性能调优六大工具”之JConsole工具

JConsole工具是JDK自带的图形化性能监控工具。 通过JConsole工具, 可以查看Java应用程序的运行概况, 并监控堆信息、 永久区使用情况及类的加载情况等。 本文主要介绍JConsole工具的基本使用方法。 一,JConsole连接Java程序 JConsole程序在%JAVA_HOME%/bin目录下,启动…

JConsole使用教程

JConsole是一个Java虚拟机的监控和管理工具,可以监控Java应用程序的内存使用、线程和类信息等。 以下是JConsole的使用教程: 1.启动JConsole JConsole是一个Java自带的工具,可以在bin目录下找到jconsole.exe文件。双击运行该文件即可启动JC…

深入理解Java虚拟机——可视化监控工具(Jconsole)

目录 一、可视化监控工具(Jconsole)的作用二、可视化监控工具(Jconsole)的使用三、测试实例四、修改测试实例代码 一、可视化监控工具(Jconsole)的作用 内存监控线程监控 二、可视化监控工具(…

深入理解java虚拟机(十)JConsole:Java监视与管理控制台

文章目录 一、JConsole介绍二、启动JConsole三、内存监控四、线程监控结尾 一、JConsole介绍 JConsole( Java Monitoring and Management Console)是一款基于JMX( Java Manage-ment Extensions)的可视化监视、管理工具。它的主要…

使用JConsole观察分析Java程序的运行(转)

一、JConsole是什么 从Java 5开始 引入了JConsole。JConsole是一个内置Java性能分析器,可以从命令行或在GUI shell中运行。您可以轻松地使用JConsole(或者,它更高端的 “近亲” VisualVM )来监控Java应用程序性能和跟踪Java中的代码。 二、如何启动JConsole 如果是从命令行…

JConsole可视化工具介绍

JConsole 可视化工具介绍 一、 JConsole介绍 1.1 JConsole描述 Jconsole (Java Monitoring and Management Console),一种基于JMX的可视化监视、管理工具。 1.2 启动JConsole 点击JDK/bin 目录下面的jconsole.exe 即可启动然后会自动自动搜…

附加:PageHelper分页插件的:Page和PageInfo的区别;

说明: (1)为什么写本篇博客?: ● 在【Spring Boot电商项目29:商品分类模块八:后台的【分类列表(平铺)】接口;】中,实现分页功能时,使用…

JSP之page对象及其常用方法

JSP之page对象及其常用方法

java常用page分页对象,mysql查询

1.创建page对象 public class PageUtils {//当前页默认第一页private Integer page 1;//默认每页10条private Integer limit 10;//总数private Integer count;//开始行private Integer startRow;//结束行private Integer endRow;public PageUtils(){this.startRow (page - …

JSP page对象

JSP内置对象——page对象 一、page对象:是指指向当前JSP页面本身,有点像类中的this指针,它是java.long.Object类的实例。 二、常用方法如下:主要是Object类中声明的方法class getClass() 返回此Object的类 int hashCode() 返回此O…

玩转MyBatis-Plus分页插件一:分页基本使用+方法解释+解析Page对象

hello,我是X,已经快半年的时间没有写过博文了,这段时间里我成长了许多,现在趁着放暑假的功夫,好好的总结一下我上半年的知识储备,信息量较大,赶紧上车吧! 上车前晒一张后台系统分页的…

JSP的page对象

一 简介 page对象就是指向当前JSP页面本身&#xff0c;有点像类中的this指针&#xff0c;它是java.lang.Object类的实例。 二 常用方法 三 实例 <% page language "java" import "java.util.*" contentType "text/html; charsetutf-8" %&g…

6.Page对象详解

序 就好像用户看到的都是由dom表现出来的&#xff0c;所有的业务处理都是在Page对象中处理的。如果业务越简单&#xff0c;创建的Page对象数量就会越少&#xff1b;如果业务越复杂&#xff0c;那么相对而言Page对象数量就越多&#xff08;或Page实例对象就会越复杂&#xff09…