ログファイル¶
サポート問い合わせの場合は log/ ディレクトリ以下をすべて圧縮して送ってください
log/ 以下のログファイル¶
Sora は log/ ディレクトリ以下にログファイルを出力します。
Sora の運用に関係するログ¶
sora.log または sora.jsonl
Sora の開始、終了や問題があった場合に出力されますので、まずはこの監視をお願いします
ログローテーションされませんので、ログローテーションをお願いします
週次ログローテーションを推奨します
auth_webhook.log または auth_webhook.jsonl
auth_webhook で外部に送信する処理を全て書き込みます
ログローテーションされませんので、ログローテーションをお願いします
週次ログローテーションを推奨します
session_webhook.log または session_webhook.jsonl
session_webhook で外部に送信する処理を全て書き込みます
ログローテーションされませんので、ログローテーションをお願いします
週次ログローテーションを推奨します
session_webhook_error.log または session_webhook_error.jsonl
session_webhook で外部への送信が失敗した処理を書き込みます
ログローテーションされませんので、ログローテーションをお願いします
週次ログローテーションを推奨します
event_webhook.log または event_webhook.jsonl
event_webhook で外部に送信する処理を全て書き込みます
ログローテーションされませんので、ログローテーションをお願いします
週次ログローテーションを推奨します
event_webhook_error.log または event_webhook_error.jsonl
event_webhook で外部に送信が失敗した処理を書き込みます
ログローテーションされませんので、ログローテーションをお願いします
週次ログローテーションを推奨します
Sora のサポートに関係するログ¶
connection.log または connection.jsonl
接続が切断した際にクライアントとサーバーの統計情報を出力するログです
ログローテーションされませんので、ログローテーションをお願いします
週次ログローテーションを推奨します
signaling.log または signaling.jsonl
シグナリングでやりとりされている offer/answer/candidate/re-offer/re-answer と接続終了を記録したログです
ログローテーションされませんので、ログローテーションをお願いします
週次ログローテーションを推奨します
api.log または api.jsonl
一部の API 操作に関するログを出力します
ログローテーションされませんので、ログローテーションをお願いします
週次ログローテーションを推奨します
internal.log または 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/<timestamp>_<connection_id>.jsonl
sora.log に
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.conf
の legacy_log_format
を false
に設定することで以下のログが JSONL フォーマットで出力されます。
JSONL フォーマット出力ログの拡張子を jsonl
に変更するには sora.conf
の legacy_log_extension
を false
に設定します。
sora ログ
internal ログ
api ログ
signaling ログ
connection ログ
auth_webhook ログ
session_webhook ログ
session_webhook_error ログ
event_webhook ログ
event_webhook_error ログ
connection ログ¶
- 出力ファイル名:
connection.log または connection.jsonl
Sora は接続単位で統計情報を保持しています。クライアント側の統計情報とサーバー側の統計情報の両方をログとして出力します。
クライアント側の統計情報はユーザーエージェント統計情報機能を利用しているため、 SDK 側がユーザーエージェント統計機能に対応している必要があります。
こちらのログはログローテーションしないため、ローテーションが必要となります。
sora ログ¶
- 出力ファイル名:
sora.log または sora.jsonl
sora ログは主にサポートで利用するためのログを出力します。そのためエラーメッセージがかなり技術的な表現になっています。
sora ログは何かあって大量のログが出たとしてもうまい具合にスキップする機能が入っています
UTC に固定¶
sora ログのタイムスタンプは RFC 3339 UTC (マイクロ秒) 形式に固定されています。
2022-06-06T08:04:37.390710Z [warning] [sora/1DSH1E4S/sendrecv] [sim,multi]
JSONL フォーマットの場合は timestamp
という項目でタイムスタンプが出力されます。
{
"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"
}
クラスター利用時¶
レガシーフォーマット利用時¶
レガシーフォーマット利用時にクラスターを有効にしている場合はログレベルの後ろにノード名が出力されます。
2022-06-07T02:25:48.479789Z [warning] sora@127.0.0.1 [sora/1DSH1E4S/sendrecv] [sim,multi]
JSONL フォーマット利用時¶
JSONL フォーマットの場合はノード名は常に出力されます。
{
"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"
}
オプション情報¶
レガシーフォーマット利用時¶
[チャネル ID/コネクション ID(ショート)/role] を表示します
multi
/spot
/sim
の3つを表示します
- multi
マルチストリーム
- spot
スポットライト
- sim
サイマルキャスト
2022-06-07T02:25:48.479789Z [warning] [sora/1DSH1E4S/sendrecv] [sim,multi]
JSONL フォーマット利用時¶
JSONL フォーマットの場合は各項目はブーリアンで出力されます。
{
"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"
}
出力例¶
レガシーフォーマット利用時¶
シグナリング接続時の "type"
で指定する JSON が間違っており、Sora 側から切断した際に出力される INVALID-JSON
の出力例は次のとおりです。
2022-06-07T02:25:48.479789Z [error] [-/-/-] <0.9239.2> INVALID-JSON
シグナリングに WebSocket を利用している場合に、 60 秒に一度も "type": "pong"
が返ってこない場合Sora 側から切断した際に出力される PONG-TIMEOUT-ERROR
の出力例は次の通りです。
2022-06-07T02:25:48.479789Z [error] [sora/4G7607CP/sendrecv] [multi] <0.13016.17> PONG-TIMEOUT-ERROR | reason=<<"WebSocket">>
JSONL フォーマット利用時¶
シグナリング接続時に認証サーバーがステータスコード 400 を返してきた際に出力される AUTH-WEBHOOK-RESPONSE-UNEXPECTED-STATUS-CODE
の出力例は次の通りです。
{
"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"
}
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 が返ってこない場合に出力します
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
認証ウェブフックの戻り値で内部エラーが発生した場合出力します
イベントウェブフック
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 を終了します。
BOOT-FAILED
Sora が正常に起動できない場合に出力します
設定
SORA-CONF-ERROR
sora.conf が正常に読み込めない場合に出力します
クラスター
CLUSTER-INTERNAL-FAILURE
クラスター内部で問題が発生した際に出力します