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

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

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

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

Запрос ​

HTTP Запрос ​

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

Права ​

text
objectPermissions

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

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

обязательный | ID или discovery ID объекта. |

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

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

обязательный | Список запрашиваемых метрик через запятую. | | from | String

обязательный | От какой даты искать записи. | | downsample | String | Параметр даунсемплинга. Например, 1m-avg или 1h-avg означают "среднее за минуту" и "среднее за час" соответственно. | | timezone | String | Часовой пояс для времени метрики. Например, Europe/Moscow. Используйте этот параметр, если часовой пояс сервера отличается от нужного часового пояса. | | to | String | До какой даты искать записи. |

Тело запроса ​

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

Ответ ​

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

ПолеТипОписание
metricStringИмя метрики.
tags.entityStringID сущность с префиксом типа сущности. Формат поля objectxxx для объектов и linkxxx для связей.
dpsArray<DataPoint>Массив точек данных. Каждая точка состоит из массива из двух значений. Первое значение это время получение метрики, второе – значение метрики в этот момент времени.

NOTE

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

Пример ​

Запрос ​

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

  • Bash
  • JavaScript
  • NodeJS
  • Python
bash
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"
javascript
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));
javascript
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();
python
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)

Ответ ​

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

Смотрите также ​