mirror of
https://github.com/ntop/ntopng.git
synced 2026-04-30 07:59:35 +00:00
Implement layer above RRD for timeseries storage
This commit is contained in:
parent
d161704639
commit
cb56b5d5ec
12 changed files with 1038 additions and 293 deletions
109
scripts/lua/modules/timeseries/ts_utils.lua
Normal file
109
scripts/lua/modules/timeseries/ts_utils.lua
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
--
|
||||
-- (C) 2018 - ntop.org
|
||||
--
|
||||
|
||||
--[[
|
||||
Data model:
|
||||
|
||||
- schema: a set of <schema_name, tags, metrics, options>
|
||||
- schema_name: a unique schema identifier
|
||||
- tags: an ordered list of <tag_name, tag_value>. A tag is an instance identifier.
|
||||
- metrics: an ordered list of metrics.
|
||||
- metric: a single metric (e.g. byte sent) for the instance within the schema.
|
||||
- options: variable options, divided between driver dependent/independent
|
||||
E.g. {step=60, driver={rrd={ .. RRD specific options ..}}}
|
||||
]]
|
||||
|
||||
local ts_utils = {}
|
||||
|
||||
-- Import other modules
|
||||
ts_utils.metrics = require "ts_types"
|
||||
ts_utils.schema = require "ts_schema"
|
||||
|
||||
package.path = dirs.installdir .. "/scripts/lua/modules/timeseries/drivers/?.lua;" .. package.path
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
-- All the drivers
|
||||
|
||||
--TODO
|
||||
local dirs = ntop.getDirs()
|
||||
local rrd_driver = require("rrd"):new({base_path = (dirs.workingdir .. "/rrd_new")})
|
||||
|
||||
function ts_utils.listDrivers()
|
||||
--TODO
|
||||
return {rrd_driver}
|
||||
end
|
||||
|
||||
-- Only active drivers
|
||||
function ts_utils.listActiveDrivers()
|
||||
--TODO
|
||||
return {rrd_driver}
|
||||
end
|
||||
|
||||
function ts_utils.enableDriver(driver)
|
||||
--TODO
|
||||
end
|
||||
|
||||
function ts_utils.disableDriver(driver)
|
||||
--TODO
|
||||
end
|
||||
|
||||
function ts_utils.newSchema(name, options)
|
||||
return Schema:new(name, options)
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
function ts_utils.append(schema, tags_and_metrics, timestamp, verbose)
|
||||
timestamp = timestamp or os.time()
|
||||
local tags, data = schema:verifyTagsAndMetrics(tags_and_metrics)
|
||||
|
||||
if not tags then
|
||||
return false
|
||||
end
|
||||
|
||||
local rv = true
|
||||
|
||||
if verbose then
|
||||
traceError(TRACE_NORMAL, TRACE_CONSOLE, "TS.UPDATE [".. schema.name .."] " .. table.tconcat(tags_and_metrics, "=", ","))
|
||||
end
|
||||
|
||||
for _, driver in pairs(ts_utils.listActiveDrivers()) do
|
||||
rv = driver:append(schema, timestamp, tags, data) and rv
|
||||
end
|
||||
|
||||
return rv
|
||||
end
|
||||
|
||||
function ts_utils.query(schema, tags, tstart, tend)
|
||||
if not schema:verifyTags(tags) then
|
||||
return false
|
||||
end
|
||||
|
||||
local rv = true
|
||||
|
||||
for _, driver in pairs(ts_utils.listActiveDrivers()) do
|
||||
rv = driver:query(schema, tstart, tend, tags) and rv
|
||||
end
|
||||
|
||||
return rv
|
||||
end
|
||||
|
||||
function ts_utils.delete(schema, tags)
|
||||
if not schema:verifyTags(data) then
|
||||
return false
|
||||
end
|
||||
|
||||
local rv = true
|
||||
|
||||
for _, driver in pairs(ts_utils.listActiveDrivers()) do
|
||||
rv = driver:delete(schema, tags) and rv
|
||||
end
|
||||
|
||||
return rv
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
return ts_utils
|
||||
Loading…
Add table
Add a link
Reference in a new issue