org.jrobin.data
public class DataProcessor extends Object implements ConsolFuns
Plottable
for more information.Typical class usage:
final long t1 = ... final long t2 = ... DataProcessor dp = new DataProcessor(t1, t2); // DEF datasource dp.addDatasource("x", "demo.rrd", "some_source", "AVERAGE"); // DEF datasource dp.addDatasource("y", "demo.rrd", "some_other_source", "AVERAGE"); // CDEF datasource, z = (x + y) / 2 dp.addDatasource("z", "x,y,+,2,/"); // ACTION! dp.processData(); // Dump calculated values System.out.println(dp.dump());
Field Summary | |
---|---|
static int | DEFAULT_PIXEL_COUNT
Constant representing the default number of pixels on a JRobin graph (will be used if
no other value is specified with setStep() method. |
static boolean | DEFAULT_POOL_USAGE_POLICY
Constant that defines the default RrdDbPool usage policy. |
Constructor Summary | |
---|---|
DataProcessor(long t1, long t2)
Creates new DataProcessor object for the given time span. | |
DataProcessor(Date d1, Date d2)
Creates new DataProcessor object for the given time span. | |
DataProcessor(Calendar gc1, Calendar gc2)
Creates new DataProcessor object for the given time span. |
Method Summary | |
---|---|
void | addDatasource(String name, Plottable plottable) Adds a custom, |
void | addDatasource(String name, String rpnExpression) Adds complex source (CDEF). |
void | addDatasource(String name, String defName, String consolFun) Adds static source (SDEF). |
void | addDatasource(String name, String file, String dsName, String consolFunc) Adds simple datasource (DEF). |
void | addDatasource(String name, String file, String dsName, String consolFunc, String backend) Adds simple source (DEF). |
void | addDatasource(String name, FetchData fetchData)
Adds DEF datasource with datasource values already available in the FetchData object. |
String | dump()
Dumps timestamps and values of all datasources in a tabelar form. |
double | get95Percentile(String sourceName)
This method is just an alias for getPercentile method.
|
double | getAggregate(String sourceName, String consolFun)
Returns single aggregated value for a single datasource.
|
Aggregates | getAggregates(String sourceName)
Returns all (MIN, MAX, LAST, FIRST, AVERAGE and TOTAL) aggregated values for a single datasource.
|
long | getEndingTimestamp()
Returns ending timestamp. |
long | getFetchRequestResolution()
Returns desired RRD archive step (reslution) in seconds to be used while fetching data
from RRD files. |
long | getLastRrdArchiveUpdateTime()
Returns time when last RRD archive was updated (all RRD files are considered).
|
double | getPercentile(String sourceName)
Used by ISPs which charge for bandwidth utilization on a "95th percentile" basis. The 95th percentile is the highest source value left when the top 5% of a numerically sorted set of source data is discarded. |
double | getPercentile(String sourceName, double percentile)
The same as getPercentile but with a possibility to define custom percentile boundary
(different from 95).
|
int | getPixelCount()
Returns the number of pixels (target graph width). |
String[] | getSourceNames()
Returns array of datasource names defined in this DataProcessor.
|
long | getStep()
Returns the time step used for data processing. |
long[] | getTimestamps()
Returns consolidated timestamps created with the processData method.
|
long[] | getTimestampsPerPixel(int pixelCount)
Calculates timestamps which correspond to individual pixels on the graph.
|
long[] | getTimestampsPerPixel()
Calculates timestamps which correspond to individual pixels on the graph
based on the graph width set with a DataProcessor method call.
|
double[] | getValues(String sourceName)
Returns calculated values for a single datasource. |
double[][] | getValues()
Returns an array of all datasource values for all datasources. |
double[] | getValuesPerPixel(String sourceName, int pixelCount)
Method used to calculate datasource values which should be presented on the graph
based on the desired graph width. |
double[] | getValuesPerPixel(String sourceName)
Method used to calculate datasource values which should be presented on the graph
based on the graph width set with a DataProcessor method call.
|
boolean | isPoolUsed()
Returns boolean value representing RrdDbPool usage policy.
|
static void | main(String[] args)
Cute little demo. |
void | processData()
Method that should be called once all datasources are defined. |
void | setFetchRequestResolution(long fetchRequestResolution)
Sets desired RRD archive step in seconds to be used internally while fetching data
from RRD files. |
void | setPixelCount(int pixelCount)
Sets the number of pixels (target graph width). |
void | setPoolUsed(boolean poolUsed)
Sets the RrdDbPool usage policy.
|
void | setStep(long step)
Roughly corresponds to the --step option in RRDTool's graph/xport commands. |
setStep()
method.false
(i.e. the pool will not be used to fetch data from RRD files)Parameters: t1 Starting timestamp in seconds without milliseconds t2 Ending timestamp in seconds without milliseconds
Throws: RrdException Thrown if invalid timestamps are supplied
Parameters: d1 Starting date d2 Ending date
Throws: RrdException Thrown if invalid timestamps are supplied
Parameters: gc1 Starting Calendar date gc2 Ending Calendar date
Throws: RrdException Thrown if invalid timestamps are supplied
Adds a custom, plottable
datasource (PDEF).
The datapoints should be made available by a class extending
Plottable
class.
Parameters: name source name. plottable class that extends Plottable class and is suited for graphing.
Adds complex source (CDEF).
Complex sources are evaluated using the supplied RPN
expression.
Complex source name
can be used:
JRobin supports the following RPN functions, operators and constants: +, -, *, /, %, SIN, COS, LOG, EXP, FLOOR, CEIL, ROUND, POW, ABS, SQRT, RANDOM, LT, LE, GT, GE, EQ, IF, MIN, MAX, LIMIT, DUP, EXC, POP, UN, UNKN, NOW, TIME, PI, E, AND, OR, XOR, PREV, PREV(sourceName), INF, NEGINF, STEP, YEAR, MONTH, DATE, HOUR, MINUTE, SECOND, WEEK, SIGN and RND.
JRobin does not force you to specify at least one simple source name as RRDTool.
For more details on RPN see RRDTool's rrdgraph man page.
Parameters: name source name. rpnExpression RPN expression containig comma (or space) delimited simple and complex source names, RPN constants, functions and operators.
Adds static source (SDEF). Static sources are the result of a consolidation function applied to *any* other source that has been defined previously.
Parameters: name source name. defName Name of the datasource to calculate the value from. consolFun Consolidation function to use for value calculation
Adds simple datasource (DEF). Simple source name
can be used:
Parameters: name source name. file Path to RRD file. dsName Datasource name defined in the RRD file. consolFunc Consolidation function that will be used to extract data from the RRD
file ("AVERAGE", "MIN", "MAX" or "LAST" - these string constants are conveniently defined
in the ConsolFuns
class).
Adds simple source (DEF). Source name
can be used:
Parameters: name Source name. file Path to RRD file. dsName Data source name defined in the RRD file. consolFunc Consolidation function that will be used to extract data from the RRD
file ("AVERAGE", "MIN", "MAX" or "LAST" - these string constants are conveniently defined
in the ConsolFuns
class). backend Name of the RrdBackendFactory that should be used for this RrdDb.
Parameters: name Source name. fetchData Fetched data containing values for the given source name.
Returns: Dumped object content.
Throws: RrdException Thrown if nothing is calculated so far (the method processData was not called).
The 95th percentile is the highest source value left when the top 5% of a numerically sorted set of source data is discarded. It is used as a measure of the peak value used when one discounts a fair amount for transitory spikes. This makes it markedly different from the average.
Read more about this topic at Rednet or Bytemark.
Parameters: sourceName Datasource name
Returns: 95th percentile of fetched source values
Throws: RrdException Thrown if invalid source name is supplied
Parameters: sourceName Datasource name consolFun Consolidation function to be applied to fetched datasource values. Valid consolidation functions are MIN, MAX, LAST, FIRST, AVERAGE and TOTAL (these string constants are conveniently defined in the ConsolFuns class)
Returns: MIN, MAX, LAST, FIRST, AVERAGE or TOTAL value calculated from the data for the given datasource name
Throws: RrdException Thrown if invalid datasource name is specified, or if datasource values are not yet calculated (method processData was not called)
Parameters: sourceName Datasource name
Returns: Object containing all aggregated values
Throws: RrdException Thrown if invalid datasource name is specified, or if datasource values are not yet calculated (method processData was not called)
Returns: Ending timestamp in seconds
RrdDb.createFetchRequest()
method
when this method is called internally by this DataProcessor.
Returns: Desired archive step (fetch resolution) in seconds.
Returns: Last archive update time for all RRD files in this DataProcessor
The 95th percentile is the highest source value left when the top 5% of a numerically sorted set of source data is discarded. It is used as a measure of the peak value used when one discounts a fair amount for transitory spikes. This makes it markedly different from the average.
Read more about this topic at Rednet or Bytemark.
Parameters: sourceName Datasource name
Returns: 95th percentile of fetched source values
Throws: RrdException Thrown if invalid source name is supplied
Parameters: sourceName Datasource name. percentile Boundary percentile. Value of 95 (%) is suitable in most cases, but you are free to provide your own percentile boundary between zero and 100.
Returns: Requested percentile of fetched source values
Throws: RrdException Thrown if invalid sourcename is supplied, or if the percentile value makes no sense.
Returns: Target graph width
Returns: array of datasource names
Returns: Step used for data processing.
Returns: array of timestamps in seconds
Throws: RrdException thrown if timestamps are not calculated yet
Parameters: pixelCount Graph width
Returns: Array of timestamps
Returns: Array of timestamps
Parameters: sourceName Datasource name
Returns: an array of datasource values
Throws: RrdException Thrown if invalid datasource name is specified, or if datasource values are not yet calculated (method processData was not called)
Returns: All datasource values for all datasources. The first index is the index of the datasource, the second index is the index of the datasource value. The number of datasource values is equal to the number of timestamps returned with getTimestamps method.
Throws: RrdException Thrown if invalid datasource name is specified, or if datasource values are not yet calculated (method processData was not called)
Parameters: sourceName Datasource name pixelCount Graph width
Returns: Per-pixel datasource values
Throws: RrdException Thrown if datasource values are not yet calculated (method processData was not called)
Parameters: sourceName Datasource name
Returns: Per-pixel datasource values
Throws: RrdException Thrown if datasource values are not yet calculated (method processData was not called)
RrdDbPool
usage policy.
Returns: true, if the pool will be used internally to fetch data from RRD files, false otherwise.
Parameters: args Not used
Throws: IOException RrdException
Throws: IOException Thrown in case of I/O error (while fetching data from RRD files) RrdException Thrown in case of JRobin specific error
RrdDb.createFetchRequest()
method
when this method is called internally by this DataProcessor. If this method is never called, fetch
request resolution defaults to 1 (smallest possible archive step will be chosen automatically).
Parameters: fetchRequestResolution Desired archive step (fetch resoltuion) in seconds.
The default number of pixels is defined by constant DEFAULT_PIXEL_COUNT and can be changed with a DataProcessor method.
Parameters: pixelCount The number of pixels. If you process RRD data in order to display it on the graph, this should be the width of your graph.
RrdDbPool
usage policy.
Parameters: poolUsed true, if the pool should be used to fetch data from RRD files, false otherwise.
"By default rrdgraph calculates the width of one pixel in the time domain and tries to get data at that resolution from the RRD. With this switch you can override this behavior. If you want rrdgraph to get data at 1 hour resolution from the RRD, then you can set the step to 3600 seconds. Note, that a step smaller than 1 pixel will be silently ignored."
I think this option is not that useful, but it's here just for compatibility.
Parameters: step Time step at which data should be fetched from RRD files. If this method is not used, the step will be equal to the smallest RRD step of all processed RRD files. If no RRD file is processed, the step will be roughly equal to the with of one graph pixel (in seconds).