# 統計 API

> **注意**
>
> この API は [実験的機能](EXPERIMENTAL.html) のため、正式版では仕様が変更される可能性があります。


## GetStatsReport

**x-sora-target**: Sora_20171010.GetStatsReport

Sora が起動している間の Sora 全体の統計情報を取得できます。
この統計情報は Sora を止めたり再起動したりすることでクリアされますので注意してください。

### レスポンス項目

- version- sora のバージョン
- total_connection_created- 現在までの接続が作成された数
- total_connection_updated- 現在までの接続が更新された数
- total_connection_destroyed- 現在までの接続が破棄された数
- total_session_created- 現在までのセッションが作成された数
- total_session_destroyed- 現在までのセッションが破棄された数
- total_successful_connections- 現在までの接続が成功した数
- total_ongoing_connections- 現在接続している数
- total_failed_connections- 現在までの接続が失敗した数
- total_duration_sec- 現在までの合計接続時間 (秒)
- total_turn_udp_connections- 現在までの TURN-UDP での接続数
- total_turn_tcp_connections- 現在までの TURN-TCP または TURN-TLS での接続数
- total_received_invalid_turn_tcp_packet- 現在までの TURN-TCP でパースできないパケットが送られてきた数
- total_auth_webhook_allowed- 認証ウェブフックで許可された数
- total_auth_webhook_denied- 認証ウェブフックで拒否された数
- total_successful_auth_webhook- 認証ウェブフックが成功した数
- total_failed_auth_webhook- 認証ウェブフックが失敗した数
- total_successful_session_webhook- セッションウェブフックが成功した数
- total_failed_session_webhook- セッションウェブフックが失敗した数
- total_ignored_session_webhook- 無視されたセッションウェブフックの合計数
- total_successful_event_webhook- イベントウェブフックが成功した数
- total_failed_event_webhook- イベントウェブフックが失敗した数
- total_ignored_event_webhook- 無視されたイベントウェブフックの合計数
- total_successful_stats_webhook- 統計ウェブフックが成功した数
- total_failed_stats_webhook- 統計ウェブフックが失敗した数
- total_ignored_stats_webhook- 無視された統計ウェブフックの合計数
- average_duration_sec- 平均接続時間 (秒)
- average_setup_time_msec- 平均セットアップ時間 (ミリ秒)
  - セットアップ時間とはシグナリング接続開始から WebRTC が確立するまでにかかった時間です
- total_received_srtp- 受信した SRTP パケットの数
- total_received_srtp_byte_size- 受信した SRTP パケットのバイト数
- total_sent_srtp- 送信した SRTP パケットの数
- total_sent_srtp_byte_size- 送信した SRTP パケットのバイト数
  - Sora は暗号化したパケットは必ず送信します
- total_decrypted_srtp- 復号した SRTP パケットの数
  - Sora は誰も視聴していない音声や映像パケットを復号しません
- total_decrypted_srtp_byte_size- 復号した SRTP パケットのバイト数
- total_received_sctp- 受信した SCTP パケットの数
- total_received_sctp_byte_size- 受信した SCTP パケットのバイト数
- total_sent_sctp- 送信した SCTP パケットの数
- total_sent_sctp_byte_size- 送信した SCTP パケットのバイト数
- cluster- 現時点ではクラスター機能で採用している [Raft Consensus Algorithm](https://raft.github.io/) の情報です
  - raft_commit_index- Raft ノードが最後にコミットしたログのインデックス番号
  - raft_state- Raft ノードの現在の状態
  - raft_term- Raft ノードの現在の term
- cluster_relay- **この統計データは厳密なデータではないため、参考程度にご利用ください**
  - クラスターリレー機能が有効な場合この項目が追加されます
  - node_name- 対象ノード名
  - total_sent_byte_size- 対象ノードへリレー機能で送信したバイト数
  - total_received_byte_size- 対象ノードからリレー機能で受信したバイト数
  - total_sent- 対象ノードからリレー機能で送信したパケット数
  - total_received- 対象ノードからリレー機能で受信したパケット数
  - 対象ノードが削除された場合でも再起動されるまでは統計情報は残ります

ウェブフックの成功は 2xx 系が戻ってきておりかつ、JSON がある場合は JSON のパースに失敗しない場合です。
それ以外は失敗としています。

```console
$ http POST 127.0.0.1:3000/ \
    x-sora-target:Sora_20171010.GetStatsReport \
    -vvv

POST / HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 0
Host: 127.0.0.1:3000
User-Agent: HTTPie/3.2.2
x-sora-target: Sora_20171010.GetStatsReport



HTTP/1.1 200 OK
access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, x-sora-target
access-control-allow-methods: POST, OPTIONS
access-control-allow-origin: http://127.0.0.1:5000
access-control-max-age: 1000
content-length: 172
content-type: application/json
date: Thu, 28 Mar 2024 05:24:12 GMT
server: Cowboy

{
    "average_duration_sec": 1450,
    "average_setup_time_msec": 879,
    "cluster": {
        "raft_commit_index": 28,
        "raft_state": "follower",
        "raft_term": 1
    },
    "cluster_relay": [
      {
        "node_name": "sora2@192.0.2.13",
        "total_sent_byte_size": 218930594,
        "total_received_byte_size": 219464372,
        "total_received": 264902,
        "total_sent": 265732
      },
      {
        "node_name": "sora3@192.0.2.13",
        "total_sent_byte_size": 218930594,
        "total_received_byte_size": 219794924,
        "total_received": 264782,
        "total_sent": 265732
      }
    ],
    "total_auth_webhook_allowed": 3,
    "total_auth_webhook_denied": 0,
    "total_connection_created": 3,
    "total_connection_destroyed": 2,
    "total_connection_updated": 48,
    "total_decrypted_srtp": 1792302,
    "total_decrypted_srtp_byte_size": 1533468254,
    "total_duration_sec": 2901,
    "total_failed_auth_webhook": 0,
    "total_failed_connections": 0,
    "total_failed_event_webhook": 0,
    "total_failed_session_webhook": 0,
    "total_failed_stats_webhook": 0,
    "total_ignored_event_webhook": 0,
    "total_ignored_session_webhook": 0,
    "total_ignored_stats_webhook": 0,
    "total_ongoing_connections": 1,
    "total_received_invalid_turn_tcp_packet": 38,
    "total_received_sctp": 0,
    "total_received_sctp_byte_size": 0,
    "total_received_srtp": 2640526,
    "total_received_srtp_byte_size": 2385140500,
    "total_sent_sctp": 0,
    "total_sent_sctp_byte_size": 0,
    "total_sent_srtp": 1369704,
    "total_sent_srtp_byte_size": 475699779,
    "total_session_created": 3,
    "total_session_destroyed": 2,
    "total_successful_auth_webhook": 3,
    "total_successful_connections": 3,
    "total_successful_event_webhook": 60,
    "total_successful_session_webhook": 5,
    "total_successful_stats_webhook": 5,
    "total_turn_tcp_connections": 0,
    "total_turn_udp_connections": 3,
    "version": "2024.1.0"
}
```
