Получить историю метрик объекта

Возвращает историю метрик объекта.

Запрос

HTTP Запрос

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

Права

objectPermissions

Параметры пути

Параметр Тип Описание

id

String
обязательный

ID или discovery ID объекта.

Параметры запроса

Параметр Тип Описание

metrics

String
обязательный

Список запрашиваемых метрик через запятую.

from

String
обязательный

От какой даты искать записи.

downsample

String

Параметр даунсемплинга. Например, 1m-avg или 1h-avg означают "среднее за минуту" и "среднее за час" соответственно.

timezone

String

Часовой пояс для времени метрики. Например, Europe/Moscow. Используйте этот параметр, если часовой пояс сервера отличается от нужного часового пояса.

to

String

До какой даты искать записи.

Тело запроса

Тело запроса пустое.

Ответ

Возвращает массив запрашиваемых метрик. Каждая метрика содержит следующие поля:

Поле Тип Описание

metric

String

Имя метрики.

tags.entity

String

ID сущность с префиксом типа сущности. Формат поля objectxxx для объектов и linkxxx для связей.

dps

Array<DataPoint>

Массив точек данных. Каждая точка состоит из массива из двух значений. Первое значение это время получение метрики, второе – значение метрики в этот момент времени.

Чтобы получить все доступные метрики для объекта, используйте запрос Получить названия метрик объекта.

Пример

Запрос

В переменной object_id хранится ID объекта CPU. Среднюю нагрузку на этот объект за последние 24 часа (26.01.20 12.00 PM - 27.01.20 12.00 PM) может быть получена следующим образом:

  • Bash

  • JavaScript

  • NodeJS

  • Python

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)

Ответ

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