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:

\[Availability\,(\%) = \frac{Monitoring\,Time - Error\,Seconds}{Monitoring\,Time} \times 100\%\]

где:

  • 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 в секундах.

Пример

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