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 ч наблюдения. 
 
 
 
 
 
 
Пример¶
cURL¶#Запрос истории статистики для одной задачи с размером интервала, равного суткам.
#Период запроса составляет двое суток с "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}}]]}]}]}