2013-04-17 15 views
0

我想使用RRD4J,但它檢索奇怪的數據。也許我在做一些奇怪的事情。RRD4J提取檢索怪異值

我已經創建了以下功能的數據庫:

// MAIN DATA SOURCES 
rrdDef.addDatasource("create", DsType.COUNTER, 600, Double.NaN, Double.NaN); 
rrdDef.addDatasource("copy", DsType.COUNTER, 600, Double.NaN, Double.NaN); 
rrdDef.addDatasource("check", DsType.COUNTER, 600, Double.NaN, Double.NaN); 
rrdDef.addDatasource("delete", DsType.COUNTER, 600, Double.NaN, Double.NaN); 
// AVERAGE ARCHIVES 
rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 1, 576); 
rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 6, 336); 
rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 24, 720); 
rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 288, 540); 
// MAX ARCHIVES 
rrdDef.addArchive(ConsolFun.MAX, 0.5, 1, 576); 
rrdDef.addArchive(ConsolFun.MAX, 0.5, 6, 336); 
rrdDef.addArchive(ConsolFun.MAX, 0.5, 24, 720); 
rrdDef.addArchive(ConsolFun.MAX, 0.5, 288, 540); 

我更新如下:

Sample sample = rrdDb.createSample(); 
sample.setTime(now); 
sample.setValue("create", (double)create); 
sample.setValue("copy", (double)copy); 
sample.setValue("check", (double)check); 
sample.setValue("delete", (double)del); 
sample.update(); 

和檢索數據:

long endTime = Util.getTime(); 
long startTime = endTime - (12*60*60L); 
FetchRequest fetchRequest = rrdDb.createFetchRequest(ConsolFun.MAX, startTime, endTime); 
FetchData fetchData = fetchRequest.fetchData(); 
System.out.println(fetchData.dump()); 

但我找回最怪異數據可能。我已經輸入號碼,如95,48,78和15,和接收的數據像+ 1.8046081071E07,+ 1.8046079370E07,+ 0.0000000000E00和+ 1.8046081013E07

我想檢索值回。難道我做錯了什麼?

回答

1

我找到了解決方案。

當我應該使用DsType.GAUGE時,我已經使用了DsType.COUNTER。

因此,使用下面的代碼來創建數據庫解決了這個問題:

rrdDef.addDatasource("create", DsType.GAUGE, 600, Double.NaN, Double.NaN); 
rrdDef.addDatasource("copy", DsType.GAUGE, 600, Double.NaN, Double.NaN); 
rrdDef.addDatasource("check", DsType.GAUGE, 600, Double.NaN, Double.NaN); 
rrdDef.addDatasource("delete", DsType.GAUGE, 600, Double.NaN, Double.NaN);