JRobin是一个很强大的存储和用图形展示基于时间序列数据的工具Word格式文档下载.docx

上传人:b****6 文档编号:17215874 上传时间:2022-11-29 格式:DOCX 页数:12 大小:19.16KB
下载 相关 举报
JRobin是一个很强大的存储和用图形展示基于时间序列数据的工具Word格式文档下载.docx_第1页
第1页 / 共12页
JRobin是一个很强大的存储和用图形展示基于时间序列数据的工具Word格式文档下载.docx_第2页
第2页 / 共12页
JRobin是一个很强大的存储和用图形展示基于时间序列数据的工具Word格式文档下载.docx_第3页
第3页 / 共12页
JRobin是一个很强大的存储和用图形展示基于时间序列数据的工具Word格式文档下载.docx_第4页
第4页 / 共12页
JRobin是一个很强大的存储和用图形展示基于时间序列数据的工具Word格式文档下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

JRobin是一个很强大的存储和用图形展示基于时间序列数据的工具Word格式文档下载.docx

《JRobin是一个很强大的存储和用图形展示基于时间序列数据的工具Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《JRobin是一个很强大的存储和用图形展示基于时间序列数据的工具Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。

JRobin是一个很强大的存储和用图形展示基于时间序列数据的工具Word格式文档下载.docx

n=n+1

Next

Wscript.Echo(load/n)

该最后脚本输出CPU平均使用率,Java程序可以执行该脚本获取标准输出,得到CPU平均使用率。

2、在Linux上获取CPU使用率:

Linux操作系统的/proc文件系统提供了与系统和进程有关的信息。

通过访问/proc/stat就可以获取CPU的使用情况。

其bash脚本如下:

user=`cat/proc/stat|head-n1|awk'

{print$2}'

`

nice=`cat/proc/stat|head-n1|awk'

{print$3}'

system=`cat/proc/stat|head-n1|awk'

{print$4}'

idle=`cat/proc/stat|head-n1|awk'

{print$5}'

iowait=`cat/proc/stat|head-n1|awk'

{print$6}'

irq=`cat/proc/stat|head-n1|awk'

{print$7}'

softirq=`cat/proc/stat|head-n1|awk'

{print$8}'

letused=$user+$nice+$system+$iowait+$irq+$softirq

lettotal=$used+$idle

echo$used$total

该脚本最后输出自机器启动以来,CPU总共使用的时间和总共运行时间。

要想获取CPU使用率,还需要作进行一步处理。

处理步骤如下:

(1)运行脚本,得到相应数据:

100010000

(2)sleep60秒

(3)运行脚本,得到相应数据:

700070000

(4)那么在这段时间内,CPU的使用率就等于:

(7000-1000)/(70000-10000)=10%。

(5)定时运行脚本,就可以得到每个时段CPU的使用率。

3、与获取Ping响应时间代码的异同:

这两个程序实现的功能基本类似,就是获取数据,利用JRobin保存和画图。

其中利用JRobin保存和画图的功能除了保存的数据源、显示的文本信息不同以外,其他都是相同的。

他们最大的不同在于获取和处理数据的方式。

在WIndows下,Ping程序利用Ping命令来获取数据,而CPU监视程序则使用VBScript利用WMI接口通过CScript.EXE执行脚本来实现。

在Linux下,不能直接获取CPU使用率信息,需要在下一次获取到CPU使用信息时,对数据进行进一步出来才能得到。

4、看看成果:

5、事例代码:

importjava.awt.Color;

importjava.awt.Font;

importjava.io.BufferedReader;

importjava.io.File;

importjava.io.IOException;

importjava.io.InputStreamReader;

importjava.io.PrintWriter;

importjava.util.ArrayList;

importjava.util.Date;

importjava.util.List;

importjava.util.Timer;

importjava.util.TimerTask;

importjava.util.logging.Logger;

importorg.jrobin.core.RrdDb;

importorg.jrobin.core.RrdDef;

importorg.jrobin.core.Sample;

importorg.jrobin.graph.RrdGraph;

importorg.jrobin.graph.RrdGraphDef;

publicclassCPUMonitor{

publicstaticString[]execute(String[]commands){

String[]strs=null;

FilescriptFile=null;

try{

List<

String>

cmdList=newArrayList<

();

StringosName=System.getProperty("

os.name"

);

if(osName.indexOf("

Windows"

)>

-1){

scriptFile=File.createTempFile("

monitor"

"

.vbs"

cmdList.add("

CMD.EXE"

/C"

CSCRIPT.EXE"

//NoLogo"

}else{

.sh"

/bin/bash"

}

StringfileName=scriptFile.getCanonicalPath();

PrintWriterwriter=newPrintWriter(scriptFile);

for(inti=0;

i<

commands.length;

i++){

writer.println(commands[i]);

writer.flush();

writer.close();

cmdList.add(fileName);

ProcessBuilderpb=newProcessBuilder(cmdList);

Processp=pb.start();

p.waitFor();

Stringline=null;

BufferedReaderstdout=newBufferedReader(newInputStreamReader(p

.getInputStream()));

stdoutList=newArrayList<

while((line=stdout.readLine())!

=null){

stdoutList.add(line);

BufferedReaderstderr=newBufferedReader(newInputStreamReader(p

.getErrorStream()));

stderrList=newArrayList<

while((line=stderr.readLine())!

stderrList.add(line);

strs=stdoutList.toArray(newString[0]);

}catch(Exceptione){

e.printStackTrace();

}finally{

if(scriptFile!

=null)

scriptFile.delete();

returnstrs;

privateStringdataFormat="

%3f"

;

privateLoggerlogger=Logger.getLogger(this.getClass().getName());

privateStringmonitorName="

cpu"

privateStringdataDir="

privateintstep=10;

privateStringrrdPath="

privateTimertimer=newTimer();

privatelongtimeStart=0;

protectedintwidth=600;

protectedintheight=150;

publicCPUMonitor(StringdataDir,intstep){

this.dataDir=dataDir;

this.step=step;

this.rrdPath=this.dataDir+File.separator+monitorName+"

.rrd"

publicStringgenerateGraph(){

longtimeCur=org.jrobin.core.Util.getTimestamp();

returngenerateGraph(timeStart,timeCur);

publicStringgenerateGraph(longstart,longend){

RrdDbrrdDb=null;

Color[]colors=newColor[]{Color.GREEN,Color.BLUE,

Color.MAGENTA,Color.YELLOW,Color.RED,Color.CYAN,

Color.ORANGE,Color.PINK,Color.BLACK};

StringgraphPath=this.dataDir+File.separator+monitorName

+"

.png"

//creategraph

logger.info("

Creatinggraph"

RrdGraphDefgDef=newRrdGraphDef();

gDef.setWidth(width);

gDef.setHeight(height);

gDef.setFilename(graphPath);

gDef.setStartTime(start);

gDef.setEndTime(end);

gDef.setTitle("

CPUUsage"

gDef.setVerticalLabel("

%"

String[]dsNames=null;

rrdDb=newRrdDb(rrdPath);

dsNames=rrdDb.getDsNames();

dsNames.length;

StringdsName=dsNames[i];

Stringlegend=dsName;

if(legend==null||legend.equals("

))

legend=dsName;

gDef.datasource(dsName,rrdPath,dsName,"

AVERAGE"

gDef.line(dsName,colors[i%colors.length],legend,2);

gDef.gprint(dsName,"

MIN"

dataFormat+"

Min"

Avg"

MAX"

Max"

LAST"

Last\\r"

gDef.print(dsName,"

min"

+dsName+"

=%.3f"

avg"

max"

last"

gDef.setImageInfo("

<

imgsrc='

%s'

width='

%d'

height='

>

gDef.setPoolUsed(false);

gDef.setImageFormat("

png"

gDef.setSmallFont(newFont("

Monospaced"

Font.PLAIN,11));

gDef.setLargeFont(newFont("

SansSerif"

Font.BOLD,14));

//gDef.setAltYMrtg(true);

//creategraphfinally

RrdGraphgraph=newRrdGraph(gDef);

//logger.info(graph.getRrdGraphInfo().dump());

Graphcreated"

returngraph.getRrdGraphInfo().getFilename();

logger.warning("

Erroringeneratinggraph:

+e.getMessage());

if(rrdDb!

rrdDb.close();

}catch(IOExceptione){

returnnull;

privatelonglastUsed=0;

privatelonglastTotal=0;

privatedoublegetCPUUsage(String[]strs){

doublevalue=Double.NaN;

StringstrValue=strs[0];

value=Double.parseDouble(strValue);

String[]values=strValue.split("

if(values.length==2){

longused=Long.parseLong(values[0]);

longtotal=Long.parseLong(values[1]);

if(lastUsed>

0&

lastTotal>

0){

longdeltaUsed=used-lastUsed;

longdeltaTotal=total-lastTotal;

if(deltaTotal>

value=((long)(((deltaUsed*100)/deltaTotal)*10))/10;

lastUsed=used;

lastTotal=total;

returnvalue;

/**

*ReturnaHashMapwhichcontainsthecurrentvalueofeachdatasource.

*

*@returnthecurrentvalueofeachdatasource.

*/

publicdoublegetValue(StringdsName){

String[]commands=newString[0];

commands=newString[]{

strComputer=\"

.\"

SetobjWMIService=GetObject(\"

\"

_"

\"

\\\\\"

\\root\\cimv2\"

)"

SetcolItems=objWMIService.ExecQuery(\"

Select*fromWin32_Processor\"

,48)"

load=0"

n=0"

ForEachobjItemincolItems"

load=load+objItem.LoadPercentage"

n=n+1"

Next"

Wscript.Echo(load/n)"

};

`"

letused=$user+$nice+$system+$iowait+$irq+$softirq"

lettotal=$used+$idle"

echo\"

$used$total\"

returngetCPUUsage(execute(commands));

*Initialization.

publicvoidinitialize()throwsException{

if(rrdDb==null){

RRDdataisnotlocatedin"

+rrdPath

createanewone"

RrdDefrrdDef=newRrdDef(rrdPath,timeStart-1,step);

rrdDef.addDatasource("

GAUGE"

2*step,0,Double.NaN);

rrdDef.addArchive("

0.5,1,24*3600/step);

0.5,300/step,7*288);

Estimatedfilesize:

+rrdDef.getEstimatedSize());

rrdDb=newRrdDb(rrdDef);

RRDfilecreated."

logger.info(monitorName+"

RRDDbDefs:

+rrdDb.getRrdDef().dump());

*Startmonitor.

*@returntrueifsucceed,elsefalse.

publicbooleanstart(){

starttomonitor"

+monitorName);

timeStart=org.jrobin.core.Util.getTimestamp();

initialize();

timer.scheduleAtFixedRate(n

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 简洁抽象

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1