本文へスキップ

ログ ​

サービスの Logs タイルを開くか、サービスの Deployments の一覧でデプロイをクリックします。ログには専用のページがあります。

  • デプロイ。 上部のドロップダウンで、どのデプロイのログを見るかを選びます。現在のデプロイが先頭にあり、それより前のものは History の下にあります(Removed または Failed)。隣にはデプロイの状態、ID(コピーボタン付き)、デプロイしたブランチとコミット(イメージを使うサービスではイメージ)が表示されます。
  • Build logs はそのデプロイの出力です:クローン、ビルド、push、展開。デプロイ中はリアルタイムで更新され、終了後もデプロイとともに残ります。イメージをデプロイしただけのデプロイにはビルドがないので、このタブは使えません(ただしデプロイが失敗した場合は、その手順から原因がわかるので使えます)。
  • Runtime logs はサービスのコンテナの出力で、その間に Zenavo のプラットフォームイベントが入ります。

表の読み方 ​

1 行のログが表の 1 行になり、列は 3 つです。

列表示内容
SeverityERROR、WARN、INFO、DEBUG と色付きの点。
Timeブラウザのタイムゾーンでの日時。例:10/22 18:25:06。
Summary1 行に収めたログ。行(または左の矢印)をクリックすると全体が表示されます。JSON は整形され、Copy で行をコピーできます。展開した行には正確な時刻、インスタンス、デプロイも表示されます。

Zenavo は重要度を行そのものから読み取ります。JSON のロガー("level"、"severity"、pino の数値レベル)、level= フィールド、行頭付近の INFO:、[WARN]、ERROR - などの語(uvicorn、Python logging、Java、Rails、Go)、Kubernetes 形式の E1022 … 行、nginx の [error]、クラッシュ(Traceback、panic:、…Error:)を理解します。レベルのないアクセスログは、4xx の応答が WARN、5xx が ERROR です。スタックフレームのようにインデントされた行は、直前の行の重要度を引き継ぎます。それ以外は INFO です。Kubernetes は stderr への出力を stdout と区別しないので、stderr に書いただけではエラーになりません。

検索ボックスと ERROR / WARN / INFO / DEBUG ボタンで表を絞り込めます。表は最新の行を追いかけます。上にスクロールすると止まり、Jump to latest で再び追いかけます。Export は表示中の内容を .log ファイルとして保存します(保存されたログでは期間内のすべての行)。

プラットフォームイベント ​

アプリ自身の出力の間に、インスタンスに起きたことが紫色の [Zenavo] Pod/<インスタンス> の接頭辞付きで表示されます。

イベント意味
Scheduledインスタンスがサーバーに配置されました。
Pulling、Pulledイメージをダウンロード中、または準備完了。
Failed、ErrImagePull、ImagePullBackOff(ERROR)イメージを取得できません。名前、タグ、レジストリへのアクセスを確認してください。
Created、Startedコンテナが作成され、起動しました。
Unhealthy(WARN)ヘルスチェックが失敗しました。
BackOff(WARN)コンテナが終了を繰り返し、間隔を延ばしながら再起動されています。
OOMKilled(ERROR)メモリが足りなくなり、コンテナが停止されました。メモリ上限を上げるか使用量を減らしてください。
Exited(WARN)コンテナがエラーコードで終了しました。
Killing、Stoppedインスタンスが置き換えられ(新しいデプロイ、再起動、スケールダウン)、指示どおり停止しました。
FailedMount、Evicted、FailedScheduling(ERROR)ボリュームを接続できない、サーバーのリソースが足りない、またはインスタンスを動かす余地がありません。

ヘルスチェックの失敗のように繰り返すイベントは、1 分に 1 回まで回数付き(例:(x7))で表示されます。

インスタンスとデプロイ ​

Runtime logs は既定で Newest instance(最新のインスタンス)を追いかけます。All instances を選ぶとすべてのレプリカが表示され(展開中は新旧のインスタンスが並びます)、各行にインスタンス名が付きます。

各行と各イベントには、そのインスタンスを起動したデプロイが記録されるので、展開中に新旧のインスタンスが同時に動いていても、デプロイのログはそのデプロイのものだけになります。Zenavo がこれを記録し始める前に保存された行は、代わりに時間でデプロイに割り当てます(デプロイの開始から次のデプロイの完了まで)。そのような行を表示するときは、ページにその旨が表示されます。

期間と保存されたログ ​

現在のデプロイでは、All time でログをリアルタイムに追いかけます。各インスタンスの最後の 200 行と、その後の新しい行です。期間(過去 1 時間から過去 30 日、または任意の範囲)を選ぶと、保存されたログが表示されます。削除されたデプロイでは常に保存されたログが表示されます。行はたいてい書き出されてから 2 分以内に保存されます。

ログの保持期間はチームのプランで決まります。

プラン保持期間
Free48 時間
Dev7 日
Pro30 日
Team90 日

ログの保存は、機能が有効でサービスが動いているときに始まります。Viewer もライブログと同様に読んだりダウンロードしたりできます。

保存の仕組み ​

  • コントロールプレーンが収集します。 Zenavo はサーバーの管理にすでに使っている接続を通じて、プロジェクト自身の名前空間だけからログとイベントを読みます。サーバーにはストレージの認証情報が渡らないので、サーバーが侵害されても誰かの保存ログを読んだり消したりはできません。
  • 伏せ字にしてから暗号化します。 まず変数の値を取り除きます。コンテナの出力もイベントのメッセージも同じです(ヘルスチェック失敗のメッセージには受け取った応答が含まれることがあります)。続いて各チャンクを圧縮し、アップロード前にコントロールプレーンのマスターキーから導出した鍵で暗号化(AES-256-GCM)します。バケットやそのアクセスキーを手に入れた人にも暗号文しか見えません。
  • 期限どおりに削除します。 プランの保持期間を過ぎたログは 1 時間ごとに削除され、削除したプロジェクトやチームのログも消えます。
  • 上限があります。 各サービスが保存するログは 1 時間あたり 200 MB までです。それを超えるとお知らせの行を保存し、その時間の残りはスキップします。ライブログには全行が表示されます。64 KB を超える行は切り詰められます。

ログを Datadog、Loki、自分のエンドポイントにも転送するには、ログドレインを追加してください。プラットフォームイベントも [Zenavo] Pod/<インスタンス> — <理由>: <メッセージ> の行として転送されます。

Zeabur とは関係ありません。