統計エクスポーター機能

注意

ユーザーエージェント統計 API は 2025 年 6 月リリースの Sora にて廃止します 代わりに 統計ウェブフック機能 をご利用ください。

注意

この機能を利用する場合は事前にサポートまでご連絡ください

警告

この機能は 実験的機能 のため、正式版では仕様が変更される可能性があります

概要

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

注意

IPv6 非対応

現時点で、統計エクスポーターは IPv6 を利用できません。

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

default_stats_exporter

stats_collector_url が指定されていた場合、デフォルトでは統計情報をコレクターに送信します。 もし、統計情報の送信を接続毎に行いたい場合、この設定を false にし、 統計情報を送信したい接続の認証成功時に "stats_exporter": true を払い出すようにしてください。

default_stats_exporter = false

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_tls_privkey_file = /path/to/privkey.pem

stats_exporter_tls_verify_cacert_file

注釈

CA 証明書を指定しない場合、OS 組み込みの証明書を利用します。詳細は ウェブフックリクエストなどの送信先サーバー証明書の検証に利用する OS 組み込みのルート CA 証明書について をご確認ください。

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

stats_exporter_tls_verify_cacert_file = /path/to/server_cacert.pem

エクスポーター

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

共通

  • type

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

  • node_name

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

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

  • version

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

  • label

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

  • timestamp

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

HTTP ヘッダー

注釈

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

注意

x-sora-session-webhook-type は非推奨です、 sora-session-webhook-type を利用してください

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

typeconnection.user-agent の場合は sora-stats-exporter-type: connection.user-agentx-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 が入ります

  • role

  • session_id

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

  • client_id

  • connection_id

  • multistream

  • simulcast

  • spotlight

  • stats

{
  "channel_id": "sora",
  "session_id": "78K3N8E5M551XEKEWR8QN77PHW",
  "client_id": "NCD5EF3ME900ZDJ3SE27Y6AB6R",
  "connection_id": "NCD5EF3ME900ZDJ3SE27Y6AB6R",
  "id": "N6W0DBF6A957B01BKNJJR1HC04",
  "label": "WebRTC SFU Sora",
  "multistream": true,
  "spotlight": false,
  "simulcast": true,
  "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",
  "node_name": "sora@127.0.0.1",
  "version": "2023.2.0"
}

type: connection.sora

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

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

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 シグナリング利用時

        sequenceDiagram
    autonumber
    participant C as クライアント
    participant S as Sora
    participant kohaku as Stats Collector Kohaku
    participant tsdb as TimescaleDB
    note over C,tsdb: WebRTC 確立
    C--)S: Stats over DataChannel
    S->>+kohaku: Stats over HTTP/2
    kohaku->>+tsdb: Insert Stats
    tsdb-->>-kohaku: Ack
    kohaku-->>-S: 200 OK
    
© Copyright 2024, Shiguredo Inc Created using Sphinx 8.1.3