add ProcessorMonitor of Linux
This commit is contained in:
parent
c5aea1d7c9
commit
d3de4ec3d6
|
@ -2,6 +2,7 @@ package org.bench4q.monitor.api;
|
||||||
|
|
||||||
import org.bench4q.monitor.entiry.MonitorContorlEntity;
|
import org.bench4q.monitor.entiry.MonitorContorlEntity;
|
||||||
import org.bench4q.monitor.model.ProcessorModel;
|
import org.bench4q.monitor.model.ProcessorModel;
|
||||||
|
import org.bench4q.monitor.service.linux.ProcessorServiceLinux;
|
||||||
import org.bench4q.monitor.service.windows.ProcessorServiceWindows;
|
import org.bench4q.monitor.service.windows.ProcessorServiceWindows;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
|
@ -12,6 +13,15 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
@RequestMapping("/Monitor")
|
@RequestMapping("/Monitor")
|
||||||
public class ProcessorController extends MonitorContorlEntity {
|
public class ProcessorController extends MonitorContorlEntity {
|
||||||
private ProcessorServiceWindows processorServiceWindows;
|
private ProcessorServiceWindows processorServiceWindows;
|
||||||
|
private ProcessorServiceLinux processorServiceLinux;
|
||||||
|
public ProcessorServiceLinux getProcessorServiceLinux() {
|
||||||
|
return processorServiceLinux;
|
||||||
|
}
|
||||||
|
@Autowired
|
||||||
|
public void setProcessorServiceLinux(ProcessorServiceLinux processorServiceLinux) {
|
||||||
|
this.processorServiceLinux = processorServiceLinux;
|
||||||
|
}
|
||||||
|
|
||||||
public ProcessorServiceWindows getProcessorServiceWindows() {
|
public ProcessorServiceWindows getProcessorServiceWindows() {
|
||||||
return processorServiceWindows;
|
return processorServiceWindows;
|
||||||
}
|
}
|
||||||
|
@ -29,8 +39,8 @@ public class ProcessorController extends MonitorContorlEntity {
|
||||||
if (this.getOsNameString().contains("windows")) {
|
if (this.getOsNameString().contains("windows")) {
|
||||||
return this.getProcessorServiceWindows().getProcessorInfo(
|
return this.getProcessorServiceWindows().getProcessorInfo(
|
||||||
this.getIdleTime());
|
this.getIdleTime());
|
||||||
} else
|
} else if(this.getOsNameString().contains("linux"))
|
||||||
return null;
|
return this.getProcessorServiceLinux().getProcessorInfo(this.getIdleTime())
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
package org.bench4q.monitor.entiry;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
|
||||||
|
public class LinuxFileRead {
|
||||||
|
private BufferedReader bufferedReader;
|
||||||
|
|
||||||
|
public BufferedReader getBufferedReader() {
|
||||||
|
return bufferedReader;
|
||||||
|
}
|
||||||
|
public void setBufferedReader(BufferedReader bufferedReader) {
|
||||||
|
this.bufferedReader = bufferedReader;
|
||||||
|
|
||||||
|
}
|
||||||
|
public LinuxFileRead(String fileName) throws FileNotFoundException{
|
||||||
|
File file = new File(fileName);
|
||||||
|
this.bufferedReader= new BufferedReader(new InputStreamReader(new FileInputStream(file)));
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,7 +8,7 @@ public class ProcessorModelChild {
|
||||||
private Double processorTimePercent;
|
private Double processorTimePercent;
|
||||||
private Double userTimePercent;
|
private Double userTimePercent;
|
||||||
private Double privilegedTimePercent;
|
private Double privilegedTimePercent;
|
||||||
private Double dpcTimePercent;// getDpcTimePercent
|
|
||||||
public String getInstance() {
|
public String getInstance() {
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
@ -33,11 +33,5 @@ public class ProcessorModelChild {
|
||||||
public void setPrivilegedTimePercent(Double privilegedTimePercent) {
|
public void setPrivilegedTimePercent(Double privilegedTimePercent) {
|
||||||
this.privilegedTimePercent = privilegedTimePercent;
|
this.privilegedTimePercent = privilegedTimePercent;
|
||||||
}
|
}
|
||||||
public Double getDpcTimePercent() {
|
|
||||||
return dpcTimePercent;
|
|
||||||
}
|
|
||||||
public void setDpcTimePercent(Double dpcTimePercent) {
|
|
||||||
this.dpcTimePercent = dpcTimePercent;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
package org.bench4q.monitor.service.linux;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.StringTokenizer;
|
||||||
|
|
||||||
|
import org.bench4q.monitor.entiry.LinuxFileRead;
|
||||||
|
import org.bench4q.monitor.model.ProcessorModel;
|
||||||
|
import org.bench4q.monitor.model.ProcessorModelChild;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ProcessorServiceLinux {
|
||||||
|
|
||||||
|
public ProcessorServiceLinux() throws FileNotFoundException {
|
||||||
|
|
||||||
|
this.fileRead = new LinuxFileRead("/proc/stat");
|
||||||
|
}
|
||||||
|
|
||||||
|
private LinuxFileRead fileRead;
|
||||||
|
|
||||||
|
public LinuxFileRead getFileRead() {
|
||||||
|
return fileRead;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileRead(LinuxFileRead fileRead) {
|
||||||
|
this.fileRead = fileRead;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProcessorModel getProcessorInfo(int idleTime) throws IOException,
|
||||||
|
InterruptedException {
|
||||||
|
ProcessorModel processorModel=new ProcessorModel();
|
||||||
|
ProcessorModelChild processorModelChild=new ProcessorModelChild();
|
||||||
|
BufferedReader br = this.getFileRead().getBufferedReader();
|
||||||
|
StringTokenizer tokens[]=new StringTokenizer[20];
|
||||||
|
|
||||||
|
StringTokenizer token = new StringTokenizer(this.getFileRead()
|
||||||
|
.getBufferedReader().readLine());
|
||||||
|
String instances[]=new String[20];
|
||||||
|
int i=0;
|
||||||
|
while(token!=null){
|
||||||
|
tokens[i]=token;
|
||||||
|
String instance;
|
||||||
|
instance=token.nextToken().toLowerCase();
|
||||||
|
if(!instance.contains("cpu")) break;
|
||||||
|
instances[i]=instance;
|
||||||
|
i++;
|
||||||
|
token = new StringTokenizer(this.getFileRead()
|
||||||
|
.getBufferedReader().readLine());
|
||||||
|
}
|
||||||
|
br.close();
|
||||||
|
|
||||||
|
Thread.sleep(idleTime);
|
||||||
|
br = this.getFileRead().getBufferedReader();
|
||||||
|
for(i=0;i<instances.length;i++)
|
||||||
|
{
|
||||||
|
int user1,user2=0,nice1,nice2=0,sys1,sys2=0,idle1,idle2=0;
|
||||||
|
|
||||||
|
processorModelChild.setInstance(instances[i]);
|
||||||
|
user1 = Integer.parseInt(tokens[i].nextToken());
|
||||||
|
nice1 = Integer.parseInt(tokens[i].nextToken());
|
||||||
|
sys1 = Integer.parseInt(tokens[i].nextToken());
|
||||||
|
idle1 = Integer.parseInt(tokens[i].nextToken());
|
||||||
|
|
||||||
|
token = new StringTokenizer(this.getFileRead()
|
||||||
|
.getBufferedReader().readLine());
|
||||||
|
while(token!=null){
|
||||||
|
token.nextToken();
|
||||||
|
user2 = Integer.parseInt(token.nextToken());
|
||||||
|
nice2 = Integer.parseInt(token.nextToken());
|
||||||
|
sys2 = Integer.parseInt(token.nextToken());
|
||||||
|
idle2 = Integer.parseInt(token.nextToken());
|
||||||
|
}
|
||||||
|
|
||||||
|
Double processorTimePercent=(double) ((user2 + sys2 + nice2) - (user1 + sys1 + nice1))
|
||||||
|
/( double) ((user2 + sys2 + idle2 + nice2) - (user1 + sys1
|
||||||
|
+ idle1 + nice1));
|
||||||
|
Double userTimePercent=(double) ((user2 ) - (user1 ))
|
||||||
|
/( double) ((user2 + sys2 + idle2 + nice2) - (user1 + sys1
|
||||||
|
+ idle1 + nice1));
|
||||||
|
Double privilegedTimePercent= (double) ( sys2 ) - ( sys1)
|
||||||
|
/( double) ((user2 + sys2 + idle2 + nice2) - (user1 + sys1
|
||||||
|
+ idle1 + nice1));;
|
||||||
|
processorModelChild.setPrivilegedTimePercent(privilegedTimePercent);
|
||||||
|
processorModelChild.setProcessorTimePercent(processorTimePercent);
|
||||||
|
processorModelChild.setUserTimePercent(userTimePercent);
|
||||||
|
processorModel.getProcessorModelList().add(processorModelChild);
|
||||||
|
}
|
||||||
|
br.close();
|
||||||
|
return processorModel;
|
||||||
|
}
|
||||||
|
}
|
|
@ -24,8 +24,6 @@ public class ProcessorServiceWindows {
|
||||||
|
|
||||||
for (String elem : instances) {
|
for (String elem : instances) {
|
||||||
ProcessorModelChild processorModelChild = new ProcessorModelChild();
|
ProcessorModelChild processorModelChild = new ProcessorModelChild();
|
||||||
processorModelChild.setDpcTimePercent(this.getProcessorMonitor()
|
|
||||||
.getDpcTimePercent(elem, idleTime));
|
|
||||||
processorModelChild.setInstance(elem);
|
processorModelChild.setInstance(elem);
|
||||||
processorModelChild.setPrivilegedTimePercent(this
|
processorModelChild.setPrivilegedTimePercent(this
|
||||||
.getProcessorMonitor().getPrivilegedTimePercent(elem,
|
.getProcessorMonitor().getPrivilegedTimePercent(elem,
|
||||||
|
|
|
@ -61,7 +61,7 @@ public class ProcessorTest {
|
||||||
while(iterator.hasNext()){
|
while(iterator.hasNext()){
|
||||||
ProcessorModelChild processorModelChild=iterator.next();
|
ProcessorModelChild processorModelChild=iterator.next();
|
||||||
System.out.println("instance"+processorModelChild.getInstance());
|
System.out.println("instance"+processorModelChild.getInstance());
|
||||||
System.out.println("dpcTimePercent"+processorModelChild.getDpcTimePercent());
|
|
||||||
System.out.println("privilegedTimePercent"+processorModelChild.getPrivilegedTimePercent());
|
System.out.println("privilegedTimePercent"+processorModelChild.getPrivilegedTimePercent());
|
||||||
System.out.println("processorTimePercent"+processorModelChild.getProcessorTimePercent());
|
System.out.println("processorTimePercent"+processorModelChild.getProcessorTimePercent());
|
||||||
System.out.println("userTimePercent"+processorModelChild.getUserTimePercent());
|
System.out.println("userTimePercent"+processorModelChild.getUserTimePercent());
|
||||||
|
|
Loading…
Reference in New Issue