In [ ]:
package.loaded.metrics = nil
metrics = require 'metrics'

In [ ]:
-- run some experiments
for k, v in ipairs({1, 2, 3}) do
    -- open a new log
    log = metrics.Log('/tmp/log' .. v)

    -- do some iterations
    for i = 1, 10 do
        -- basic metric
        log:set("sqrt", math.sqrt(i * v))

        -- "grouped" metrics
        log:set("log:v1", math.log(i * v))
        log:set("log:v2", math.log(1.3 * i * v))

        -- "calculated" metrics
        for j = 1, 5 do
            log:sum("sum", math.pow(i * v, j))
            log:mean("mean", math.pow(i * v, j))
        end

        log:commit()
    end

    -- incomplete row
    log:set("log:v1", 2 * v)
    log:commit()

    -- extra column
    log:set("extra1", 2 * v)
    log:commit()

    -- another extra column...
    log:set("extra1", 3 * v)
    
    -- ...and row print
    print(log:commit())

    log:close()
end

In [ ]:
local x = os.execute('cat /tmp/log1')

In [ ]:
package.loaded.dashboard = nil
dashboard = require 'dashboard'

In [ ]:
dashboard.show({
    datasets = {
        { name = 'log01', path = '/tmp/log1'},
        { name = 'log02', path = '/tmp/log2'},
        { name = 'log03', path = '/tmp/log3', shift = 2 }},
    type = 'circle',     -- chart type, 'line' or 'circle'
    --from = 2,          -- first step to plot
    --to = 9,            -- last step to plot
    --cut = 3,           -- remove last steps
    --groups = 'log',    -- regexp for filtering groups
    --metrics = 'log02'  -- regexp for filtering metrics
    --movingAverage = 3, -- use Moving Average for all steps
})

In [ ]: