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

Discussion in 'Web Call Server 5' started by mrinner, Aug 14, 2019 at 12:07 PM.

  1. mrinner

    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: Aug 14, 2019 at 12:15 PM
  2. Max

    Max Administrator Staff Member

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

    mrinner Member

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

    Max Administrator Staff Member

    Добрый день.
    Необходимо заменить в wcsoam.properties строку
    Code:
    spring.jpa.hibernate.ddl-auto=create
    на
    Code:
    spring.jpa.hibernate.ddl-auto=update
    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"
    }
    
    Подробнее запросы описаны здесь
    Эта величина передается на WCS и указывает, с какой частотой отправлять ту или иную метрику. Метрики собираются для каждого обрабатываемого кадра потока, но могут отправляться, например, на каждый 5й кадр (rate 5) или на каждый 30й (rate 30). Если Вы подписываетесь на получение метрик определенного потока по STOMP over Websocket, rate будет влиять на частоту получения STOMP сообщений, подробнее об этом написано здесь.
    Такого map нет, соответствие идентификатора кодека его названию определяется SDP.

Share This Page