本地win下JConsole监控远程linux下的JVM

环境:
服务器端: Linux + jdk1.7.0_75 + tomcat 7
本地: Win + jdk1.7.0_55

一、修改/etc/hosts文件

hostname -i 如果显示127.0.0.1时,修改/etc/hosts 将127.0.0.1替换成linux服务器的真实ip

二、修改 catalina.sh文件

vim  /usr/local/tomcat7**/bin/catalina.sh   #进入tomcat的bin目录下

在# OS specific support.  $var _must_ be set to either true or false.下增加

#JAVA_OPTS="-Dcom.sun.management.jmxremote.port=9008 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

三、修改jmxremote.access和jmxremote.password.template

cd /usr/java/jdk1.7.0_75/jre/lib/management

vim jmxremote.access

monitotRole 只读权限  随意添加一个用户xxxx    controlRole 读写权限,添加用户admin

#monitorRole   readonly
lisssss   readonly
#controlRole   readwrite admin   readwrite               create javax.management.monitor.*,javax.management.timer.*               unregister

mv jmxremote.password.template   jmxremote.password #重命名

chmod +w  jmxremote.password  #增加写权限

vim jmxremote.password   为只读用户和读写用户设置密码

# monitorRole  QED
lisssss 1234xx
# controlRole   R&D
admin 1234xx

四、打开本地jconsole,连接远程linux中jvm

1.打开jconsole

cmd----jconsole 或者双击C:\Program Files\Java\jdk1.7.0_55\bin下的jconsole.exe

2.连接远程linux中jvm

选择远程进程:远程服务器的ip:端口号  用户名、口令输入jmxremote.password中的用户名或密码---点击连接

jconsole监控成功如下图:

问题:监控后,关闭tomcat,报错:提示9008端口号被占用,原因在关闭tomcat时,也执行了Catalish中的jmxremote的端口号

[[email protected] bin]# ./shutdown.sh
/usr/local/tomcat7-java_shop/bin/catalina.sh: line 101: -agentpath:/opt/jprofiler7/bin/linux-x64/libjprofilerti.so=port=8080: No such file or directory
Using CATALINA_BASE:   /usr/local/tomcat7**
Using CATALINA_HOME:   /usr/local/tomcat7**
Using CATALINA_TMPDIR: /usr/local/tomcat7**/temp
Using JRE_HOME:        /usr/java/jdk1.7.0_75
Using CLASSPATH:       /usr/local/tomcat7-java_shop/bin/bootstrap.jar:/usr/local/tomcat7**/bin/tomcat-juli.jar
Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 9008; nested exception is:
    java.net.BindException: Address already in use

解决:在catalish.sh文件中,判断是否为启动命令,如果是start,就设置变量,否则,就不设置

JAVA_OPTS="$JAVA_OPTS -Xms256m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m"
if [ "$1" = "start" ];then
     echo "set console";
     JAVA_OPTS="-Dcom.sun.management.jmxremote.port=9008 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false";
else
  echo "no startup";
fi;

声明,本随笔综合了各大神的文章,就不一 一赘述了,在此表示感谢!

时间: 2024-10-11 12:15:09

本地win下JConsole监控远程linux下的JVM的相关文章

jconsole、jvisualvm监控远程linux下tomcat运行情况的配置

1.编辑tomcat/bin/catalina.sh 找到Execute The Requested Command,把以下代码加入到这段注释上面(中间无换行): CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=10.12.116.135 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8088 -Dcom.sun.management.jmxr

Jvisualvm监控远程linux下Tomcat

Jvisualvm监控远程linux下Tomcat 1.编辑tomcat/bin/catalina.sh 加入下面这段代码,中间无换行: CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=192.168.1.11 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=fal

jconsole监控远程linux tomcat运行情况的配置 (转)

来自:http://zhumeng8337797.blog.163.com/blog/static/100768914201242494649455/ 步骤如下: 1.编辑tomcat/bin/catalina.sh Bash代码 vi catalina.sh 在其中“ # ----- Execute The Requested Command -----------------------------------------” 之前插入新的一行(中间没有换行),内容如下: Vi catalin

jprofiler_监控远程linux服务器的JVM进程(转 非常棒)

几天前写了一篇文章,jprofiler_监控远程linux服务器的tomcat进程(实践),介绍了使用jprofiler怎样监控远程linux的tomcat进程,这两天想了想,除了可以监控tomcat进程,是不是也可以监控其它的Java进程,可是找了一圈都是监控tomcat,于是就打算亲手实验一下 本文打算把一个简单的java程序打包成jar包,并部署到linux服务器运行,然后使用jprofiler监控该jar包 java程序可参考文章:Java部署_IntelliJ创建一个可运行的jar包(

Nagios监控windows(基于check_nt),check_nrpe监控远程Linux

一.工作原理 Nagios服务器的/usr/local/nagios/libexec/下面使用check_nt工具与客户端程序通讯,客户端程序NSCP使用命令来获取本地客户端的信息并返回给check_nt. check_nt只是NSCP其中一项服务,Nagios还可以通过check命令(如check_http检查WEB服务).check_nrpe.NSCA.WMI来监控windows客户端. NSClient与nrpe最大的区别 被监控机上安装有nrpe,并且还有插件,最终的监控是由这些插件来进

Nagios学习笔记四:基于NRPE监控远程Linux主机

1.NRPE简介 Nagios监控远程主机的方法有多种,其方式包括SNMP.NRPE.SSH和NCSA等.这里介绍其通过NRPE监控远程Linux主机的方式. NRPE(Nagios Remote Plugin Executor)是用于在远端服务器上运行检测命令的守护进程,它用于让Nagios监控端基于安装的方式触发远端主机上的检测命令,并将检测结果输出至监控端.而其执行的开销远低于基于SSH的检测方式,而且检测过程并不需要远程主机上的系统帐号等信息,其安全性也高于SSH的检测方式. 2.安装配

Linux下adb驱动问题Linux下使用手机USB调试模式连接ADB进行Android程序的调试

Linux 下adb 驱动问题 Linux下使用手机USB调试模式连接ADB进行Android程序的调试,配置驱动没有Windows来的直观. 具体步骤首先确认手机连接上电脑,lsusb查看下设备记录. [email protected]:~$ lsusb Bus 007 Device 009: ID 18d1:4e12 Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 006 Device 001: ID 1d

windows下QT前台和linux下后台程序通过socket通信

通常情况下,linux下的后台程序不需要GUI进行展示,而前台程序往往有个界面,方便和用户的交互.本文所演示的例 子,是QT 程序和后台linux进程(C语言)交互,通过socket传输的内容是结构体.因为QT本身是跨平台的框架,因此以后前端程序移植到其它平台依然能很好 的运行. 结构体的定义如下: struct Test              {                      int a;                      char b;              };

Linux下的tree命令 --Linux下目录树查看

Linux下的tree命令 --Linux下目录树查看 有时我们需要生成目录树结构,可以使用的有ls -R,但是实际效果并不好 这时需要用到tree命令,但是大部分Linux系统是默认不安装该命令的,需要自己安装一下;tree的常见用法: tree -a  #显示所有 tree -d  #仅显示目录 tree -L n  #n代表数字..表示要显示几层... tree -f  #显示完整路径..