Информация о нагрузке и ресурсах WCS-сервера доступна на порту 8081 по URL
http://test.flashphoner.com:8081/?action=stat
где test.flashphoner.com - это адрес WCS-сервера.
Она включает данные о публикуемых и воспроизводимых потоках, SIP-звонках и характеристиках сервера.
Статистические параметры
Connection | Соединения с WCS-сервером |
---|
connections | Общее количество соединений |
connections_rtmfp | Количество RTMFP-соединений (Flash) |
connections_websocket | Количество WebSocket-соединений |
Port | Порты, слушаемые WCS-сервером |
---|
ports_sip | Количество слушаемых UDP SIP портов |
ports_media | Количество слушаемых UDP медиа портов |
ports_rtsp | Количество слушаемых RTSP TCP портов |
Stream | Сессии аудио и видеопотоков на WCS-сервере |
---|
streams_rtsp_in | Количество активных RTSP-сессий, раздающих трафик |
streams_rtsp_out | Количество активных RTSP-сессий, забирающих трафик |
streams_websocket_out | Количество активных потоков, воспроизводимых через WebSocket |
streams_rtmp_out | Количество активных RTMP-потоков |
streams_webrtc_in | Количество активных потоков, публикуемых через WebRTC |
streams_webrtc_out | Количество активных потоков, воспроизводимых через WebRTC |
streams_rtmfp_in | Количество активных потоков, публикуемых через RTMFP |
streams_rtmfp_out | Количество активных потоков, воспроизводимых через RTMFP |
streams_viewers | Количество активных клиентов, воспроизводящих опубликованные потоки |
Native resources | Информация о потребляемых ресурсах |
---|
native_resources | Информация о кодировании/декодировании медиапотока |
Core | Параметры системы (полученные с использованием методов Java) и параметры WCS-сервера |
---|
core_threads | Количество активных потоков server-процесса WCS |
core_java_threads | Текущее количество живых потоков |
core_java_committedMemory | Количество гарантированно доступной виртуальной памяти, в байтах |
core_java_freePhysicalMemorySize | Количество свободной физической памяти, в байтах |
core_java_arch | Aрхитектура операционной системы |
core_java_availableProcessors | Количество процессоров доступных виртуальной машине Java |
core_java_freeSwapSpaceSize | Количество свободного swap-пространства, в байтах |
core_java_maxFileDescriptorCount | Максимальное количество файл-дескрипторов |
core_java_open_file_descriptors | Количество файл-дескрипторов, открытых в виртуальной машине Java |
core_java_cpu_usage | "Недавнее использование процессора" для процесса виртуальной машины Java |
core_java_totalPhysicalMemorySize | Количество физической памяти, в байтах |
core_java_totalSwapSpaceSize | Количество swap-пространства, в байтах |
core_java_uptime | Сколько времени прошло от запуска виртуальной машины Java, в миллисекундах |
core_heap_memory_used | Использование памяти в куче |
core_rss_memory | Использование памяти |
core_open_file_descriptors | Количество открытых файл-дескрипторов |
core_cpu_usage | Процент времени, затраченного на работу процессов |
core_gc | Информация о "сборке мусора" |
core_gc_manager | Информация о "сборке мусора" в административном модуле |
Call | SIP-звонки на WCS-сервере |
---|
sip_calls | Количество SIP-звонков |
sip_calls_established | Количество активных SIP-звонков |
sip_calls_in | Количество входящих SIP-звонков |
sip_calls_out | Количество исходящих SIP-звонков |
sip_calls_per_second (cps) | Количество SIP-звонков в секунду |
SIP |
|
---|
sip_registered | Количество клиентов в состоянии REGISTERED |
Recording | Запись аудио и видеофайлов |
---|
recording_sessions | Количество активных сессий записи |
System | Параметры системы |
---|
system_java_cpu_usage | "Недавнее использование процессора" для всей системы (получено с использованием методов Java) |
system_java_load_average | Средняя нагрузка системы за последнюю минуту (получено с использованием методов Java) |
system_uptime | Сколько времени прошло от запуска Linux-сервера |
system_memory_total | Доступная к использованию RAM-память, в килобайтах |
system_memory_free | Количество физической RAM-памяти, не используемой системой, в килобайтах |
system_cpu_usage | Процент времени, затраченного на работу процессов ядра |
Network Stats (Mbit/s) | Статистика сетевого трафика |
---|
global_bandwidth_in | Пропускная способность канала для входящих соединений |
global_bandwidth_out | Пропускная способность канала для исходящих соединений |
Version info | Информация о версии WCS |
---|
wcs_version | Текущая версия WCS-сервера |
wcs_client_version | Текущая версия WCS API |
Errors info | Информация об ошибках (собирается на основании перехваченных исключений Java) |
---|
java.io.IOException | Количество ошибок ввода-вывода |
java.lang.ArrayIndexOutOfBoundsException | Количество выходов за пределы массива |
java.lang.IllegalArgumentException | Количество ошибок в аргументах функций |
com.flashphoner.server.license.activation.A.C | Количество ошибок при активации лицензии |
java.lang.NullPointerException | Количество попыток перехода по нулевому указателю |
Degraded streams | Информация о деградации потоков |
degraded_streams | Количество деградировавших потоков |
degraded_streams_percent | Процент деградации от общего числа потоков на сервере |
Каждый параметр может быть запрошен отдельно, например
http://test.flashphoner.com:8081/?action=stat¶ms=native_resources
Статистику используемых ресурсов и информацию о нагрузке WCS-сервера, объединенную по группам, можно запросить по имени группы (доступны connections_stats, streams_stats, port_stats, call_stats, degraded_streams_stats, system_stats, core_stats)
http://test.flashphoner.com:8081/?action=stat&groups=call_stats
В запрос можно включить несколько наименований групп
http://test.flashphoner.com:8081/?action=stat&groups=call_stats,connections_stats
Параметры системы могут быть исключены из полной выборки при помощи настройки в файле flashphoner.properties
В этом случае параметры системы предоставляются только по запросу.
Форматы вывода статистики
По умолчанию, статистика выводится в plain text
-----Connection Stats-----
connections=1
connections_rtmfp=0
connections_websocket=1
-----Port Stats-----
ports_media_free=495
ports_media_busy=4
ports_media_quarantine=0
-----Stream Stats-----
streams_webrtc_in=1
streams_webrtc_out=1
streams_websocket_out=0
streams_rtmfp_in=0
streams_rtmfp_out=0
streams_rtmp_in=0
streams_rtmp_out=0
streams_viewers=test/1
streams_rtsp_in=0
streams_rtsp_out=0
streams_rtmp_client_out=0
streams_play_rate=0
streams_stop_rate=0
-----Native Resources-----
native_resources=140537376620832,NENC:H264/FFMPEG,1859;140537236444800,FFDecoderNative:H264/FFMPEG,39404417
native_resources.audio_codecs=0
native_resources.audio_resamplers=0
native_resources.video_transcoders=0
native_resources.video_decoders=1
native_resources.video_encoders=1
native_resources.writers=0
-----Core Stats-----
core_java_threads=71
core_java_committedMemory=3127017472
core_java_freePhysicalMemorySize=69820416
core_java_arch=amd64
core_java_availableProcessors=2
core_java_freeSwapSpaceSize=1044369408
core_java_maxFileDescriptorCount=20000
core_java_open_file_descriptors=206
core_java_cpu_usage=39.88
core_java_totalPhysicalMemorySize=1927303168
core_java_totalSwapSpaceSize=1073737728
core_java_uptime=102191
-----Call Stats-----
sip_processed_calls=0
sip_calls_state=established/0;trying/0;ringing/0;ring/0;ring_media/0;hold/0;busy/0;finish/0;session_progress/0;pending/0;failed/0
sip_calls=0
sip_calls_established=0
sip_calls_in=0
sip_calls_out=0
sip_calls_per_second=0.00
-----Sip Stats-----
sip_registered=0
-----Recording Stats-----
recording_sessions=0
-----System Stats-----
system_java_cpu_usage=75.00
system_java_load_average=0.87
-----Network Stats (Mbit/s)-----
global_bandwidth_in=0.000
global_bandwidth_out=0.000
-----Version info-----
wcs_version=5.2.416-32aab7dc90527bfe2ffb4711090fe75c6613a2bb
wcs_client_version=0.5.28.2753-9ba78705727d3ee9d75c1c10f488d21cd00a601c
-----Errors info-----
-----Degraded streams-----
degraded_streams=
degraded_streams_percent=0
Начиная со сборки 5.2.416, поддерживаются также форматы JSON и Prometheus. Для вывода статистики в формате JSON необходимо указать формат в URI запроса
curl -s 'http://localhost:8081/?action=stat&format=json'
{
"connections_stats": {
"connections": "1",
"connections_rtmfp": "0",
"connections_websocket": "1"
},
"port_stats": {
"ports_media_free": "495",
"ports_media_busy": "4",
"ports_media_quarantine": "0"
},
"streams_stats": {
"streams_webrtc_in": "1",
"streams_webrtc_out": "1",
"streams_websocket_out": "0",
"streams_rtmfp_in": "0",
"streams_rtmfp_out": "0",
"streams_rtmp_in": "0",
"streams_rtmp_out": "0",
"streams_viewers": [
"test/1"
],
"streams_rtsp_in": "0",
"streams_rtsp_out": "0",
"streams_rtmp_client_out": "0",
"streams_play_rate": "0",
"streams_stop_rate": "0"
},
"native_resources": {
"native_resources": [
"140537376620832,NENC:H264/FFMPEG,9819",
"140537236444800,FFDecoderNative:H264/FFMPEG,209561611"
],
"native_resources.audio_codecs": "0",
"native_resources.audio_resamplers": "0",
"native_resources.video_transcoders": "0",
"native_resources.video_decoders": "1",
"native_resources.video_encoders": "1",
"native_resources.writers": "0"
},
"core_stats": {
"core_java_threads": "67",
"core_java_committedMemory": "3127017472",
"core_java_freePhysicalMemorySize": "73224192",
"core_java_arch": "amd64",
"core_java_availableProcessors": "2",
"core_java_freeSwapSpaceSize": "1044107264",
"core_java_maxFileDescriptorCount": "20000",
"core_java_open_file_descriptors": "188",
"core_java_cpu_usage": "37.19",
"core_java_totalPhysicalMemorySize": "1927303168",
"core_java_totalSwapSpaceSize": "1073737728",
"core_java_uptime": "358833"
},
"call_stats": {
"sip_processed_calls": "0",
"sip_calls_state": [
"established/0",
"trying/0",
"ringing/0",
"ring/0",
"ring_media/0",
"hold/0",
"busy/0",
"finish/0",
"session_progress/0",
"pending/0",
"failed/0"
],
"sip_calls": "0",
"sip_calls_established": "0",
"sip_calls_in": "0",
"sip_calls_out": "0",
"sip_calls_per_second": "0.00"
},
"sip_stats": {
"sip_registered": "0"
},
"recording_stats": {
"recording_sessions": "0"
},
"system_stats": {
"system_java_cpu_usage": "50.00",
"system_java_load_average": "0.73"
},
"network_stats": {
"global_bandwidth_in": "0.000",
"global_bandwidth_out": "0.000"
},
"version_stats": {
"wcs_version": "5.2.416-32aab7dc90527bfe2ffb4711090fe75c6613a2bb",
"wcs_client_version": "0.5.28.2753-9ba78705727d3ee9d75c1c10f488d21cd00a601c"
},
"errors_info": {},
"degraded_streams_stats": {
"degraded_streams": [],
"degraded_streams_percent": "0"
}
}
Для вывода статистики в формате Prometheus необходимо указать формат в URI запроса
curl -s 'http://localhost:8081/?action=stat&format=prometheus'
connections_stats{param="connections"} 1
connections_stats{param="connections_rtmfp"} 0
connections_stats{param="connections_websocket"} 1
port_stats{param="ports_media_free"} 495
port_stats{param="ports_media_busy"} 4
port_stats{param="ports_media_quarantine"} 0
streams_stats{param="streams_webrtc_in"} 1
streams_stats{param="streams_webrtc_out"} 1
streams_stats{param="streams_websocket_out"} 0
streams_stats{param="streams_rtmfp_in"} 0
streams_stats{param="streams_rtmfp_out"} 0
streams_stats{param="streams_rtmp_in"} 0
streams_stats{param="streams_rtmp_out"} 0
streams_stats{param="streams_viewers",name="test"} 1
streams_stats{param="streams_rtsp_in"} 0
streams_stats{param="streams_rtsp_out"} 0
streams_stats{param="streams_rtmp_client_out"} 0
streams_stats{param="streams_play_rate"} 0
streams_stats{param="streams_stop_rate"} 0
native_resources{param="native_resources",id="140537376620832",name="NENC:H264/FFMPEG"} 11129
native_resources{param="native_resources",id="140537236444800",name="FFDecoderNative:H264/FFMPEG"} 239113192
native_resources{param="native_resources.audio_codecs"} 0
native_resources{param="native_resources.audio_resamplers"} 0
native_resources{param="native_resources.video_transcoders"} 0
native_resources{param="native_resources.video_decoders"} 1
native_resources{param="native_resources.video_encoders"} 1
native_resources{param="native_resources.writers"} 0
core_stats{param="core_java_threads"} 63
core_stats{param="core_java_committedMemory"} 3127017472
core_stats{param="core_java_freePhysicalMemorySize"} 67538944
core_stats{core_java_arch="amd64"} 1
core_stats{param="core_java_availableProcessors"} 2
core_stats{param="core_java_freeSwapSpaceSize"} 1043853312
core_stats{param="core_java_maxFileDescriptorCount"} 20000
core_stats{param="core_java_open_file_descriptors"} 188
core_stats{param="core_java_cpu_usage"} 37.02
core_stats{param="core_java_totalPhysicalMemorySize"} 1927303168
core_stats{param="core_java_totalSwapSpaceSize"} 1073737728
core_stats{param="core_java_uptime"} 401113
call_stats{param="sip_processed_calls"} 0
call_stats{param="sip_calls_state",name="established"} 0
call_stats{param="sip_calls_state",name="trying"} 0
call_stats{param="sip_calls_state",name="ringing"} 0
call_stats{param="sip_calls_state",name="ring"} 0
call_stats{param="sip_calls_state",name="ring_media"} 0
call_stats{param="sip_calls_state",name="hold"} 0
call_stats{param="sip_calls_state",name="busy"} 0
call_stats{param="sip_calls_state",name="finish"} 0
call_stats{param="sip_calls_state",name="session_progress"} 0
call_stats{param="sip_calls_state",name="pending"} 0
call_stats{param="sip_calls_state",name="failed"} 0
call_stats{param="sip_calls"} 0
call_stats{param="sip_calls_established"} 0
call_stats{param="sip_calls_in"} 0
call_stats{param="sip_calls_out"} 0
call_stats{param="sip_calls_per_second"} 0.00
sip_stats{param="sip_registered"} 0
recording_stats{param="recording_sessions"} 0
system_stats{param="system_java_cpu_usage"} 66.67
system_stats{param="system_java_load_average"} 0.84
network_stats{param="global_bandwidth_in"} 0.000
network_stats{param="global_bandwidth_out"} 0.000
version_stats{wcs_version="5.2.416-32aab7dc90527bfe2ffb4711090fe75c6613a2bb"} 1
version_stats{wcs_client_version="0.5.28.2753-9ba78705727d3ee9d75c1c10f488d21cd00a601c"} 1
degraded_streams_stats{param="degraded_streams"} 0
degraded_streams_stats{param="degraded_streams_percent"} 0
Настройка Prometheus для сбора статистики с WCS сервера
Prometheus - это система мониторинга и БД временных рядов с открытым исходным кодом. WCS поддерживает вывод информации в формате метрик Prometheus, начиная со сборки 5.2.416, настройка WCS для интеграции в систему мониторинга не требуется.
Для настройки Prometheus на сбор метрик WCS, необходимо в файле настроек prometheus.yml описать конфигурацию
scrape_configs:
- job_name: 'flashphoner'
metrics_path: '/'
params:
action: [stat]
format: [prometheus]
static_configs:
- targets: ['WCS_address:8081']
Здесь
- WCS_address - адрес WCS сервера
- 8081 - порт WCS сервера для вывода статистики
В результате, Prometheus сформирует запрос
http://WCS_address:8081/?action=stat&format=prometheus
и получит метрики статистики в своем формате.