################################ ログファイル ################################ **サポート問い合わせの場合は log/ ディレクトリ以下をすべて圧縮して送ってください** log/ 以下のログファイル ======================= Sora は log/ ディレクトリ以下にログファイルを出力します。 Sora の運用に関係するログ ------------------------- - sora.jsonl - Sora の開始、終了や問題があった場合に出力されますので、まずはこの監視をお願いします - ログローテーションされませんので、ログローテーションをお願いします - 週次ログローテーションを推奨します - cluster.jsonl - Sora クラスターに関するログが出力されます - **Sora クラスターを利用していない場合も出力されます** - ログローテーションされませんので、ログローテーションをお願いします - 週次ログローテーションを推奨します - auth_webhook.jsonl - auth_webhook で外部に送信する処理をすべて書き込みます - ログローテーションされませんので、ログローテーションをお願いします - 週次ログローテーションを推奨します - session_webhook.jsonl - session_webhook で外部に送信する処理をすべて書き込みます - ログローテーションされませんので、ログローテーションをお願いします - 週次ログローテーションを推奨します - session_webhook_error.jsonl - session_webhook で外部への送信が失敗した処理を書き込みます - ログローテーションされませんので、ログローテーションをお願いします - 週次ログローテーションを推奨します - event_webhook.jsonl - event_webhook で外部に送信する処理をすべて書き込みます - ログローテーションされませんので、ログローテーションをお願いします - 週次ログローテーションを推奨します - event_webhook_error.jsonl - event_webhook で外部に送信が失敗した処理を書き込みます - ログローテーションされませんので、ログローテーションをお願いします - 週次ログローテーションを推奨します Sora のサポートに関係するログ --------------------------------- - connection.jsonl - 接続が切断した際にクライアントとサーバーの統計情報を出力するログです - ログローテーションされませんので、ログローテーションをお願いします - 週次ログローテーションを推奨します - signaling.jsonl - シグナリングでやりとりされている offer/answer/candidate/re-offer/re-answer と接続終了を記録したログです - ログローテーションされませんので、ログローテーションをお願いします - 週次ログローテーションを推奨します - api.jsonl - 一部の API 操作に関するログを出力します - ログローテーションされませんので、ログローテーションをお願いします - 週次ログローテーションを推奨します - internal.jsonl - Sora が予定外の動作をしたときに出力されるログです。問題解決に必須のログです - ログローテーションされませんので、ログローテーションをお願いします - 週次ログローテーションを推奨します - crash.log - Sora が予定外の動作をしたときに出力されるログです。問題解決に必須のログです - ログローテーションされませんので、ログローテーションをお願いします - 週次ログローテーションを推奨します - erlang.log.<1-5> - サポート時に必要となるログですので、気にする必要はありません - 自動でログローテーションされますので、ログローテーションは不要です - ``bin/sora foreground`` コマンドで起動する場合には出力されません - sysctl.log - 起動時に取得するログで、毎回上書きされます - sysctl -a の実行結果を記録します - ログローテーションは不要です - ulimit.log - 起動時に取得するログで、毎回上書きされます - ulimit -n の実行結果を記録します - ログローテーションは不要です - run_erl.log - 起動時に出力されるログのため、ほとんどログが出力されることはありません - ログローテーションは不要です - ``bin/sora foreground`` コマンドで起動する場合には出力されません - connection_created_wait_timeout_error/_.jsonl - sora ログに ``CONNECTION-CREATED-WAIT-TIMEOUT-ERROR`` が出力された際の接続情報を出力します - クライアントと Sora との間で WebRTC が確立できなかった場合の情報です - ファイル名は時刻とコネクション ID の組み合わせです 特別なログ ========== Sora が異常終了した際 ``erl_crash.dump`` というファイルが log/ ディレクトリに生成されます。 こちらは **必ず** 保存し、送っていただけるようお願いいたします。 監視用確認目的で erl_crash.dump ログを強制的に出力させる方法 ------------------------------------------------------------ 監視を行う際に実際に ``erl_crash.dump`` を生成したい場合には、 ``bin/sora daemon`` で起動した上で、 ``kill -SIGUSR1`` を使用して ``run_erl`` プロセスを落としてください。 :: $ kill -SIGUSR1 <プロセス ID> この方法で log/ ディレクトリに ``erl_crash.dump`` が生成されます。 JSONL (JSON Lines) 形式 ============================================== Sora は一部のログを除いて JSONL 形式でログを出力します。 JSONL の仕様は `JSON Lines `_ に記載されているものに準拠します。 - UTF-8 エンコード - 改行は ``\n`` - 各行は JSON 値 - ファイル拡張子は ``jsonl`` JSONL 形式で出力されるログ ---------------------------------- - sora ログ - internal ログ - api ログ - signaling ログ - connection ログ - auth_webhook ログ - session_webhook ログ - session_webhook_error ログ - event_webhook ログ - event_webhook_error ログ - cluster ログ - connection_created_wait_timeout_error ログ id ---------------------------------- Sora が出力する全ての JSONL 形式のログには UUIDv4 を Base32 でエンコードした ``"id"`` が含まれます。 :json:`"id": "JKBYVZA3KN6QH249B6QTKDCX8M"` auth_webhook ログ ==================================== :出力ファイル名: auth_webhook.jsonl .. code-block:: javascript { "timestamp": "2024-01-19T02:44:22.799941Z", "id": "7N7RTNSEVN43ZB7NVXGAYPETJ4", "req": { "timestamp": "2024-01-19T02:44:22.793747Z", "id": "1EYTQSFVZ56MZ2BRZC12GQYQKW", "version": "2023.2.2", "label": "WebRTC SFU Sora", "node_name": "sora@127.0.0.1", "role": "sendrecv", "channel_id": "sora", "connection_id": "9SRMRSDWA959XFN74DCV3Z6XA0", "multistream": true, "simulcast": false, "spotlight": false, "audio": true, "audio_codec_type": "OPUS", "video": true, "video_codec_type": "VP9", "video_bit_rate": 500, "video_vp9_params": { "profile_id": 0 }, "data_channel_signaling": true, "ignore_disconnect_websocket": false, "channel_connections": 0, "channel_sendrecv_connections": 0, "channel_sendonly_connections": 0, "channel_recvonly_connections": 0, "sora_client": { "raw": "Sora JavaScript SDK 2023.2.0", "type": "Sora JavaScript SDK", "version": "2023.2.0", "environment": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" }, "e2ee": false }, "res": { "allowed": true, "client_id": "client-01" }, "url": "http://192.0.2.1:9000/webhook/auth" } auth_webhook ログの ``res`` 項目について -------------------------------------------- 認証ウェブフックが正常に動作しなかった場合、 レスポンスの JSON が取得できないため ``res`` 項目は書き込まれません。 - auth_webhook_url が未指定の場合でも ``{"allowed": true}`` が ``res`` 項目として出力されます - auth_webhook_url にアクセスができない場合は出力されません - auth_webhook_url のステータスコードが 2XX 系以外の場合は出力されません - エラーは sora ログに出力されます - auth_webhook_url のステータスコードが 2XX 系でも戻り値の JSON がパースできない場合は出力されません - エラーは sora ログに出力されます session_webhook ログ ==================================== :出力ファイル名: session_webhook.jsonl .. code-block:: javascript { "id": "XJ227VDDFH60BAB833C1R2HDBW", "timestamp": "2024-04-19T05:32:25.583312Z", "req": { "id": "D5PAF0ZHDX00B4VAWMZAR866MR", "label": "WebRTC SFU Sora", "timestamp": "2024-04-19T05:32:24.280641Z", "type": "session.created", "version": "2024.1.0", "node_name": "sora@127.0.0.1", "session_id": "NAA3DGPJQH2J7FDV698RZ9X6R0", "channel_id": "sora", "multistream": true, "spotlight": false, "created_time": 1713504744, "created_timestamp": "2024-04-19T05:32:24.277809Z" }, "url": "http://192.0.2.1/webhook/session", "res": { "recording": true } } session_webhook ログの ``res`` 項目について ---------------------------------------------------- 認証ウェブフックが正常に動作しなかった場合、 レスポンスの JSON が取得できないため ``res`` 項目は書き込まれません。 - session_webhook_url にアクセスができない場合は出力されません - session_webhook_url のステータスコードが 2XX 系以外の場合は出力されません - エラーは sora ログに出力されます - session_webhook_url のステータスコードが 2XX 系でも戻り値の JSON がパースできない場合は出力されません - エラーは sora ログに出力されます .. _connection_log: connection ログ ============================================== :出力ファイル名: connection.jsonl Sora は接続単位で統計情報を保持しています。クライアント側の統計情報とサーバー側の統計情報の両方をログとして出力します。 クライアント側の統計情報はユーザーエージェント統計情報機能を利用しているため、 SDK 側がユーザーエージェント統計機能に対応している必要があります。 こちらのログはログローテーションしないため、ローテーションが必要となります。 .. _sora_log: sora ログ ============================== :出力ファイル名: sora.jsonl sora ログは主にサポートで利用するためのログを出力します。そのためエラーメッセージがかなり技術的な表現になっています。 - sora ログは何かあって大量のログが出たとしてもうまい具合にスキップする機能が入っています UTC に固定 ---------- sora ログのタイムスタンプは RFC 3339 UTC (マイクロ秒) 形式に固定されています。 ``timestamp`` という項目でタイムスタンプが出力されます。 .. code-block:: javascript { "id": "QGJMC1AF3552V448N8F53CZBJ4", "level": "debug", "channel_id": "sora", "multistream": true, "role": "sendonly", "simulcast": false, "spotlight": false, "node_name": "sora@127.0.0.1", "connection_id": "NXHKH46FP93571ZM4PZBSFD4Z4", "timestamp": "2022-08-02T04:43:02.828358Z" } クラスター利用時 ---------------------------------- .. code-block:: javascript { "id": "QR6YX8VW8H76N6S3B7HBCXJ4PM", "level": "debug", "channel_id": "sora", "multistream": true, "role": "sendonly", "simulcast": false, "spotlight": false, "node_name": "sora@127.0.0.1", "connection_id": "NXHKH46FP93571ZM4PZBSFD4Z4", "timestamp": "2022-08-02T04:43:02.828358Z" } オプション情報 ---------------------- .. code-block:: javascript { "level": "debug", "channel_id": "sora", "multistream": true, "role": "sendonly", "simulcast": false, "spotlight": false, "node_name": "sora@127.0.0.1", "connection_id": "NXHKH46FP93571ZM4PZBSFD4Z4", "timestamp": "2022-08-02T04:43:02.828358Z" } 出力例 ------ シグナリング接続時に認証サーバーがステータスコード 400 を返してきた際に出力される ``AUTH-WEBHOOK-RESPONSE-UNEXPECTED-STATUS-CODE`` の出力例は次の通りです。 .. code-block:: javascript { "channel_id": "sora", "connection_id": "J9RQEB074S2EB9SFBCN9AH7ASM", "domain": [ "sora", "signaling" ], "level": "error", "msg": "AUTH-WEBHOOK-RESPONSE-UNEXPECTED-STATUS-CODE | reason={auth_webhook_response_unexpected_status_code,#{status_code => 400}}", "multistream": true, "node": "sora@127.0.0.1", "role": "recvonly", "simulcast": false, "sora_version": "2022.2.0", "spotlight": false, "timestamp": "2022-08-03T03:43:13.588364Z" } シグナリング接続時の ``"type": "connect"`` で指定する JSON が間違っており、Sora 側から切断した際に出力される ``INVALID-JSON`` の出力例は次のとおりです。 .. code-block:: javascript { "msg": "INVALID-JSON | reason=...", "node": "sora@127.0.0.1", "level": "error", "domain": [ "sora", "signaling" ], "channel_id": "sora", "timestamp": "2023-11-02T02:12:35.854402Z", "sora_version": "2022.2.0" } シグナリングに WebSocket を利用している場合に、指定時間に一度も ``"type": "pong"`` が返ってこない場合Sora 側から切断した際に出力される ``PONG-TIMEOUT-ERROR`` の出力例は次の通りです。 指定時間のデフォルト値は 60 秒です。 ``sora.conf`` の設定 :ref:`sora_conf-websocket_signaling_pong_timeout` で変更できます。 .. code-block:: javascript { "msg": "PONG-TIMEOUT-ERROR | reason=<<\"WebSocket\">>", "node": "sora@127.0.0.1", "role": "sendrecv", "level": "error", "domain": [ "sora", "signaling" ], "simulcast": false, "spotlight": false, "timestamp": "2023-11-02T02:12:35.854402Z", "channel_id": "sora", "multistream": true, "sora_version": "2023.1.0", "connection_id": "174QEZP34D45B6S7665Y32MSQ0" } warning ------- ログレベル ``warning`` は「接続自体は維持できる問題」の際に出力します。 このログが出力された場合でも Sora 側から切断は行いません。 - 一般 - WEBSOCKET-TERMINATE - DataChannel シグナリングで ignore_disconnect_websocket: true の際に WebSocket が想定外の終了をした場合に出力します - MULTISTREAM-RE-ANSWER-NO-ICE-UFRAG - マルチストリーム利用時 ``type: re-answer`` を受信した際に ICE に必要な SDP が含まれていない場合に出力します - MULTISTREAM-INTERNAL-ERROR - ウェブフック - INVALID-AUTHZ-VALUE - 認証ウェブフック成功時に認証サーバーからの払い出した値がおかしい場合に出力します - TERMINATE-EVENT-WORKER - イベントウェブフックのワーカーが何らかの理由で終了した場合に出力します - MISSING-WEBHOOK-BASIC-AUTH-USER-ID - ウェブフック利用時にベーシック認証のユーザー ID が見つからない場合に出力します - MISSING-WEBHOOK-BASIC-AUTH-PASSWORD - ウェブフック利用時にベーシック認証のパスワードが見つからない場合に出力します - MISSING-WEBHOOK-PROXY-AUTH-PASSWORD - ウェブフック利用時にプロキシのパスワードが見つからない場合に出力します - 録画 - ARCHIVE-FINAL-SPLIT-ERROR - 録画ファイルの分割がエラーになった場合に出力します、ただし全体出力に向けて処理は継続します - MISSING-RECORDING-WORKER-PID - 録画処理が完了したワーカーが見つからず正常終了できない場合に出力します - プロトコル - DTLS-ALERT - DTLS でレベルが WARNING のアラートメッセージがクライアントから送られてきた場合に出力します - TURN-SEND-INDICATION-BINDING-ERROR - TURN 利用時に STUN-Binding-Error over STUN-Send-Indication を受信した場合に出力します - TURN-CHANNEL-DATA-BINDING-ERROR - TURN 利用時に STUN-Binding-Error over TURN-Channel-Data を受信した場合に出力します - SIMULCAST-DUPLICATED-RID - クライアントから複数の SSRC から同一の RID が送られてきた場合に出力します - UNKNOWN-RTP - ``role: reconly`` にもかかわらず RTP パケットが送られてきた場合に出力します - Sora の内部エラーでも出力される場合があります - UNKNWON-RTCP - 見知らぬ RTCP を受信した場合に出力します - ULPFEC-RECOVER-ERROR - ULPFEC を利用している場合にリカバーを試みて失敗した場合に出力します - RTP-PACKET-LOSS-SIMULATOR-INCOMING-ENABLED - 受信パケロスシュミレーターを有効にしている場合に出力します - RTP-PACKET-LOSS-SIMULATOR-OUTGOING-ENABLED - 送信パケロスシュミレーターを有効にしている場合に出力します error ------- ログレベル ``error`` は「接続自体を維持できない問題」の際に出力します。 このログが出力された場合、Sora 側から切断を行います。 - 一般 - UNEXPECTED-EXIT - シグナリング - INVALID-JSON - 無効な JSON を受け取った場合に出力します - FAILURE-JSON-DECODE - JSON のデコードに失敗した場合に出力します - AUTHENTICATION-FAILURE - 認証ウェブフックで認証が失敗した場合に出力します - AUTHENTICATION-INTERNAL-ERROR - 認証ウェブフックで 200 番台以外が返ってきた場合に出力します - INTERNAL-ERROR - Sora の内部エラーです - MISSING-SDP-FINGERPRINT - SDP に DTLS の証明書検証に利用するフィンガープリントが見つからなかった場合に出力します - MISSING-ICE-SDP - SDP に ICE で利用する情報が見つからなかった場合に出力します - FAILURE-SDP-PARSE - SDP のパースに失敗した場合に出力します - INVALID-SIGNALING-TYPE - 送られてきたシグナリングメッセージの type が無効な場合に出力します - UNEXPECTED-SIGNALING-TYPE - 送られてきたシグナリングメッセージの type が見知らぬ場合に出力します - MISSING-TYPE - 送られてきたシグナリングメッセージに type が見つからない場合に出力します - INVALID-MESSAGE - E2EE が有効ではないのに E2EE メッセージが送られてきた場合に出力します - TOO-LARGE-JSON - 送られてきた JSON が巨大な場合に出力されます - TOO-MANY-CANDIDATE - あまりにも多い ``"type": "candidate"`` を送ってきた場合に出力します - SIGNALING-INTERNAL-ERROR - シグナリングでの内部エラーが発生した場合に出力します - TRANSPORT-INTERNAL-ERROR - 通信での内部エラーが発生した場合に出力します - BAD-FINGERPRINT - DTLS の証明書の検証に失敗した場合に出力します - PONG-TIMEOUT-ERROR - 指定時間間隔 (デフォルト 5 秒) で type: ping を送信し、指定時間内に (デフォルト 60 秒間) 1 度も ``type: pong`` が返ってこない場合に出力します - これらの時間は ``sora.conf`` の設定 :ref:`sora_conf-websocket_signaling_ping_interval` と :ref:`sora_conf-websocket_signaling_pong_timeout` で変更できます。 - CONNECT-WAIT-TIMEOUT-ERROR - WebSocket を確立して一定時間以内に ``"type": "connect"`` を送ってこない場合に出力します - CONNECTION-CREATED-WAIT-TIMEOUT-ERROR - 一定時間以内に WebRTC が確立しない場合に出力します - ANSWER-TIMEOUT-ERROR - 一定時間以内に ``"type": "answer"`` を送ってこない場合に出力します - ライセンス - EXPIRED-LICENSE - ライセンスが切れている場合に出力されます - EXCEED-MAX-CONNECTIONS - ライセンスの同時接続数を超えて接続をしようとしたクライアントがいた場合に出力されます - 認証ウェブフック - AUTH-WEBHOOK-INTERNAL-ERROR - 認証ウェブフックで内部エラーが発生した場合出力します - AUTH-WEBHOOK-AUTHZ-INTERNAL-ERROR - 認証ウェブフックの戻り値で内部エラーが発生した場合出力します - セッションウェブフック - SESSION-WEBHOOK-INTERNAL-ERROR - セッションウェブフックが正常に送信できなかった、または内部エラーが発生した場合出力します - イベントウェブフック - EVENT-WEBHOOK-ERROR - イベントウェブフックリクエストが正常に送信できなかった場合に出力します - DataChannel - INVALID-DATA-CHANNEL-USER-DATA - 片方向でしか利用していない DataChannel にメッセージが送られてきた場合に出力します - 録画 - ARCHIVE-FAILED - 録画ファイルの生成に失敗した際に出力します - RECORDING-INTERNAL-ERROR - 録画で内部エラーが発生した際に出力します - E2EE - INVALID-E2EE-MESSAGE - E2EE メッセージがおかしい場合に出力します - NOT-ALLOWED-E2EE - E2EE を許可していない状態で E2EE 機能をクライアントが利用しようとした場合に出力します - プロトコル - TURN-UDP-INTERNAL-ERROR - TURN UDP で内部エラーが発生した場合に出力します - DTLS-ALERT - DTLS でレベルが FATAL のアラートメッセージが送られてきたとき出力します emergency -------------- ログレベル ``emergency`` は「Sora の起動を維持できない問題」の際に出力します。 このログが出力された場合、Sora を終了します。 - SORA-NODE-DUPLICATED - 同一ノード名の Sora が既に起動している場合に出力します - BOOT-FAILED - Sora が正常に起動できない場合に出力します - 設定 - SORA-CONF-ERROR - sora.conf が正常に読み込めない場合に出力します - クラスター - CLUSTER-INTERNAL-FAILURE - クラスター内部で問題が発生した際に出力します