5.7.6. TaskKpiHistory¶
Описание¶
Статистика о количестве зарегистрированных ошибок, показателях доступности и количестве потерь за выбранный интервал времени. Статистика включает в себя параметры MLT/MLS. Метод предназначен для генерации отчетов о качестве сервиса.
Внимание
В зависимости от глубины запроса, числа задач и других факторов, время ответа может быть существенным и составлять десятки секунд. Данный метод предназначен для формирования отчетов (редкие запросы). Для получения статистики за последние сутки и за последние 15 минут необходимо использовать метод TaskKpi.
Запрос¶
{ "user_id":(number),
"methods":[{
"method":"TaskKpi",
"params":{
"project_id":(number),
"task_ids":' id1 | [id1,id2] | "*" ',
"period_from": (number),
"period_to": (number),
"interval": (number)}}]}
user_id — целое число, идентификатор пользователя;
project_id — целое число, идентификатор проекта пользователя;
- task_ids — идентификаторы задач, поле может задаваться в одном из следующих форматов:
id1
— целое число, идентификатор задачи;[id1,id2]
— массив целых чисел, идентификаторы задач;"*"
— строка, символ «звездочки», запрос информации обо всех активных задачах всех запущенных зондов в проекте. period_from — целое число, время в формате Unix, отличное от 0. Задает начало периода запроса;
period_to — целое число, время в формате Unix, большее, чем period_from. Задает конец периода запроса;
interval (опциональное поле) — целое число, размер интервала в минутах для получения всей статистики, по умолчанию — 1 сутки (1440 минут). Поле может принимать значение в диапазоне 15 — 1440 минут, иначе будет использован интервал по умолчанию, и в ответе будет присутствовать предупреждение.
Ответ¶
В системе Boro вычисление статистики разбивается на 15-минутные (900 сек.) интервалы, результаты которых сохраняются в базу данных. Из 15-минутных интервалов можно строить более крупные отчеты, например часовые или суточные. Благодаря такому решению можно извлекать информацию в границах суток для разных часовых поясов, вне зависимости от часового пояса сервера. Поле interval в запросе задает размер интервалов, на которые будут разбиты данные в ответе. Значение поля должно быть кратным 15 минутам и находиться в диапазоне 15 – 1440 минут. Если значение не кратно 15 минутам, оно округляется до меньшего действующего значения. Например, 44 минуты округляются до 30 минут.
Данные о доступности сервиса возвращаются в формате: время мониторинга + секунды ошибок. Более подробно об этом можно узнать в методе TaskKpi (Получение метрики Доступность).
{
"reply":[{
"method":"TaskKpiHistory",
"result":[
{
"task_id":(number),
"sections":[
[
"StartTime",
"MonitoringTime",
"Total",
"QOE",
"QOS",
"Alarms",
"States"
],
[
(number),
(number),
(number),
(number),
(number),
{
"Seconds":{
"ok":(number),
"warning":(number),
"error":(number),
"major":(number),
"fatal":(number),
"total":(number),
"badSource":(number),
"audioSilence":(number),
"videoFreeze":(number)
},
"Counts":{...}
},
{
"Seconds":{
"ok":(number),
"warning":(number),
"error":(number),
"major":(number),
"fatal":(number),
"total":(number),
"badSource":(number),
"audioSilence":(number),
"videoFreeze":(number)
"mlr":(number)
},
"Counts":{...}}]]}]}]}
task_id — целое число, идентификатор задачи;
- sections — объект, история за указанный в запросе период времени, разбитая на секции. Метрики возвращаются в виде таблицы, заключенной в JSON, где первая строка передает заголовки таблицы, а последующие строки передают значения:
StartTime — целое число, время в формате Unix, задает начало измерения каждой из секций;
MonitoringTime — целое число, длительность мониторинга на выбранном интервале в секундах;
Total — целое число, общее время секунд-ошибок (error seconds) для всех задействованных ключевых метрик доступности в секундах;
QOE — целое число, время секунд-ошибок ключевых метрик QoE в секундах;
QOS — целое число, время секунд-ошибок ключевых метрик QoS в секундах;
- Alarms — объект, содержит информацию о количестве срабатываний триггеров различных уровней критичности и их суммарной длительности. См. раздел Статистика по Алармам в главе KpiView. Также объект может содержать индивидуальную статистику по определенным триггерам:
- seconds — объект, длительность срабатываний триггеров:
ok .. fatal — вещественное число, длительность срабатывания триггеров по каждому уровню критичности в секундах;
total — вещественное число, суммарная длительность триггеров всех уровней критичности в секундах;
badSource — вещественное число, длительность срабатывания триггера Ошибка источника (нет сигнала) в секундах.
audioSilence — вещественное число, длительность срабатывания триггера Тишина в звуковом сопровождении в секундах.
videoFreeze — вещественное число, длительность срабатывания триггера Замирание картинки в секундах.
- counts — объект, количество срабатываний триггеров:
ok .. fatal — целое число, количество срабатываний триггеров по каждому уровню критичности;
total — целое число, суммарное количество срабатываний триггеров всех уровней критичности;
badSource — целое число, количество срабатываний триггера Ошибка источника (нет сигнала).
audioSilence — целое число, количество срабатываний триггера Тишина в звуковом сопровождении.
videoFreeze — целое число, количество срабатываний триггера Замирание картинки.
- States — объект, содержит информацию о количестве и длительности состояний/событий, принятых от зонда, на основании которых система оповещения генерирует алармы. В интерфейсе Boro на вкладке KpiView ➝ Reports данная информация не представлена, за исключением ключевых состояний (например, Ошибка источника). Также объект содержит информацию о метриках MLS/MLT:
- seconds — объект, длительность состояний/событий:
ok .. fatal — вещественное число, длительность состояний/событий по каждому уровню критичности в секундах. Уровень критичности берется из настройки аларма, связанного с событием;
total — вещественное число, суммарная длительность состояний/событий в секундах;
badSource — вещественное число, длительность состояния Ошибка источника (нет сигнала) в секундах;
audioSilence — вещественное число, длительность состояния Тишина в звуковом сопровождении в секундах;
videoFreeze — вещественное число, длительность состояния Замирание картинки в секундах;
mlr — вещественное число, Media Loss Seconds — время в секундах, в течение которого регистрировалась потеря пакетов за последние 15 мин/24 ч наблюдения.
- counts — объект, количество состояний/событий:
ok .. fatal — целое число, количество состояний/событий по каждому уровню критичности. Уровень критичности берется из настройки аларма, связанного с событием;
total — целое число, суммарное количество состояний/событий;
badSource — целое число, количество возникновений состояния Ошибка источника (нет сигнала);
audioSilence — целое число, количество возникновений состояния Тишина в звуковом сопровождении;
videoFreeze — целое число, количество возникновений состояния Замирание картинки;
mlr — целое число, Media Loss Total — общее число медиапакетов, потерянных за последние 15 мин/24 ч наблюдения.
Пример¶
#Запрос истории статистики для одной задачи с размером интервала, равного суткам.
#Период запроса составляет двое суток с "2 июля 2024 г., 00:00:00 GMT" по "4 июля 2024 г., 00:00:00 GMT"
curl http://172.16.11.111/ctrl_api/v1/json \
-H "Content-Type: application/json" \
--data '{"user_id":4,"methods":[{"method":"TaskKpiHistory","params":{"project_id":23,"task_ids":458684,"interval":1440,"period_from":1719878400,"period_to":1720051200}}]}'
{"reply":[{
"method":"TaskKpiHistory",
"result":[
{
"task_id":458684,
"sections":[
[
"StartTime",
"MonitoringTime",
"Total",
"QOE",
"QOS",
"Alarms",
"States"
],
[
1719878400,
86400,
13,
0,
13,
{
"Seconds":{
"ok":0,
"mlr":0,
"error":0,
"fatal":0,
"major":11.000505208969116,
"total":11.000505208969116,
"warning":0,
"audioSilence":0,
"videoFreeze": 0,
"badSource":3.8531429767608643
},
"Counts":{
"ok":0,
"error":0,
"fatal":0,
"major":8,
"total":8,
"warning":0,
"audioSilence":0,
"videoFreeze": 0,
"badSource":1
}
},
{
"Seconds":{
"ok":0,
"mlr":5,
"error":2.0011720657348633,
"fatal":0,
"major":68.51955962181091,
"total":73.52073168754578,
"warning":0,
"audioSilence":0,
"videoFreeze": 0,
"badSource":7.005940198898315
},
"Counts":{
"ok":0,
"mlr":81,
"error":1,
"fatal":0,
"major":43,
"total":44,
"warning":0,
"audioSilence":0,
"videoFreeze": 0,
"badSource":1
}
}
],
[
1719964800,
86400,
20,
0,
20,
{
"Seconds":{
"ok":0,
"mlr":0,
"error":0,
"fatal":0,
"major":14.47293734550476,
"total":14.47293734550476,
"warning":0,
"audioSilence":0,
"videoFreeze": 0,
"badSource":12.783230781555176
},
"Counts":{
"ok":0,
"error":0,
"fatal":0,
"major":2,
"total":2,
"warning":0,
"audioSilence":0,
"videoFreeze": 0,
"badSource":1
}
},
{
"Seconds":{
"ok":0,
"mlr":4,
"error":2.0013949871063232,
"fatal":0,
"major":69.75433158874512,
"total":73.75572657585144,
"warning":0,
"audioSilence":0,
"videoFreeze": 0,
"badSource":16.011757135391235
},
"Counts":{
"ok":0,
"mlr":57,
"error":1,
"fatal":0,
"major":34,
"total":35,
"warning":0,
"audioSilence":0,
"videoFreeze": 0,
"badSource":1}}]]}]}]}