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

Discussion in 'Web Call Server 5' started by mrinner, Aug 14, 2019.

  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
  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
  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.
  5. mrinner

    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
  6. Max

    Max Administrator Staff Member

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

    mrinner Member

  8. Max

    Max Administrator Staff Member

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

    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;

Share This Page