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}}]]}]}]}