远程机器信息访问|没有JMX

时间:2013-12-05 11:53:31

标签: java

我需要在不使用JMX的情况下获取java中远程系统的CPU使用率。

我有在本地机器上测试的代码,但不是远程机器

 try{
            Sigar session = new Sigar();
            System.out.println(session.getNetInfo());
            String temp,fdigit;
            int cpuUsage=0;
            double freeCpu = 0;
            DecimalFormatSymbols simbol = new DecimalFormatSymbols();
            simbol.setDecimalSeparator('.');
            DecimalFormat df = new DecimalFormat("##.##",simbol);
            while(true){
            temp="";    
            cpuUsage=0;
            Thread.sleep(900);  
            CpuPerc cpuPerc = session.getCpuPerc();
            freeCpu = cpuPerc.getCombined()*100;
            freeCpu = Double.valueOf(df.format(freeCpu)); 
            temp=""+freeCpu;  
            fdigit=temp.substring(temp.indexOf(".")+1);
            if(Integer.parseInt(fdigit)>=4){
                cpuUsage=Integer.parseInt(temp.substring(0, temp.indexOf(".")));
                cpuUsage=cpuUsage+1;                
            }
            System.out.println(cpuUsage+"%");
            }
        }
        catch(Exception e){
            System.out.println(e.getMessage());
        }

我用Google搜索,但是在没有使用JMX的情况下我找不到任何样本。

所以我希望我们的堆栈溢出用户会帮忙。让我知道尽快...

1 个答案:

答案 0 :(得分:0)

如果没有对服务的JMX支持,在RHQ我们会回退到sigar。但我们在受监控的平台上运行代理,通过网络发送数据。 AFAIK,没有办法完全远程完成。