5.7.5. TaskKpi¶
Описание¶
Статистика о количестве зарегистрированных ошибок, показателях доступности и количестве потерь за последние сутки и за последние 15 минут. Статистика включает в себя параметры MLT/MLS. Метод позволяет получить большинство данных, которые можно найти на вкладке KpiView ➝ Health (детальное описание получаемых данных).
Запрос¶
{ "user_id":(number),
"methods":[{
"method":"TaskKpi",
"params":{
"project_id":(number),
"task_ids":' id1 | [id1,id2] | "*" '
"interval": (number)}}]}
user_id — целое число, идентификатор пользователя;
project_id — целое число, идентификатор проекта пользователя;
- task_ids — идентификаторы задач, поле может задаваться в одном из следующих форматов:
id1
— целое число, идентификатор задачи;[id1,id2]
— массив целых чисел, идентификаторы задач;"*"
— строка, символ «звездочки», запрос информации обо всех активных задачах всех запущенных зондов в проекте. interval (опциональное поле) — целое число, размер интервала в минутах для получения статистики о доступности сервиса; размер интервала по умолчанию — 2 часа (120 минут). Поле может принимать значение в диапазоне 15 – 1440 минут, иначе будет использован интервал по умолчанию, и в ответе будет присутствовать предупреждение. Подробности в разделе ниже.
Получение метрики Доступность¶
Доступность сервиса — это статистическая величина, которая является числовым выражением качества предоставляемого сервиса. Формула доступности приведена в рекомендации ANSI/SCTE 168-6:
где:
Monitoring Time — время мониторинга;
Error Seconds — количество секунд-ошибок, обнаруженных за время мониторинга.
Формула учитывает время мониторинга, а не время предоставления сервиса, т.к. только во время наблюдения за сервисом можно достоверно сказать о наличии или отсутствии в нем ошибок. В системе Boro вычисление доступности разбивается на 15-минутные (900 сек.) интервалы, результаты которых сохраняются в базу данных. Из 15-минутных интервалов можно строить более крупные отчеты, например часовые или суточные. Больше информации доступно в Руководстве пользователя.
Поле interval в запросе задает размер интервалов, на которые будут разбиты данные о доступности сервиса за последние сутки мониторинга. Значение поля должно быть кратным 15 минутам и находиться в диапазоне 15 – 1440 минут. Если значение не кратно 15 минутам, оно округляется до меньшего действующего значения. Например, 44 минуты округляются до 30 минут.
Таким образом, можно получать данные как для построения мини-графиков тренда, так и детальных графиков доступности. Варианты отображения можно найти на вкладке KpiView ➝ Health (см. раздел Доступность сервиса).
Ответ¶
{"reply":[{
"method":"TaskKpi",
"result":[
{
"task_id":(number),
"alarms_stat":{
"15min":{
"seconds":{
"ok":(number),
"warning":(number),
"error":(number),
"major":(number),
"fatal":(number),
"total":(number),
"badSource":(number),
"audioSilence":(number),
"videoFreeze":(number)
},
"counts":{...},
"actualWindowSize":(number)
},
"24h":{
"seconds":{...},
"counts":{...},
"actualWindowSize":(number)
}
},
"states_stat":{
"15min":{
"seconds":{
"ok":(number),
"warning":(number),
"error":(number),
"major":(number),
"fatal":(number),
"total":(number),
"badSource":(number),
"audioSilence":(number),
"videoFreeze":(number)
"mlr":(number)
},
"counts":{...},
"actualWindowSize":(number)
},
"24h":{
"seconds":{...},
"counts":{...},
"actualWindowSize":(number)
}
},
"kpi_stat":{
"15min":{
"QOS":(number),
"QOE":(number),
"Total":(number),
"MonitoringTime":(number)
},
"24h":{...},
"sections":[
[
"StartTime",
"MonitoringTime",
"Total",
"QOE",
"QOS"
],
[
(number),
(number),
(number),
(number),
(number)]]}}]}]}
task_id — целое число, идентификатор задачи;
- alarms_stat — объект, содержит информацию о количестве срабатываний триггеров различных уровней критичности и их суммарной длительности. См. раздел Статистика по Алармам в главе KpiView. Также объект может содержать индивидуальную статистику по определенным триггерам:
- 15min и 24h — объекты, интервалы измерения статистики алармов. Статистика собирается методом скользящего окна:
- seconds — объект, длительность срабатываний триггеров на интервале измерения:
ok .. fatal — вещественное число, длительность срабатывания триггеров по каждому уровню критичности в секундах;
total — вещественное число, суммарная длительность триггеров всех уровней критичности в секундах;
badSource — вещественное число, длительность срабатывания триггера Ошибка источника (нет сигнала) в секундах.
audioSilence — вещественное число, длительность срабатывания триггера Тишина в звуковом сопровождении в секундах.
videoFreeze — вещественное число, длительность срабатывания триггера Замирание картинки в секундах.
- counts — объект, количество срабатываний триггеров на интервале измерения:
ok .. fatal — целое число, количество срабатываний триггеров по каждому уровню критичности;
total — целое число, суммарное количество срабатываний триггеров всех уровней критичности;
badSource — целое число, количество срабатываний триггера Ошибка источника (нет сигнала).
audioSilence — целое число, количество срабатываний триггера Тишина в звуковом сопровождении.
videoFreeze — целое число, количество срабатываний триггера Замирание картинки.
actualWindowSize — вещественное число, действительное время мониторинга на интервалах 15 мин/24 ч в секундах. Может отличаться от 15 мин/24 ч, когда: 1) задача только запущена; 2) задача кратковременно останавливалась/падала или были потери соединения с зондом.
- states_stat — объект, содержит информацию о количестве и длительности состояний/событий, принятых от зонда, на основании которых система оповещения генерирует алармы. В интерфейсе Boro на вкладке KpiView ➝ Health данная информация не представлена, за исключением ключевых состояний (например, Ошибка источника). Также объект содержит информацию о метриках MLS/MLT:
- 15min и 24h — объекты, интервалы измерения статистики состояний/событий и 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 ч наблюдения.
actualWindowSize — вещественное число, действительное время мониторинга на интервалах 15 мин/24 ч в секундах. Может отличаться от 15 мин/24 ч, когда: 1) задача только запущена; 2) задача кратковременно останавливалась/падала или были потери соединения с зондом.
- kpi_stat — объект, содержит информацию о доступности сервиса. См. раздел Доступность сервиса в главе KpiView:
- 15min и 24h — объекты, интервалы измерения статистики о доступности сервиса. Статистика собирается методом скользящего окна:
QOS — целое число, время секунд-ошибок (error seconds) ключевых метрик QoS в секундах;
QOE — целое число, время секунд-ошибок ключевых метрик QoE в секундах;
Total — целое число, общее время секунд-ошибок для всех задействованных ключевых метрик доступности в секундах;
MonitoringTime — целое число, длительность мониторинга на выбранном интервале в секундах.
- sections — объект, доступность сервиса за последние 24 часа мониторинга, разбитая на секции для отображения на графиках или трендах. См. подробности в описании запроса в разделе Получение метрики Доступность. Метрики возвращаются в виде таблицы, заключенной в JSON, где первая строка передает заголовки таблицы, а последующие строки передают значения:
StartTime — целое число, время в формате Unix, задает начало измерения каждой из секций;
MonitoringTime — целое число, длительность мониторинга в рамках определенной секции в секундах;
Total — целое число, общее время секунд-ошибок (error seconds) для всех задействованных ключевых метрик доступности в секундах;
QOE — целое число, время секунд-ошибок ключевых метрик QoE в секундах;
QOS — целое число, время секунд-ошибок ключевых метрик QoS в секундах.
Пример¶
#Запрос статистики для одной задачи с разбиением KPI на 4 интервала
curl http://172.16.11.111/ctrl_api/v1/json \
-H "Content-Type: application/json" \
--data '{"user_id":4,"methods":[{"method":"TaskKpi","params":{"project_id":23,"task_ids":458684,"interval":360}}]}'
{
"reply":[
{
"method":"TaskKpi",
"result":[
{
"task_id":458684,
"alarms_stat":{
"15min":{
"seconds":{
"major":0,
"fatal":0,
"total":0,
"badSource":0,
"audioSilence": 0,
"videoFreeze": 0,
"warning":0,
"error":0,
"ok":0
},
"counts":{
"error":0,
"badSource":0,
"audioSilence": 0,
"videoFreeze": 0,
"warning":0,
"fatal":0,
"total":0,
"major":0,
"ok":0
},
"actualWindowSize":893.9871234893799
},
"24h":{
"seconds":{
"mlr":0,
"error":0,
"fatal":0,
"major":10.103976011276245,
"total":10.103976011276245,
"warning":0,
"badSource":5.190662622451782,
"audioSilence": 0,
"videoFreeze": 0,
"ok":0
},
"counts":{
"error":0,
"fatal":0,
"major":5,
"total":5,
"warning":0,
"badSource":2,
"audioSilence": 0,
"videoFreeze": 0,
"ok":0
},
"actualWindowSize":86400
}
},
"states_stat":{
"15min":{
"seconds":{
"warning":0,
"major":0,
"total":0,
"mlr":0,
"ok":0,
"error":0,
"fatal":0,
"audioSilence": 0,
"videoFreeze": 0,
"badSource":0
},
"counts":{
"error":0,
"total":0,
"mlr":0,
"major":0,
"warning":0,
"audioSilence": 0,
"videoFreeze": 0,
"badSource":0,
"fatal":0,
"ok":0
},
"actualWindowSize":893.9871234893799
},
"24h":{
"seconds":{
"mlr":6.991044521331787,
"error":2.0011396408081055,
"fatal":0,
"major":92.99074816703796,
"total":96.98152017593384,
"warning":0,
"badSource":13.008315324783325,
"audioSilence": 0,
"videoFreeze": 0,
"ok":0
},
"counts":{
"badSource":2,
"audioSilence": 0,
"videoFreeze": 0,
"ok":0,
"mlr":80,
"error":1,
"fatal":0,
"major":50,
"warning":0,
"total":51
},
"actualWindowSize":86400
}
},
"kpi_stat":{
"15min":{
"Total":0,
"QOS":0,
"QOE":0,
"MonitoringTime":900
},
"24h":{
"MonitoringTime":85500,
"Total":18,
"QOE":0,
"QOS":18
},
"sections":[
[
"StartTime",
"MonitoringTime",
"Total",
"QOE",
"QOS"
],
[
1718789400,
21600,
0,
0,
0
],
[
1718811000,
21600,
0,
0,
0
],
[
1718832600,
21600,
18,
0,
18
],
[
1718854200,
20700,
0,
0,
0]]}}]}]}