統計エクスポーター機能

Removed in version 2025.1.0.

今後は 統計ウェブフック機能 をご利用ください。

概要

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

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

stats_exporter_tls_verify_cacert_file = /path/to/server_cacert.pem

エクスポーター

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

共通

  • type
    • 統計情報の種類情報が入ります
  • node_name
    • Sora のノード名が入ります
    • クラスター機能を利用していない場合は [email protected] です
  • version
    • Sora のバージョンが入ります
  • label
    • sora.conf に設定された label が入ります
  • timestamp
    • Sora が stats を送る直前の時間 RFC3339 形式の (UTC) が入ります

HTTP ヘッダー

統計エクスポーターの 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
  • simulcast
  • spotlight
  • stats
{
  "channel_id": "sora",
  "session_id": "78K3N8E5M551XEKEWR8QN77PHW",
  "client_id": "NCD5EF3ME900ZDJ3SE27Y6AB6R",
  "connection_id": "NCD5EF3ME900ZDJ3SE27Y6AB6R",
  "id": "N6W0DBF6A957B01BKNJJR1HC04",
  "label": "WebRTC SFU Sora",
  "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": "[email protected]",
  "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 シグナリング利用時

クライアントSoraStats Collector KohakuTimescaleDBクライアントSoraStats Collector KohakuTimescaleDBWebRTC 確立Stats over DataChannel1Stats over HTTP/22Insert Stats3Ack4200 OK5