Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • предотвращение двойного транскодирования одного и того же потока в CDN
  • отображение расширенной информации о CDN
  • контроль пропускной способности каналов между серверами CDN
  • периодическая отсылка состояния другим узлам

Предотвращение двойного транскодирования одного и того же потока в CDN

...

В сборке 5.2.471 в статистику, в CLI и в REST API добавлен либо дополнен вывод информации о CDN, в которой участвует данный сервер

Использование CLI

Команда интерфейса командной строки WCS

Code Block
themeRDark
show cdn-nodes

...

Code Block
languagejs
themeRDark
[                                            
  {                                          
    "version": "2.3",                        
    "role": "TRANSCODER",                    
    "globalState": "ACTIVE",                 
    "processingState": "NEW_STREAMS_ALLOWED",
    "id": "192.168.0.102"                    
  },                                         
  {                                          
    "version": "2.3",                        
    "role": "EDGE",                          
    "globalState": "ACTIVE",                 
    "processingState": "NEW_STREAMS_ALLOWED",
    "id": "192.168.0.187"                    
  }                                          
]                                            

ПриП При этом для узла в статусе ACTIVE отображается версия CDN, которая получена от узла в результате согласования версий, для узла в статусе PASSIVE - версия, заданная в настройках текущего узла (см ниже)

Контроль качества каналов между серверами CDN

В сборке 5.2.483 добавлена возможность контроля качества каналов в направлении Origin -> Transcoder -> Edge. Для этого необходимо установить интервал отсылки статистики исходящего битрейта

Code Block
themeRDark
outbound_video_rate_stat_send_interval=1

на Origin и Transcoder узлах.

В этом случае на стороне узла, принимающего поток, периодически сравнивается битрейт публикации или воспроизведения с битрейтом на стороне узла, отправляющего поток. При устойчивом их расхождении диагностируется снижение пропускной способности канала. Пики и резкие изменения сглаживаются фильтром Калмана. Показатель качества канала и статистику для потока можно получить при помощи REST API.

Получение статистики качества при помощи REST API

  • HTTP: http://test.flashphoner.com:8081/rest-api/cdn/stats/print

  • HTTPS: https://test.flashphoner.com:8444/rest-api/cdn/stats/print

Здесь:

  • test.flashphoner.com - адрес WCS-сервера
  • 8081 - стандартный REST / HTTP порт WCS-сервера
  • 8444 - стандартный HTTPS порт
  • rest-api - обязательная часть URL
  • /cdn/stats/print - используемый REST-метод

REST запросы необходимо отправлять на сервер, на котором необходимо получить статистику входящего потока. Например, на Edge можно получить статистику для входящего потока, полученного с Origin или Transcoder, а на Transcoder для потока, полученного с Origin.

REST-методы и статусы ответа

REST-метод

Пример тела REST-запроса

Пример тела REST-ответа

Статусы ответа

Описание

/cdn/stats/print

Code Block
languagejs
themeRDark
{
 "name":"test",
 "host":"192.168.0.111",
 "format":"json"
}




Code Block
languagejs
themeRDark
{
    "192.168.0.111": [
        {
            "fps": 30, 
            "inboundBitrate": 1658292, 
            "nack": 0, 
            "name": "test", 
            "outboundBitrate": 1692676, 
            "quality": "PERFECT"
        }
    ]
}

200 – OK

404 - Stream not found

Получить статистику потока

Параметры

Параметр

Описание

Пример

name

Имя потока

test

hostУзел, с которого получен поток192.168.0.111
formatФормат ответаjson
inboundBitrateВходящий (полученный) битрейт1658292
outboundBitrateИсходящий (передаваемый) битрейт1692676
nackКоличество NACK0
fpsЧастота кадров потока30
qualityКачество каналаPERFECT

Запрос без указания имени потока вернет информацию по всем потокам, получаемым с указанного узла CDN. Запрос без указания узла вернет информацию по всем потокам, получаемым с других узлов CDN, если не указано имя потока.

Форматы получения статистики

По умолчанию, статистика возвращается в формате JSON

Code Block
languagejs
themeRDark
POST /rest-api/cdn/stats/print HTTP/1.1
Content-Length: 19
Content-Type: application/json
Host: test.flashphoner.com:8081
{
    "name": "test"
}

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Length: 125
Content-Type: application/json
{
    "192.168.0.111": [
        {
            "fps": 31, 
            "inboundBitrate": 1052794, 
            "nack": 81, 
            "name": "test", 
            "outboundBitrate": 1048518, 
            "quality": "PERFECT"
        }
    ]
}

Также поддерживается формат Prometeus

Code Block
themeRDark
POST /rest-api/cdn/stats/print HTTP/1.1
Content-Length: 43
Content-Type: application/json
Host: test.flashphoner.com:8081
{
    "format": "prometheus", 
    "name": "test"
}

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Length: 397
Content-Type: plain/text

cdn_connection_quality{param="inboundBitrate",node="192.168.0.111",name="test"} 1249049
cdn_connection_quality{param="outboundBitrate",node="192.168.0.111",name="test"} 1240717
cdn_connection_quality{param="quality",node="192.168.0.111",name="test"} 3
cdn_connection_quality{param="fps",node="192.168.0.111",name="test"} 30
cdn_connection_quality{param="nack",node="192.168.0.111",name="test"} 81

Показатель качества принимает следующие значения

JSONPrometheusОписание
UNKNOWN0Качество неизвестно, сервер не получает медиа пакеты
BAD1Качество плохое
GOOD2Качество хорошее
PERFECT3Качество отличное

Периодическая отсылка состояния другим узлам

Чтобы снизить влияние качества каналов между узлами на сбор информации о текущем состоянии CDN на каждом из узлов, добавлен ряд настроек, которые регулируют периодичность отсылки различных признаков состояния узла CDN другим подключенным к нему узлам

НастройкаЗначение по умолчаниюОписание
cdn_nodes_acl_refresh_interval60000Периодичность рассылки списка ACL ключей, мс
cdn_nodes_group_refresh_interval60000Периодичность рассылки списка групп, к которым принадлежит узел, мс
cdn_nodes_role_refresh_interval60000Периодичность рассылки роли узла, мс
cdn_nodes_route_refresh_interval60000Периодичность рассылки маршрутов, мс
cdn_nodes_state_refresh_interval60000Периодичность рассылки состояния узла, мс
cdn_nodes_version_refresh_interval90000Периодичность рассылки версии CDN, поддерживаемой узлом, мс

Обратная совместимость с CDN 2.2, 2.1, 2.0

...