5.6.1. TaskInfo

Описание

Полная информация о состоянии задач и их настройках.

Запрос

{
  "user_id":(number),
  "methods":[
    {
      "method":"TaskInfo",
      "params":{
        "project_id":(number),
        "task_ids":' id1 | [id1,id2] | "*" '
      }
    }
  ]
}
  • user_id - целое число, идентификатор пользователя;

  • project_id - целое число, идентификатор проекта пользователя;

  • task_ids - идентификаторы задач, поле может задаваться в одном из следующих форматов:
    id1 - целое число, идентификатор задачи;
    [id1,id2] - массив целых чисел, идентификаторы задач;
    "*" - строка, символ «звездочки», запрос информации обо всех активных задачах всех запущенных зондов в проекте.

Ответ

{
  "reply":[
    {
      "method":"TaskInfo",
      "result":[
        {
          "task_id":(number),
          "app_id":(number),
          "uri":(string),
          "name":(string),
          "status":(string),
          "start":(string),
          "start_f":(number),
          "service":(string),
          "tags":(string),
          "profiles":{
            "alarm":[(number)],
            "email":[(number)],
            "threshold":[(number)],
            "pagerduty":[(number)],
            "record":[(number)],
            "snmp":[(number)],
            "webhook":[(number)],
            "telegram":[(number)],
            "kpi":[(number)]
          },
          "task_config":{
            ...
          }
          "description": {
            ...
          }
        }
      ]
    }
  ]
}
  • task_id - целое число, идентификатор задачи;

  • app_id - целое число, идентификатор зонда;

  • uri - строка, путь к анализируемому потоку (сервису, файлу);

  • name - строка, имя потока (например, название канала);

  • status - строка, состояние задачи:
    Scheduled - задача поставлена на запуск. Данное состояние назначается задачам, запускаемым через API. Далее состояние изменяется на одно из описанных ниже состояний, в зависимости от успешности запуска задачи;
    Started - задача запущена;
    Stopped - задача остановлена;
    Stalled - задача остановлена некорректно. Сервер перестал получать данные анализа, но команда на остановку задачи не была получена. Обычно связано с потерей связи сервера с зондом или некорректным завершением работы зонда;
    Rejected - запуск задачи был отклонен. Информацию о причине можно найти в web-интерфейсе в журнале событий задачи.
  • start - строка, дата и время создания задачи;

  • start_f - вещественное число, дата создания задачи в формате Unix time с дробной частью (для увеличения точности отсчетов);

  • service - строка, идентификационное имя сервиса (канала) для консолидации состояний и ошибок сервиса из разных точек мониторинга. Данное поле связывает задачи проекта от разных зондов на виде MosaicView;

  • tags - строка, список тегов, разделенный запятыми. Теги применяются для фильтрации отображения на различных видах;

  • profiles - объект, перечень идентификаторов профилей настроек системы оповещения, записи и доступности сервиса:
    • alarm - массив целых чисел, идентификатор профиля настроек триггеров Alarm оповещения. Текущая реализация позволяет задать только один профиль данного типа;

    • email - массив целых чисел, идентификаторы профилей настроек триггеров E-mail оповещения;

    • threshold - массив целых чисел, идентификатор профиля настроек и пороговых значений зонда. Текущая реализация позволяет задать только один профиль данного типа;

    • pagerduty - массив целых чисел, идентификаторы профилей настроек триггеров оповещения в систему PagerDuty;

    • record - массив целых чисел, идентификаторы профилей настроек записи;

    • snmp - массив целых чисел, идентификаторы профилей настроек триггеров SNMP оповещения;

    • webhook - массив целых чисел, идентификаторы профилей настроек триггеров Webhook оповещения;

    • telegram - массив целых чисел, идентификаторы профилей настроек триггеров оповещения в мессенджер Telegram;

    • kpi - массив целых чисел, идентификатор профиля настроек доступности сервиса. Текущая реализация позволяет задать только один профиль данного типа.

  • task_config - объект, настройки и дополнительная информация о задаче. Смотрите описание структуры в разделе Конфигурация задачи;

  • description - объект, описание реляционных отношений между родительской задачей и дочерними задачами. Мониторинг некоторых типов сервисов требует запуска нескольких задач, ознакомиться с подробностями можно в параграфе Иерархия сущностей системы Boro. Варианты наполнения объекта при запросе информации для различных типов задач рассмотрены в примерах ниже.

Пример

Запрос утилитой cURL
#1. Запрос информации для одной задачи зонда
  curl http://172.16.11.111/ctrl_api/v1/json \
   -H "Content-Type: application/json" \
   --data '{"user_id":4,"methods":[{"method":"TaskInfo", "params":{"project_id":23,"task_ids":238733}}]}'

#2. Запрос информации для нескольких задач зонда
  curl http://172.16.11.111/ctrl_api/v1/json \
   -H "Content-Type: application/json" \
   --data '{"user_id":4,"methods":[{"method":"TaskInfo", "params":{"project_id":23,"task_ids":[234590,234175]}}]}'

#3. Запрос информации обо всех активных задачах всех запущенных зондов в проекте.
  curl http://172.16.11.111/ctrl_api/v1/json \
   -H "Content-Type: application/json" \
   --data '{"user_id":4,"methods":[{"method":"TaskInfo", "params":{"project_id":23,"task_ids":"*"}}]}'
Часть ответа на запрос информации для одной задачи
 {
   "reply":[
     {
       "method":"TaskInfo",
       "result":[
         {
           "task_id":234590,
           "app_id":703,
           "uri":"http://10.10.30.147:8080/subs.m3u8",
           "name":"Channel1 SportSD HLSv4",
           "status":"Started",
           "start":"2020-02-07 18:07:24 +0700",
           "start_f":1581073644.1312609,
           "service":"Channel1",
           "tags":"OTT ,HD,TV35",
           "profiles":{
             "alarm":[79],
             "threshold":[96],
             "snmp":[263],
             "webhook":[265]
           },
           "task_config":{
             ...
           },
           "description":{
             ...
           }
         }
       ]
     }
   ]
 }

Ниже представлено описание содержимого поля description для следующих типов задач:

IPTV задача

{
  "description":{
    "protocol":"iptv"
  }
}

Дочерняя HLS задача

Дочерняя HLS задачи это вкладки анализа медиа-данных на странице задачи в интерфейсе Boro.

{
  "description":{
    "protocol":"hls"
    "parentTaskId":234590
  }
}
  • parentTaskId - целое число, идентификатор родительской HLS задачи;

Родительская HLS задача

Родительская HLS задача это вкладка Master на странице задачи в интерфейсе Boro.

{
  "description":{
    "protocol":"hls",
    "ottMode":"allRenditionsMaster",
    "ottType":"Live",
    "hasChildTasks":true,
    "group":{
      "children":[
        241560,
        241561,
        241562,
        241563,
        241557,
        241559,
        241558
      ],
      "ottPresentation":{
        "variantStreams":[
          {
            "taskId":241563,
            "uri":"http://10.10.30.53:8080/subs/LQ_video.m3u8",
            "manifestUri":"subs/LQ_video.m3u8",
            "SUBTITLES":"subs",
            "RESOLUTION":"720x576",
            "BANDWIDTH":2000000,
            "CODECS":"avc1.4D001E,mp4a.40.2",
            "AUDIO":"audio-HQ"
          },
          {
            "taskId":241559,
            "uri":"http://10.10.30.53:8080/subs/HQ_video.m3u8",
            "manifestUri":"subs/HQ_video.m3u8",
            "SUBTITLES":"subs",
            "RESOLUTION":"1920x1088",
            "BANDWIDTH":8000000,
            "CODECS":"avc1.4D0028,mp4a.40.2",
            "AUDIO":"audio-HQ"
          }
        ],
        "renditions":[
          {
            "taskId":241560,
            "uri":"http://10.10.30.53:8080/subs/teletext_2.m3u8",
            "manifestUri":"subs/teletext_2.m3u8",
            "NAME":"teletext_2",
            "DEFAULT":"NO",
            "GROUP-ID":"subs",
            "TYPE":"SUBTITLES"
          },
          {
            "taskId":241561,
            "uri":"http://10.10.30.53:8080/subs/teletext_1.m3u8",
            "manifestUri":"subs/teletext_1.m3u8",
            "NAME":"teletext_1",
            "DEFAULT":"NO",
            "GROUP-ID":"subs",
            "TYPE":"SUBTITLES"
          },
          {
            "taskId":241562,
            "uri":"http://10.10.30.53:8080/subs/HQ_audio_3.m3u8",
            "manifestUri":"subs/HQ_audio_3.m3u8",
            "LANGUAGE":"eng",
            "NAME":"HQ_audio_3",
            "GROUP-ID":"audio-HQ",
            "TYPE":"AUDIO"
          },
          {
            "taskId":241557,
            "uri":"http://10.10.30.53:8080/subs/HQ_audio_1.m3u8",
            "manifestUri":"subs/HQ_audio_1.m3u8",
            "LANGUAGE":"nor",
            "NAME":"HQ_audio_1",
            "GROUP-ID":"audio-HQ",
            "TYPE":"AUDIO"
          },
          {
            "taskId":241558,
            "uri":"http://10.10.30.53:8080/subs/HQ_audio_2.m3u8",
            "manifestUri":"subs/HQ_audio_2.m3u8",
            "LANGUAGE":"dan",
            "NAME":"HQ_audio_2",
            "GROUP-ID":"audio-HQ",
            "TYPE":"AUDIO"
          }
        ]
      }
    }
  }
}

Важно

Идентификаторы дочерних задач могут измениться:
1. После очередного обновления Мастер-плейлиста, если в структуре плейлиста произошли существенные изменения: изменилось описание И изменился URI альтернативы медиа-данных или варианта потока;
2. Если задача работает в режиме «плеера» (см. описание playerMaster ниже), когда происходит переключение варианта потока.

Примечание

Ниже описаны некоторые поля, полученные зондом из Мастер-плейлиста. Подробное описание вы можете найти в спецификации HTTP Live Streaming [RFC8216]

  • protocol - строка, протокол анализируемого потока (сервиса);

  • ottMode - строка, режим анализа HLS сервиса (дополнительную информацию можно найти в описании поля ottAllRenditions в разделе Конфигурация задачи):
    allRenditionsMaster - анализатору передан URI Мастер-плейлиста. Зонд работает в режиме анализа всех альтернатив медиа-данных всех вариантов потока. Создаются одна мастер-задача и дочерние задачи для анализа каждой альтернативы;
    playerMaster - анализатору передан URI Мастер-плейлиста. Зонд работает в режиме «плеера». Создаются одна мастер-задача и несколько дочерних задач, в зависимости от структуры анализируемого варианта потока;
    rendition - анализатору передан URI плейлиста непосредственно альтернативы медиа-данных или варианта потока. Создается только одна задача.
  • ottType - строка, тип сервиса и режим его анализа:
    Live - сервис имеет тип Live, контент анализируется со скоростью проигрывания сегментов;
    VOD - сервис имеет тип VoD, контент анализируется со скоростью проигрывания сегментов;
    VODgreedy - сервис имеет тип VoD. Агрессивный режим скачивания, контент анализируется на максимально возможной скорости.
  • hasChildTasks - логический тип, true означает, что запрашиваемая задача является родительской и имеет дочерние задачи;

  • group - объект, описание реляционных отношений между родительской задачей и дочерними задачами и структуры OTT сервиса;

  • children - массив целых чисел, идентификаторы дочерних задач;

  • ottPresentation - объект, детальное описание дочерних задач:

  • variantStreams - массив объектов. Описание дочерних задач, анализирующих варианты потока:
    • taskId - целое число, идентификатор дочерней задачи;

    • uri - строка, абсолютный путь к плейлисту с медиа-данными, интерпретированный зондом;

    • manifestUri - строка, путь к плейлисту с медиа-данными, указанный в Мастер-плейлисте. Может совпадать с абсолютным путем;

    • SUBTITLES - строка, идентификатор группы альтернатив субтитров; указанная группа должна быть использована при проигрывании данного варианта потока;

    • AUDIO - строка, идентификатор группы альтернатив аудио; указанная группа должна быть использована при проигрывании данного варианта потока;

    • VIDEO - строка, идентификатор группы альтернатив видео; указанная группа должна быть использована при проигрывании данного варианта потока;

    • RESOLUTION - строка, оптимальное пиксельное разрешение варианта потока;

    • BANDWIDTH - строка, максимальное значение суммы пиковых битрейтов сегментов, образованной комбинацией альтернатив медиа-данных определенного варианта потока;

    • CODECS - строка, список форматов, где каждый формат описывает тип медиа-семплов, которые представлены в одной или нескольких альтернативах, принадлежащих варианту потока.

  • renditions - массив объектов. Описание дочерних задач, анализирующих альтернативы медиа-данных:
    • taskId - целое число, идентификатор дочерней задачи;

    • uri - строка, абсолютный путь к плейлисту с медиа-данными, интерпретированный зондом;

    • manifestUri - строка, путь к плейлисту с медиа-данными, указанный в Мастер-плейлисте. Может совпадать с абсолютным путем;

    • DEFAULT - строка, если установлено значение YES и пользователь не выбрал иного, плеер должен начать проигрывание данной альтернативы медиа-данных по умолчанию. Стандарт описывает следующие возможные значения: YES, NO;

    • TYPE - строка, тип альтернативы медиа-данных. Стандарт описывает следующие возможные значения: AUDIO, VIDEO, SUBTITLES, CLOSED-CAPTIONS. Если в объекте описания дочерней задачи присутствует поле type, значит объект описывает задачу анализа альтернативы медиа-данных, в противном случае - задачу анализа варианта потока;

    • GROUP-ID - строка, идентификатор группы, которой принадлежит альтернатива медиа-данных;

    • LANGUAGE - строка, стандартный тег [RFC5646] для идентификации основного языка альтернативы медиа-данных в Мастер-плейлисте;

    • NAME - строка, текстовое описание альтернативы медиа-данных.