jstatd——远程主机信息收集

JVM 相关指令不仅涉及到监控本机的 Java 应用程序,一些监控工具也支持对远程计算机的监控(如 jps、jstat)。为了启用远程监控,则需要配合使用 jstatd 工具。

命令 jstatd 是一个 RMI 服务端程序,它的作用相当于代理服务器,建立本地计算机与远程监控工具的通信。jstatd 服务器将本机的 Java 应用程序信息传递到远程计算机。

 

在Java中,要远程连接到jstatd服务器并获取监控信息,可以使用`java.rmi.Naming`或者`javax.management.remote.JMXConnectorFactory`等RMI(Remote Method Invocation)和JMX(Java Management Extensions)功能。下面是一个简单的示例,展示如何通过`JMXConnector`连接到jstatd服务器并获取`GarbageCollectorMXBean`的信息: 首先,在启动Java应用时,确保已启用jstatd服务并监听指定的网络端口,如上面所提到的。 ```java import com.sun.management.GarbageCollectorMXBean; import javax.management.JMX; import javax.management.JMXConnectionFactory; import javax.management.JMXException; import javax.management.MalformedObjectNameException; import java.io.IOException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class RemoteJStatDClient { public static void main(String[] args) { String serverUrl = "service:jmx:rmi:///jndi/rmi://localhost:8000/jmxrmi"; // 替换为你实际的jstatd连接地址 Registry registry = LocateRegistry.getRegistry(serverUrl); try { ObjectName objName = new ObjectName("java.lang:type=GarbageCollector"); GarbageCollectorMXBean gcBean = (GarbageCollectorMXBean) JMX.newMBeanProxy(registry, objName, GarbageCollectorMXBean.class); // 获取最近一次的全GC时间 long lastGcTime = gcBean.getLastGcInfo().getDuration(); System.out.println("Last Full GC Time: " + lastGcTime); } catch (IOException | MalformedObjectNameException | JMXException e) { e.printStackTrace(); } } } ``` 在这个例子中,我们首先从`jndi/rmi://<host>:<port>`URL注册表获取远程连接,然后创建一个新的代理对象去执行MBean的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值