jmx 远程监控 jvm及weblogic

来源:互联网 发布:小猪cms创始人 编辑:程序博客网 时间:2024/05/29 05:01

这两天写了一些jmx 监控 weblogic 及 jvm 的代码。内容简单。代码都写在一个按钮的事件里。主要完成的功能就是远程监控jvm 及weblogic 的一些使用情况。功能单一。也可以改一下内容进行手动远程gc。oracle weblogic 技术讨论群49303854

try {
//初始监控化信息表头
DefaultTableModel mode = new DefaultTableModel();
mode.addColumn("IP");
mode.addColumn("当前堆大小");
mode.addColumn("自由内存");
mode.addColumn("内存使用率");
mode.addColumn("空闲线程");
mode.addColumn("总线程");
mode.addColumn("队列长度");
mode.addColumn("等待服务队列");
mode.addColumn("每秒处理请求数");
//weblogic 服务器信息
String hostName = "172.18.27.48";
String port = "7878";
//初始化mbeanServer 连接
ServerConnection sinfo = new ServerConnection();
MBeanServerConnection mbeanServerConn = sinfo.getConnection(hostName, "7878", null, null);
//RuntimeServiceMBean
ObjectName root = new ObjectName( "com.bea:Name=RuntimeService,Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean");
serverRuntime = (ObjectName) mbeanServerConn.getAttribute(root, "ServerRuntime");
threadPoolRuntime = (ObjectName) mbeanServerConn.getAttribute(serverRuntime, "ThreadPoolRuntime");
objName = (ObjectName) mbeanServerConn.getAttribute(serverRuntime,"JVMRuntime");
//jvm 内存使用情况
double memoryMaxSize=Integer.parseInt(String.valueOf(mbeanServerConn.getAttribute(objName, "HeapSizeCurrent")))/1024/1024;
double memoryFreeSize=Integer.parseInt(String.valueOf(mbeanServerConn.getAttribute(objName, "HeapFreeCurrent")))/1024/1024;
double memoryPer=(memoryMaxSize-memoryFreeSize)/memoryMaxSize*100;

//空闲线程:指占用了内存,但没有执行任务的线程
int ideThread = Integer.parseInt(String.valueOf(mbeanServerConn.getAttribute(threadPoolRuntime, "ExecuteThreadIdleCount")));

//总线程数
int totalThread = Integer.parseInt(String.valueOf(mbeanServerConn.getAttribute(threadPoolRuntime, "ExecuteThreadTotalCount")));
//等待请求的队列
int queueLength = Integer.parseInt(String.valueOf(mbeanServerConn.getAttribute(threadPoolRuntime, "QueueLength")));

//用户请求执行等待队列
int waitThreadCount = Integer.parseInt(String.valueOf(mbeanServerConn.getAttribute(threadPoolRuntime, "PendingUserRequestCount")));

//每秒处理的线程数比率
String throuhput = mbeanServerConn.getAttribute(threadPoolRuntime, "Throughput").toString();

//加入row 中
Object[] row = {hostName,memoryMaxSize,memoryFreeSize,memoryPer,ideThread,totalThread,queueLength,waitThreadCount,throuhput};
mode.addRow(row);


this.jTable1.setModel(mode);
} catch (MBeanException ex) {
Logger.getLogger(Jmx_moinView.class.getName()).log(Level.SEVERE, null, ex);
} catch (AttributeNotFoundException ex) {
Logger.getLogger(Jmx_moinView.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstanceNotFoundException ex) {
Logger.getLogger(Jmx_moinView.class.getName()).log(Level.SEVERE, null, ex);
} catch (ReflectionException ex) {
Logger.getLogger(Jmx_moinView.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Jmx_moinView.class.getName()).log(Level.SEVERE, null, ex);
} catch (MalformedObjectNameException ex) {
Logger.getLogger(Jmx_moinView.class.getName()).log(Level.SEVERE, null, ex);
} catch (NullPointerException ex) {
Logger.getLogger(Jmx_moinView.class.getName()).log(Level.SEVERE, null, ex);
}



原创粉丝点击