統計エクスポーター機能

注意

統計エクスポーター機能は実験的機能のため、正式版では仕様が変更される可能性があります

概要

Sora 経由で統計情報コレクターに向けて統計情報をエクスポートする機能です。

HTTP/2

  • 統計コレクターサーバーは HTTP/2 に対応している必要があります

  • h2c と h2 の両方に対応しています

  • http:// から始めると h2c を利用します

  • https:// から始めると h2 を利用します

WebRTC Stats Collector Kohaku

URL:

https://github.com/shiguredo/kohaku

Kohaku は統計エクスポーター対応の統計コレクターです。

設定

stats_collector_url

統計情報を収集するコレクターの URL を指定します。 HTTP または HTTPS の URL が指定可能です。

stats_collector_url = http://192.0.2.10:5890/collector

stats_exporter_number

統計情報を出力するエクスポーターの数を指定できます。 基本的にはデフォルトの 5 で足りますが、同時接続数が多い場合は変更をお勧めします。

stats_exporter_number = 5

stats_exporter_tls_fullchain_file

mTLS を利用するための設定で、中間証明書を含むクライアント証明書を PEM 形式で設定して下さい。

stats_exporter_tls_fullchain_file = /path/to/fullchain.pem

stats_exporter_tls_privkey_file

統計コレクターサーバーと mTLS を利用するための設定で、クライアント証明書の秘密鍵を PEM 形式で設定して下さい。

重要

秘密鍵にパスフレーズが設定されている場合はエラーとなります

stats_exporter_privkey_file = /path/to/privkey.pem

stats_exporter_tls_verify_cacert_file

統計コレクターサーバーとの通信に HTTPS を利用した際、サーバー証明書のチェックを行う CA ファイルを PEM 形式で設定して下さい。

stats_exporter_tls_verify_cacert_file = /path/to/server_cacert.pem

stats_exporter_erlang_vm_interval

注意

この設定は無理に設定する必要はありません

統計コレクターサーバーに Sora が利用している Erlang VM の統計情報を送る間隔を指定できます。 間隔を指定しないと統計情報自体を送りません。

stats_exporter_erlang_vm_interval = 60 s

エクスポーター

統計情報をコレクターに対して送ります。

共通

  • type

    • 統計情報の種類情報が入ります

  • node_name

    • Sora のノード名が入ります

    • クラスター機能を利用していない場合は sora@127.0.0.1 です

  • version

    • Sora のバージョンが入ります

  • label

    • sora.conf に設定された label が入ります

  • timestamp

    • Sora が stats を送る直前の時間 RFC3339 形式の (UTC) が入ります

HTTP ヘッダー

注釈

JSON のパース時の判断などに利用してください。

統計エクスポーターの HTTP ヘッダー に x-sora-stats-exporter-type というヘッダー名で統計エクスポーターのタイプが入ってきます。

typeconnection.user-agent の場合は x-sora-stats-exporter-type: connection.user-agent のように値が入ってきます。

type: connection.user-agent

クライアントから送られてくるユーザーエージェント統計情報です。

ユーザーエージェント統計情報は W3C の Identifiers for WebRTC's Statistics API に準拠している必要があります。

  • type

    • connection.user-agent

  • channel_id

    • チャネル ID が入ります

  • session_id

    • セッション ID が入ります

  • client_id

  • connection_id

  • multistream

  • simulcast

  • spotlight

  • stats

{
  "channel_id": "sora",
  "client_id": "NCD5EF3ME900ZDJ3SE27Y6AB6R",
  "connection_id": "NCD5EF3ME900ZDJ3SE27Y6AB6R",
  "id": "N6W0DBF6A957B01BKNJJR1HC04",
  "label": "WebRTC SFU Sora",
  "stats": [
    {
      "id": "RTCAudioSource_5",
      "kind": "audio",
      "timestamp": 1629449091306.655,
      "type": "media-source",
      "audioLevel": 0.02237006744590594,
      "totalAudioEnergy": 0.15581033797981153,
      "totalSamplesDuration": 5.089999999999936,
      "trackIdentifier": "922dd031-8a4f-4122-9687-ce094fa11ee2"
    }, ...
  ],
  "timestamp": "2021-08-20T08:44:51.308778Z",
  "type": "connection.user-agent",
  "version": "2021.2"
}

type: connection.sora

現時点ではまだ対応していません

Sora にため込んでいる統計情報です。

type: node.erlang-vm.memory

Sora が利用している Erlang VM のメモリの統計情報です。

type の頻度指定

変化が無かったり変化の少ない stats を送る頻度を減らしています。 デフォルト 600 秒間隔にしています。

type: connection.user-agent

送信頻度を抑えている Stats Type。

  • codec

    • Sora の場合、初期値から変更される項目が無いため

  • local-candidate

    • Sora の場合、初期値から変更される項目が無いため

  • remote-candidate

    • Sora の場合、初期値から変更される項目が無いため

  • certificate

    • Sora の場合、初期値から変更される項目が無いため

  • peer-connection

    • Sora の場合、初期値から変更される項目が無いため

  • track

    • DEPRECATED 項目のため

  • stream

    • DEPRECATED 項目のため

シーケンス図

DataChannel シグナリング利用時

blockdiag クライアント Sora Stats Collector TSDB Stats over DataChannel Stats over HTTP/2 200 OK WebRTC 確立
© Copyright 2022, Shiguredo Inc Created using Sphinx 5.2.1