Skip to content

Get Object's Metrics History

Returns object's history of metrics.

Request

HTTP Request

GET /node/api/objects/:id/history

Permissions

objectPermissions

Path parameters

Parameters Type Description
id String
required
The ID or discovery ID of the object whose metrics history must be retrieved.

Query parameters

Parameter Type Description
metrics Stringrequired A comma-separated list of metrics to be retrieved.
from String required A lower-bound timestamp of metrics' values.
downsample String optional A down-sampling parameter. For example, 1m-avg or 1h-avg denote "one minute average" and "one hour average" accordingly.
timezone String optional A timezone of metrics' values. For example, Europe/Moscow. Use this parameter if a server's timezone doesn't match your local one and you need to get metrics without time shift.
to String optional An upper-bound timestamp of metrics' values. If not specified, considered equal to your current local time.

Request body

The request body is empty.

Response

Returns an array of requested metrics. Each metric contains the following fields:

Field Type Description
metric String Metric name.
tags.entity String The ID of the entity prefixed by the type of the entity. The format is objectxxx for objects and linkxxx for links.
aggregateTags Array Work In Progress
dps Array<DataPoint> An array of data points. Each data point is represented by an array that contains two values. The first one is a timestamp, the second one is value.

Info

To get all available metrics for an object, use the Get Object Stat Metrics method.

Example

Request

Provided that object_id is an ID of CPU, its average 1-hour load for 24 hours (26.01.20 12.00 PM - 27.01.20 12.00 PM) can be retrieved as follows:

login=<...>
password=<...>
saymon_hostname=<...>
object_id=<...>
url=https://$saymon_hostname/node/api/objects/$object_id/history

curl -X GET $url -u $login:$password -G \
    --data-urlencode "metrics=percentageUsage.combined" \
    --data-urlencode "from=1580029200000" \
    --data-urlencode "to=1580115600000" \
    --data-urlencode "downsample=1h-avg"
let login = <...>
let password = <...>
let saymonHostname = <...>
let objectId = <...>

let queryParams =
    "metrics=percentageUsage.combined" + "&" +
    "from=1580029200000" + "&" +
    "to=1580115600000" + "&" +
    "downsample=1h-avg";

let path = "/node/api/objects/" + objectId + "/history" + "?" + queryParams;

let auth = "Basic " + btoa(login + ":" + password);

let headers = new Headers();
headers.append("Authorization", auth);

let requestOptions = {
    method: "GET",
    headers: headers
};

fetch(saymonHostname + path, requestOptions)
    .then(response => response.text())
    .then(result => console.log(result))
    .catch(error => console.log("error", error));
const http = require("http");
const querystring = require("querystring");

let login = <...>
let password = <...>
let saymonHostname = <...>
let objectId = <...>

let queryParams = querystring.stringify({
    metrics : "percentageUsage.combined",
    from : "1580029200000",
    to : "1580115600000",
    downsample: "1h-avg"
});

let path = "/node/api/objects/" + objectId + "/history" + "?" + queryParams;
let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");

let options = {
    "method": "GET",
    "hostname": saymonHostname,
    "headers": {
        "Authorization": auth
    },
    "path": path
};

let req = http.request(options, function (res) {
    let chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        let body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

login = <...>
password = <...>
saymon_hostname = <...>
object_id = <...>
url = "https://" + saymon_hostname + "/node/api/objects/" + \
    object_id + "/history"

params = {
    "metrics": "percentageUsage.combined",
    "from": "1580029200000",
    "to": "1580115600000",
    "downsample": "1h-avg"
}

response = requests.request("GET", url, auth=(login, password), params=params)
print(response.text)

Response

[
    {
        "metric": "percentageUsage.combined",
        "tags": {
            "entity": "obj5e7dc67bc50bdc08abbf16ac"
        },
        "aggregateTags": [],
        "dps": [
            [
                1585301160000,
                6.626150080189077
            ],
            [
                1585301280000,
                2.9540481400437635
            ],
            ...
        ]
    }
]

See Also