NAME
Whisper - Handle Whisper fixed-size database files
SYNOPSIS
use
Whisper;
# Read archive information
my
$info
= wsp_info(
file
=>
"/path/to/my/database.wsp"
);
# Fetch archive data
my
$data
= wsp_fetch(
file
=>
"/path/to/my/database.wsp"
,
from
=>
$from
,
until
=>
$until
);
# Fetch archive data in the tuples format:
# { values => [ [timestamp, data], [timestamp,data], ... ] }
my
$tuple_data
= wsp_fetch(
file
=>
"/path/to/my/database.wsp"
,
from
=>
$from
,
until
=>
$until
,
format
=>
'tuples'
);
# Fetch archive data in the split format:
# { keys => [timestamp1, timestamp2], values => [data1, data2] }
my
$split_data
= wsp_fetch(
file
=>
"/path/to/my/database.wsp"
,
from
=>
$from
,
until
=>
$until
,
format
=>
'tuples'
);
# Same as fetch tuple/split data but with POSIX::strftime formatted datetime
my
$formatted_tuple_data
= wsp_fetch(
file
=>
"/path/to/my/database.wsp"
,
from
=>
$from
,
until
=>
$until
,
format
=>
'tuples'
date_format
=>
'%Y/%m/%d %H:%M:%S'
);
DESCRIPTION
This is a simple Whisper (fixed-size database) reader.
Whisper archive/databse files (.wsp) are similiar to RRD archive files. For more details about Whisper see http://graphite.wikidot.com/whisper
The following operations are supported:
wsp_info Read basic archive information
wsp_fetch Fetch data points from archive
These operations are planned:
wsp_create Create wsp database
wsp_update Add a data point to a wsp database
wsp_update_bulk Add multiple data points to a wsp database
wsp_merge Merge two wsp database files
Feel free to help implement the above operations.
EXPORTS
By default, use Whisper
exports all the functions listed below.
FUNCTIONS
wsp_info ( %parameters )
Parameters
file String filepath towards a valid .wsp file
Returns
Returns a hash reference with Header/Metadata information:
{
'aggregationType'
=> 1,
'fileSize'
=> 32872,
'archiveCount'
=> 2,
'xFilesFactor'
=>
'0.5'
,
'maxRetention'
=> 2592000
'archives'
=> [
{
'secondsPerPoint'
=> 300,
'points'
=> 2016,
'retention'
=> 604800,
'size'
=> 24192,
'offset'
=> 40
},
{
'secondsPerPoint'
=> 3600,
'points'
=> 720,
'retention'
=> 2592000,
'size'
=> 8640,
'offset'
=> 24232
}
],
};
wsp_fetch ( %parameters )
Parameters
- file String filepath towards a valid .wsp file
- from epoch timestamp, defaults to oldest timepoint in archive
-
until
epoch timestamp, defaults to now
-
format
Valid formats are:
- tuples returns the
values
in a tuple
format
: [ [timestamp1, data1], [timestamp2, data2], ... ]
-
split
returns an array
for
the timestamps in
'keys'
and one
for
the data in
'values'
: {
keys
=> [timestamp1, timestamp2],
values
=> [data1, data2] }
- date_format Dictates the POSIX::strftime
format
for
timestamps in tuples, defaults to epoch timestamp:
%s
Returns
Returns a hash refrence with data points and meta data for the given range:
{
'step'
=> 300,
'end'
=> 1374830700,
'start'
=> 1374830100,
'values'
=> [
'0.000000'
,
'1.000000'
],
'cnt'
=> 2
};
In combination with tuples format, the values is an array of arrays with timestamp,data tuples:
{
'step'
=> 300,
'end'
=> 1374830700,
'start'
=> 1374830100,
'values'
=> [
[ 1374830100,
'0.000000'
],
[ 1374830400,
'1.000000'
]
],
'cnt'
=> 2
};
In combination with split format, the values are accessible under 'values' and timestamps under 'keys'
{
'step'
=> 300,
'end'
=> 1374830700,
'start'
=> 1374830100,
'values'
=> [
'0.000000'
,
'1.000000'
],
'keys'
=> [
1374830100,
1374830400
],
'cnt'
=> 2
};
Or in combination with date_format .e.g: "%Y/%m/%d %H:%M"
{
'step'
=> 300,
'end'
=>
'2013/07/26 11:25'
,
'start'
=>
'2013/07/26 11:15'
,
'values'
=> [
[
'2013/07/26 11:15'
,
'0.000000'
],
[
'2013/07/26 11:20'
,
'1.000000'
]
],
'cnt'
=> 2
};
CVS
Current CVS: https://github.com/corecache/libwhisper-perl
COPYRIGHT AND LICENSE
Original Copyright 2008 Orbitz WorldWide (python) Perl port 2013 Jean Stebens (perl)