適切なJellyfinのログとは、サーバーが生成できるテキスト量の最大値ではありません。ディスクを圧迫したり認証情報を漏えいさせたりすることなく、ユーザーに見える症状をJellyfin、FFmpeg、コンテナランタイム、ストレージ、ネットワーク、プロキシのいずれかに結び付けられる、タイムスタンプ付きの十分な証拠です。
まず安定したベースラインを維持し、再現可能な問題に対してのみ詳細度を上げます。元のエラー発生期間を保持し、コンポーネント間で時刻を同期し、テスト後は通常のレベルに戻します。これにより、常時流れ続けるデバッグノイズではなく、診断に役立つ記録が得られます。
レベルを変更する前に、ログで答えるべき質問を定義する
再生について重要な質問は、どのユーザー操作が行われたか、セッションがダイレクト再生だったかトランスコードだったか、どのFFmpegジョブがそのセッションに属していたか、そして最初のエラーがどこで発生したかです。ログインでは、クライアントのリクエスト、プロキシのレスポンス、Jellyfinの認証結果という経路が重要になる場合があります。ライブラリ処理では、すべての通常オブジェクトを記録するよりも、タスクの開始、パス、所要時間、データベースまたはストレージのエラーのほうが重要です。
ログレベルは、通常の動作と診断の詳細を分けるために存在します。ログレベルの解説では、DEBUGは通常の本番環境のベースラインではなく、一時的なトラブルシューティング用の詳細情報として扱われています。ログの量と内容によって、ストレージ、I/O、プライバシー上のコストが発生するためです。
詳細度を上げる前に、対象の症状と成功条件を書き留めておきます。何のイベントを捕捉しようとしているのか説明できない場合、ログを広範囲に記録しても診断が改善せず、検索作業だけが増える可能性があります。
障害に至る経緯を保持できる期間、通常ログを保存する
ローテーションを急ぎすぎてクラッシュ前の数分間が消えないようにし、Jellyfinのアプリデータと同じファイルシステム上にログを無制限に保存しないでください。家庭内で問題に気づいてから管理者が確認できるまでの時間をカバーできる保存期間を選びます。
コンテナのログは、Jellyfin自身のファイルログとは別に増加することがあります。Dockerのローテーション設定を使用すると、標準出力と標準エラー出力がホスト上の無制限ファイルになるのを防ぎながら、診断に必要な直近の世代を保持できます。
ログファイルシステムのバイト数とinodeの両方を監視します。詳細なログを記録した障害によって、Jellyfinがデータベース、キャッシュ、トランスコードに必要とするストレージが満杯になるなら、ログポリシーは失敗です。容量アラームはハードリミットに達する前に発報する必要があります。
1つのコンポーネントと1つの再現期間に対して詳細度を上げる
通常のログで障害を特定できない場合は、影響を受けたコンポーネントに対してのみ、または実用上最短の期間だけ詳細度を上げます。正確な開始時刻を記録し、同じ操作を1~2回再現したら、取得した期間を確認する前にベースラインへ戻します。
障害が本当にすべての対象を横断していない限り、Jellyfin、リバースプロキシ、Docker、すべてのプラグイン、OSで同時に最大詳細度を有効にしないでください。粒度の高いログを使うとイベントの流れが読みやすくなり、ログ記録自体がタイミングやI/Oの挙動を変える可能性も減ります。
より広範な本番環境のログ運用では、調査中だけ一時的に詳細度を上げ、その後に戻すことが推奨されています。次の担当者がログ量の変化した理由を把握できるよう、レベルの変更をインシデント記録の一部として扱います。
Jellyfin、FFmpeg、プロキシ、ホストのログを時刻で相関させる
ホスト、コンテナ、プロキシ、クライアントの時刻が適切に同期されていることを確認します。障害が発生した操作の実時刻を記録し、まずJellyfinのアプリケーションログと、そのセッションで生成された正確なFFmpegログを検索してから、プロキシやホストのイベントへ範囲を広げます。
コンテナでは、ログ履歴全体を出力するよりも、時間範囲を指定したフィルタリングのほうが有用です。コンテナログのフィルタリング手順では、時間範囲と末尾の行数制限を使い、古い証拠を消さずに関連する起動または障害の期間を絞り込みます。
Jellyfinに一致するリクエストがない場合は、DNS、TLS、プロキシ、ファイアウォール、クライアントのルーティングを調べます。Jellyfinがリクエストを受け取り、FFmpegが終了している場合は、メディアパイプラインを追跡します。同じ時刻にホストログへI/O、OOM、デバイスリセットのエラーが記録されているなら、その証拠を別のアプリケーションレベルのデバッグサイクルで埋もれさせないでください。
診断コンテキストを壊さずに共有ログをマスキングする
ログを家庭内のシステム外へ出す前にコピーを作成し、アクセストークン、Cookie、APIキー、クエリ文字列内の秘密情報、不要な個人ユーザー名、プラグインやプロキシが出力した認証情報をマスキングします。障害の説明に必要なタイムスタンプ、ステータスコード、ルート名、コンポーネント名、エラーメッセージは保持してください。
行全体を削除するのではなく、[REDACTED_TOKEN]のような一貫したプレースホルダーを使用します。これにより、秘密の値を保護しながら関連性を確認できます。インシデント分析にまだ必要であれば、マスキング前のログをアクセス制限付きでローカルに保管してもかまいません。
警告を停止または監視の判断につなげるZimaSpaceの記事は、最後のフィルターとして役立ちます。ログ記録が成功したと言えるのは、単に行数が増えたときではなく、次の対応が変わったときです。
既知の障害と静かな期間でログポリシーを検証する
制御されたログイン失敗や強制的なトランスコードなど、害のない既知のイベントを1つ発生させ、ベースラインのログだけで追跡に必要な識別子を十分取得できることを確認します。その後、通常の視聴期間を通して、ログ量、ローテーション、ディスク使用量、検索性が予測可能な状態に保たれることを確認します。
実際のインシデント後には、どのログ行が最初に根本原因を特定したか、またどの大量出力カテゴリが価値を加えなかったかを記録します。その証拠に基づいて保存期間やコンポーネントの詳細度を調整し、直感だけでログカテゴリ全体を削除しないでください。
通常ログが一般的な障害に至る経緯を保持し、一時的なデバッグ詳細を再起動の混乱なしに有効化・解除でき、FFmpegセッションを相関させられ、機密データを安全に共有でき、さらにログストレージが気づかないうちに次のJellyfin障害の原因にならないなら、そのポリシーは合格です。
サポートとヒント
もっと読む

Jellyfinでは共有アカウントを1つ使うべきか、それとも家庭内で別々のアカウントを使うべきか?
必要な本人確認、アクセス、ペアレンタルコントロール、復旧の境界に応じて、Jellyfinの家庭用アカウントを選択してください。

作業完了後もJellyfinのメモリ使用量が高いままなのはなぜですか?
Jellyfinプロセスの増加とLinuxキャッシュを切り分け、メモリ使用量が増え続けるか、実際にメモリ圧迫が発生した場合にのみ調査してください。

Jellyfinのストレージ構成が復旧リスクになりつつある兆候
Jellyfinのストレージの役割を監査し、稼働中の状態をバックアップや再構築可能なデータから分離したうえで、復元によってその構成を検証する。

