使用JConsole监控服务器
方式一:配置启动参数
在服务器应用启动命令中加入下面配置
-Djava.rmi.server.hostname=10.xxx.xxx.xx //本机ip
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=10000
-Dcom.sun.management.jmxremote.rmi.port=10000 //如果要监控服务器上必须添加rmi
-Dcom.sun.management.jmxremote.ssl=false //不为ssl连接
-Dcom.sun.management.jmxremote.authenticate=false //不开启验证
jar 包程序启动一般为
java -jar xxx.jar
加入参数后
java Djava.rmi.server.hostname=10.xxx.xxx.xx -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10000 -Dcom.sun.management.jmxremote.rmi.port=10000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false --jar xxx.jar
启动应用后,可通过命令查看对应监控端口是否启动
netstat -ano //查看全部端口占用情况
netstat -aon|findstr 5040 //查看指定端口占用情况
方式二:代码启动端口监控
在需要监控的服务中加入监控端口启动配置代码
//代码实现打开压测端口监控
@Configuration
@Slf4j
public class JMXRemoteConfiguration {
@Value("${rmiRegistryPort}")
private int rmiRegistryPort; //需要开启监控的端口
@Value("${jmxSwitch}")
private boolean jmxSwitch;
@Bean
public void execute() {
try {
if (jmxSwitch) {
LocateRegistry.createRegistry(rmiRegistryPort);
InetAddress inetAddress = InetAddress.getLocalHost();
String jmxHostname = inetAddress.getHostAddress(); //本机IP
int rmiServerPort = rmiRegistryPort;
// 获取MBeanServer
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
JMXServiceURL serviceURL = new JMXServiceURL(
"service:jmx:rmi://" + jmxHostname + ":" + rmiServerPort + "/jndi/rmi://" + jmxHostname + ":" + rmiRegistryPort + "/jmxrmi");
// 配置环境参数
Map<String, Object> env = new HashMap<>();
env.put(JMXConnectorServer.AUTHENTICATOR, null); // 禁用认证
env.put("com.sun.management.jmxremote.ssl", false); // 禁用SSL
// 创建并启动JMX连接器服务器
JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(serviceURL, env, mbs);
cs.start();
log.info("JMX remote monitoring enabled on port " + rmiRegistryPort + " with hostname " + jmxHostname);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
注意事项
检查要启动监控端口是否被占用
netstat -aon|findstr 端口
根据pid杀死进程
taskkill /pid 4628 -t -f
本地通过JConsole连接服务器查看服务器状态
- 通过telnet命令检查是否ip端口连通性
telnet 10.xxx.xxx.xx 10000
- 在打开JConsole连接服务器
因为启动配置设置不开启ssl连接和验证,直接输入ip:端口连接即可
连接成功后