java - How to get CPU, RAM and Network-Usage of a Java7 App -


i found older article how-to-monitor-the-computers-cpu-memory-and-disk-usage-in-java , wated ask, if there new in java 7. want current cpu-, ram- , netzwork-usage of app periodically. has work linux (mac) , windows. data must not extremely detailed, 3 values enough (cpu: 10%, ram 4%, network 40%). cool if data app , not whole os-system, work, too.

thank's help

answering own question ;p code have written...

networkdata:

public class networkdata {      static map<string, long> rxcurrentmap = new hashmap<string, long>();     static map<string, list<long>> rxchangemap = new hashmap<string, list<long>>();     static map<string, long> txcurrentmap = new hashmap<string, long>();     static map<string, list<long>> txchangemap = new hashmap<string, list<long>>();     private static sigar sigar;      /**      * @throws interruptedexception      * @throws sigarexception      *       */     public networkdata(sigar s) throws sigarexception, interruptedexception {         sigar = s;         getmetric();         system.out.println(networkinfo());         thread.sleep(1000);          }      public static void main(string[] args) throws sigarexception,             interruptedexception {         new networkdata(new sigar());         networkdata.startmetrictest();     }      public static string networkinfo() throws sigarexception {         string info = sigar.getnetinfo().tostring();         info += "\n"+ sigar.getnetinterfaceconfig().tostring();         return info;     }      public static string getdefaultgateway() throws sigarexception {         return sigar.getnetinfo().getdefaultgateway();     }      public static void startmetrictest() throws sigarexception, interruptedexception {         while (true) {             long[] m = getmetric();             long totalrx = m[0];             long totaltx = m[1];             system.out.print("totalrx(download): ");             system.out.println("\t" + sigar.formatsize(totalrx));             system.out.print("totaltx(upload): ");             system.out.println("\t" + sigar.formatsize(totaltx));             system.out.println("-----------------------------------");             thread.sleep(1000);         }      }      public static long[] getmetric() throws sigarexception {         (string ni : sigar.getnetinterfacelist()) {             // system.out.println(ni);             netinterfacestat netstat = sigar.getnetinterfacestat(ni);             netinterfaceconfig ifconfig = sigar.getnetinterfaceconfig(ni);             string hwaddr = null;             if (!netflags.null_hwaddr.equals(ifconfig.gethwaddr())) {                 hwaddr = ifconfig.gethwaddr();             }             if (hwaddr != null) {                 long rxcurrenttmp = netstat.getrxbytes();                 savechange(rxcurrentmap, rxchangemap, hwaddr, rxcurrenttmp, ni);                 long txcurrenttmp = netstat.gettxbytes();                 savechange(txcurrentmap, txchangemap, hwaddr, txcurrenttmp, ni);             }         }         long totalrxdown = getmetricdata(rxchangemap);         long totaltxup = getmetricdata(txchangemap);         (list<long> l : rxchangemap.values())             l.clear();         (list<long> l : txchangemap.values())             l.clear();         return new long[] { totalrxdown, totaltxup };     }      private static long getmetricdata(map<string, list<long>> rxchangemap) {         long total = 0;         (entry<string, list<long>> entry : rxchangemap.entryset()) {             int average = 0;             (long l : entry.getvalue()) {                 average += l;             }             total += average / entry.getvalue().size();         }         return total;     }      private static void savechange(map<string, long> currentmap,             map<string, list<long>> changemap, string hwaddr, long current,             string ni) {         long oldcurrent = currentmap.get(ni);         if (oldcurrent != null) {             list<long> list = changemap.get(hwaddr);             if (list == null) {                 list = new linkedlist<long>();                 changemap.put(hwaddr, list);             }             list.add((current - oldcurrent));         }         currentmap.put(ni, current);     }  } 

cpu-data:

public class cpudata {     private static sigar sigar;      public cpudata(sigar s) throws sigarexception {         sigar = s;         system.out.println(cpuinfo());     }      public static void main(string[] args) throws interruptedexception, sigarexception {         new cpudata(new sigar());         cpudata.startmetrictest();     }      private static void startmetrictest() throws interruptedexception, sigarexception {         new thread() {             public void run() {                 while(true)                  biginteger.probableprime(max_priority, new random());             };         }.start();         while(true) {             string pid = ""+sigar.getpid();             system.out.print(getmetric(pid));             for(double d:getmetric()){                 system.out.print("\t"+d);             }             system.out.println();             thread.sleep(1000);         }            }      public string cpuinfo() throws sigarexception {         cpuinfo[] infos = sigar.getcpuinfolist();         cpuinfo info = infos[0];          string infostring = info.tostring();         if ((info.gettotalcores() != info.gettotalsockets())                 || (info.getcorespersocket() > info.gettotalcores())) {             infostring+=" physical cpus: " + info.gettotalsockets();             infostring+=" cores per cpu: " + info.getcorespersocket();         }          long cachesize = info.getcachesize();         if (cachesize != sigar.field_notimpl) {             infostring+="cache size...." + cachesize;         }         return infostring;     }      public static double[] getmetric() throws sigarexception {         cpuperc cpu = sigar.getcpuperc();         double system = cpu.getsys();         double user = cpu.getuser();         double idle = cpu.getidle(); //      system.out.println("idle: " +cpuperc.format(idle) +", system: "+cpuperc.format(system)+ ", user: "+cpuperc.format(user));         return new double[] {system, user, idle};     }      public static double getmetric(string pid) throws sigarexception {         proccpu cpu = sigar.getproccpu(pid); //      system.out.println(sigar.getprocfd(pid)); //      system.err.println(cpu.tostring());         return cpu.getpercent();     }  } 

ram-data:

public class ramdata {      private static sigar sigar;     private static map<string, long> pagefoults;      public ramdata(sigar s) throws sigarexception {         sigar = s;         system.out.println(getmetric().tostring());     }      public static void main(string[] args) throws sigarexception,             interruptedexception {         new ramdata(new sigar());         ramdata.startmetrictest();     }      public static void startmetrictest() throws sigarexception,             interruptedexception {         while (true) {             map<string, string> map = ramdata.getmetric("" + sigar.getpid());             system.out.println("resident: \t\t"                     + sigar.formatsize(long.valueof(map.get("resident"))));             system.out.println("pagefaults: \t\t" + map.get("pagefaults"));             system.out.println("pagefaultstotal:\t" + map.get("pagefaultstotal"));             system.out.println("size:    \t\t"                     + sigar.formatsize(long.valueof(map.get("size"))));             map<string, string> map2 = getmetric();             (entry<string, string> e : map2.entryset()) {                 string s;                 try {                     s = sigar.formatsize(long.valueof(e.getvalue()));                 } catch (numberformatexception ex) {                     s = ((int) (double) double.valueof(e.getvalue())) + "%";                 }                 system.out.print("  " + e.getkey() + ": " + s);             }             system.out.println("\n------------------");             thread.sleep(1000);         }     }      public static map<string, string> getmetric() throws sigarexception {         mem mem = sigar.getmem();         return (map<string, string>) mem.tomap();     }      public static map<string, string> getmetric(string pid)             throws sigarexception {         if (pagefoults == null)             pagefoults = new hashmap<string, long>();         procmem state = sigar.getprocmem(pid);         map<string, string> map = new treemap<string, string>(state.tomap());         if (!pagefoults.containskey(pid))             pagefoults.put(pid, state.getpagefaults());         map.put("pagefaults", ""                 + (state.getpagefaults() - pagefoults.get(pid)));         map.put("pagefaultstotal", ""+state.getpagefaults());         return map;     } } 

proces-data:

public class processdata {      private static sigar sigar;      public processdata(sigar s) throws sigarexception {         this.sigar = s;         system.out.println(getmetric().tostring());         system.out.println(getmetric(getpidstring()).tostring());     }      public static void main(string[] args) throws sigarexception {         new processdata(new sigar());         system.out.println(processdata.getmetric());         system.out.println(processdata.getmetric(getpidstring()));     }      public static map<string, string> getmetric() throws sigarexception {         procstat state = sigar.getprocstat();         return (map<string, string>) state.tomap();     }      public static map<string, string> getmetric(string pid) throws sigarexception {         procstate state = sigar.getprocstate(pid);         return (map<string, string>) state.tomap();     }      public static long getpid() {         return sigar.getpid();     }      public static string getpidstring() {         return ""+sigar.getpid();     }  } 

Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -