WCS OAM не получается настроить

mrinner

Member
Задача показать broadcaster'у текущее состояние стрима - fps, rate, size, audio/video codec, с обновлением 2 раза в 1 сек.
Установлен WCS 5.2.296, OAM 1.151, Postgresql 11, Timescale DB.
При установке OAM возникла небольшая проблемка - пришлось дописать #!/bin/bash в init_tsdb.sh.
Таблицы создались в db "wcsoam", "wcsstat"
После перезапуска WCS ожидалось увидеть node в OAM, но этого не происходит.

В лог oam сыпется ошибка периодически
xjava.lang.NullPointerException: null x
x at com.flashphoner.oam.logflow.BinFlowServerService.checkSignature(BinFlowServerService.java:177) ~[classes/:?] x
x at com.flashphoner.oam.logflow.BinFlowServerService.processConnection(BinFlowServerService.java:150) [classes/:?] x
x at com.flashphoner.oam.logflow.BinFlowServerService.processSelectionEvent(BinFlowServerService.java:121) [classes/:?] x
x at com.flashphoner.oam.logflow.BinFlowServerService.run(BinFlowServerService.java:76) [classes/:?] x
x x
x2019-08-14 10:17:13.120 ERROR 975 --- [Thread-5] c.f.o.l.BinFlowServerService : Can process client connection x
x x
xjava.lang.NullPointerException: null x
x at com.flashphoner.oam.logflow.BinFlowServerService.checkSignature(BinFlowServerService.java:177) ~[classes/:?] x
x at com.flashphoner.oam.logflow.BinFlowServerService.processConnection(BinFlowServerService.java:150) [classes/:?] x
x at com.flashphoner.oam.logflow.BinFlowServerService.processSelectionEvent(BinFlowServerService.java:121) [classes/:?] x
x at com.flashphoner.oam.logflow.BinFlowServerService.run(BinFlowServerService.java:76) [classes/:?] x
x x
x2019-08-14 10:17:15.620 ERROR 975 --- [Thread-5] c.f.o.l.BinFlowServerService : Can process client connection x
x x
xjava.lang.NullPointerException: null x
x at com.flashphoner.oam.logflow.BinFlowServerService.checkSignature(BinFlowServerService.java:177) ~[classes/:?] x
x at com.flashphoner.oam.logflow.BinFlowServerService.processConnection(BinFlowServerService.java:150) [classes/:?] x
x at com.flashphoner.oam.logflow.BinFlowServerService.processSelectionEvent(BinFlowServerService.java:121) [classes/:?] x
x at com.flashphoner.oam.logflow.BinFlowServerService.run(BinFlowServerService.java:76) [classes/:?]

Настройки
stats=true
wcsoam_ip=192.168.88.201
wcsoam_port=7777
wcsoam_sha_salt=123456789
wcsoam_reconnect_interval=5000
wcsoam_chunk_size=64
wcsoam_buffer_size=20000

server.port=8090

influxdb_enabled=false
influxdb_udp=true
influxdb_udp_port=8089
influxdb_url=http://127.0.0.1:8086
influxdb_user=root
influxdb_password=root
influxdb_database=wcs_oam

historydb_enabled=true
listening_port=7777
stomp_max_metrics=10
stomp_max_timeout=1000
wcs_rest_port=8081
stream_cache_final_status_lifetime_ms=3000
access_control_allow_origin=*
security_key=123456789

server.ssl.key-store-type=JKS
server.ssl.key-store=file:${OAM_APP_HOME}/conf/wss.jks
server.ssl.key-store-password=password
server.ssl.key-alias=selfsigned

spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/wcsoam
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.username=wcsoam
spring.datasource.password=wcsoam
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=create
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true

logging.file = ${OAM_APP_HOME}/logs/oam.log

timescale.url=jdbc:postgresql://127.0.0.1:5432/wcsstat
timescale.username=wcsoam
timescale.password=wcsoam

metric_store=timescale
timescale_batch_size=1000
 
Last edited:

Max

Administrator
Staff member
Добрый день.
Пожалуйста, обновите OAM до сборки 1.158, прием метрик должен заработать. Кроме того, в этой сборке добавлена поддержка кроссдоменных REST API запросов, ранее это поддерживалось только для WS API.
 

mrinner

Member
Заработало. Спасибо.
Теперь появились вопросы:
1) При рестарте OAM сервиса пересоздается wcsoam база. Так и должно быть? Теряется статистика по стримам (статусы и тп), профили
2) Возможно ли собирать статистику только по публикуемым стримам?
3) В профиле указывается частота сбора метрик "rate". Что это за величина, за какой период времени?
4) VIDEO_CODEC = 119 - может у вас есть map названий кодеков на эти id?
 
Last edited:

Max

Administrator
Staff member
Добрый день.
1) При рестарте OAM сервиса пересоздается wcsoam база. Так и должно быть? Теряется статистика по стримам (статусы и тп), профили
Необходимо заменить в wcsoam.properties строку
Code:
spring.jpa.hibernate.ddl-auto=create
на
Code:
spring.jpa.hibernate.ddl-auto=update
2) Возможно ли собирать статистику только по публикуемым стримам?
WCS присылает статистику в OAM по всем потокам. Вы можете запрашивать у OAM только информацию о публикуемых потоках, указывая параметр запроса "status":"PUBLISHING", например (для REST API)
Code:
POST: /api/stream/list "application/json; charset=utf-8"
{
"node":"",
"mediaId":"",
"name":"",
"publisher":"",
"status":"PUBLISHING",
"showClosed":false,
"nodeIp":"",
"nodeHostName":"yourserver.com"
}
Подробнее запросы описаны здесь
3) В профиле указывается частота сбора метрик "rate". Что это за величина, за какой период времени?
Эта величина передается на WCS и указывает, с какой частотой отправлять ту или иную метрику. Метрики собираются для каждого обрабатываемого кадра потока, но могут отправляться, например, на каждый 5й кадр (rate 5) или на каждый 30й (rate 30). Если Вы подписываетесь на получение метрик определенного потока по STOMP over Websocket, rate будет влиять на частоту получения STOMP сообщений, подробнее об этом написано здесь.
4) VIDEO_CODEC = 119 - может у вас есть map названий кодеков на эти id?
Такого map нет, соответствие идентификатора кодека его названию определяется SDP.
 

mrinner

Member
Спасибо за разъяснения.
Возникла проблема в получении статуса нода через STOMP. Ожидается увидеть параметр "connected", но response приходит такой:

[{'id': 1, 'rate': 1056}]
а иногда, после рестарта OAM
{'requestId': '62b9c752-bfdb-4500-ad96-7d46d3c75b83', 'status': 404, 'reason': 'OBJECT_NOT_FOUND', 'info': 'Can not find node: 1'}

Или API изменилось, и теперь status=404 = not connected ?

Тот же 'destination': '/app/api/node/list' - возвращает этот node
 

Max

Administrator
Staff member
node/list возвращает все ранее подключавшиеся nodes, включая неактивные.
Если node после перезапуска OAM еще не подключен, то при запросе с указанием этого node возвращается 404.
 

Max

Administrator
Staff member
Мы создали внутренний тикет (OAM-17) для добавления статуса узла в ответ на /api/node/list и правки документации, о результатах сообщим здесь
 

Max

Administrator
Staff member
Добрый день.
В сборке 1.160 исправлено:
- удаление узла по запросу
- ответ на запрос /api/node_status/list, теперь, если узел не подключен к OAM, возвращается 404 OBJECT_NOT_FOUND, если подключен, возвращается статус узла.
Также обновлена документация по /api/node_status/list
Внимание! При обновлении с предыдущих сборок перед запуском OAM 1.160 необходимо вручную удалить constraint по host_name из БД настроек следующим образом:
1. Войти в консоль psql, подключиться к БД wcsoam
2. Отобразить информацию о таблице node
Code:
\d+ node
ответ:
Code:
                                                     Table "public.node"
  Column   |          Type          |                     Modifiers                     | Storage  | Stats target | Description
-----------+------------------------+---------------------------------------------------+----------+--------------+-------------
id        | bigint                 | not null default nextval('node_id_seq'::regclass) | plain    |              |
host_name | character varying(255) |                                                   | extended |              |
ip        | character varying(255) |                                                   | extended |              |
deleted   | boolean                |                                                   | plain    |              |
Indexes:
    "node_pkey" PRIMARY KEY, btree (id)
    "ukko2vmlpkk6jh8wfkr32ug2xor" UNIQUE CONSTRAINT, btree (host_name)
Referenced by:
    TABLE "stream" CONSTRAINT "fkfvlh9nv3oa5gel1ocxqlm7bfl" FOREIGN KEY (node_id) REFERENCES node(id)
    TABLE "node_profile" CONSTRAINT "fkoomcumdv3oq8b878988mse87v" FOREIGN KEY (node_id) REFERENCES node(id)
    TABLE "alarm" CONSTRAINT "fkp0smjcmmfh89lgd54d7v6y3mb" FOREIGN KEY (node_id) REFERENCES node(id)
3. Удалить constraint
Code:
alter table node DROP CONSTRAINT ukko2vmlpkk6jh8wfkr32ug2xor;
 
Top