prometheus
The datasource.prometheus module allows send queries to a Prometheus datasource
It may be any source, which supports a PromQL. For example Victoria Metrics
Usage:
Methods
query
query('<QUERY>'[, <QUERY_OPTIONS>]) result, error
A result format:
{
    {
        metrics = {
            <METRIC_NAME> = <METRIC_VALUE>,
            ...
        },
        value = {
            timestamp = <TIMESTAMP>,
            value = <VALUE>
        }
    },
    ...
}
An options:
An example:
script.lua
local prom = require('datasource.prometheus.dev')
local res, err = prom.query("node_cpu_seconds_total")
if err ~= nil then
    return
end
-- res 
{
    ...
    {
        metrics = {
            __name__ = node_cpu_seconds_total
            cpu = 7
            datacenter = dc1
            job = node_exporter
            mode = softirq
        }
        value = {
            timestamp = 1581934085
            value = 118687.2
        }
    },
    {
        metrics = {
            __name__ = node_cpu_seconds_total
            cpu = 6
            datacenter = dc1
            job = node_exporter
            mode = idle
        }
        value = {
            timestamp = 1581934085
            value = 3.95205464e+06
    },
    ...
 }
range
range('<QUERY>'[, <QUERY_OPTIONS>]) result, error
A result format:
{
    {
        metrics = {
            <METRIC_NAME> = <METRIC_VALUE>,
            ...
        },
        values = {
            {
                timestamp = <TIMESTAMP>,
                value = <VALUE>
            },
            ...
        }
    },
    ...
}
An options:
{
    start = <TIME RFC3339|Timestamp>    -- start time
    end = <TIME RFC3339|Timestamp>      -- end time
    step = <NUMBER>                     -- Query resolution step width in duration format or float number of seconds
}
An example:
script.lua
  
              
            local prom = require('datasource.prometheus.dev')
local res, err = prom.range("node_cpu_seconds_total")
if err ~= nil then
    return
end
-- res 
{
    ...
    {
        metrics = {
            __name__ = node_cpu_seconds_total
            cpu = 7
            datacenter = dc1
            job = node_exporter
            mode = softirq
        }
        values = {
            {
                timestamp = 1581837350,
                value = 186776.71
            },
            {
                timestamp = 1581840950,
                value = 186770.40
            },
            ...
        }
    },
    {
        metrics = {
            __name__ = node_cpu_seconds_total
            cpu = 6
            datacenter = dc1
            job = node_exporter
            mode = idle
        }
        values = {
            {
                timestamp = 1581837350,
                value = 186776.71
            },
            {
                timestamp = 1581840950,
                value = 186770.40
            },
            ...
        }
    },
    ...
 }