統計エクスポーター機能¶
概要¶
Sora 経由で統計情報コレクターに向けて統計情報をエクスポートする機能です。
HTTP/2¶
- 統計コレクターサーバーは HTTP/2 に対応している必要があります
- h2c と h2 の両方に対応しています
http://から始めると h2c を利用しますhttps://から始めると h2 を利用します
WebRTC Stats Collector 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_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
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 ヘッダー¶
統計エクスポーターの HTTP ヘッダー に x-sora-stats-exporter-type というヘッダー名で統計エクスポーターのタイプが入ってきます。
type が connection.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 の頻度指定¶
変化が無かったり変化の少ない 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 シグナリング利用時¶
seqdiag { default_fontsize = 15; edge_length = 220; === WebRTC 確立 === クライアント -> Sora [label = 'Stats over DataChannel', noactivate]; Sora -> "Stats Collector" [label = 'Stats over HTTP/2']; "Stats Collector" -> TSDB [noactivate]; "Stats Collector" <-- TSDB; Sora <<-- "Stats Collector" [label = '200 OK']; }