第22章 コンテナーの監視
Podman コマンドを使用して Podman 環境を管理します。これにより、システムおよび Pod 情報を表示し、Podman イベントをモニターすることで、コンテナーの正常性を判別できます。
22.1. コンテナーでヘルスチェックを使用する リンクのコピーリンクがクリップボードにコピーされました!
ヘルスチェックを使用して、コンテナー内で実行されているプロセスの状態または準備ができているかどうかを判断できます。
ヘルスチェックが成功すると、コンテナーは "正常" とマークされます。そうでなければ、それは "正常ではありません"。podman exec コマンドを実行して終了コードを調べることで、ヘルスチェックを比較できます。ゼロの終了値は、コンテナーが "正常" であることを意味します。
Containerfile で HEALTHCHECK 命令を使用してイメージをビルドするとき、またはコマンドラインでコンテナーを作成するときに、ヘルスチェックを設定できます。podman inspect または podman ps コマンドを使用して、コンテナーのヘルスチェックのステータスを表示できます。
ヘルスチェックは、次の 6 つの基本コンポーネントで構成されます。
- コマンド
- Retries
- Interval
- Start-period
- Timeout
- コンテナー回収
ヘルスチェックコンポーネントの説明は次のとおりです。
- コマンド (
--health-cmdオプション) - Podman は、ターゲットコンテナー内でコマンドを実行して終了コードを待ちます。
他の 5 つのコンポーネントは、ヘルスチェックのスケジューリングに関連しており、オプションです。
- 再試行 (
--health-retriesオプション) - "正常でない" とマークするまでに、ヘルスチェックで連続して不合格とならなければならないか、その回数を定義します。healthcheck に成功すると、再試行数がリセットされます。
- 間隔 (
--health-intervalオプション) - 次回に healthcheck コマンドを実行するまでの時間を指定します。間隔が短いと、システムでの healthcheck の実行時間が長くなる点に注意してください。間隔が長いと、タイムアウトの検出が困難になります。
- 開始期間 (
--health-start-periodオプション) - コンテナーを起動してから healthcheck の不合格を無視するまでの時間を指定します。
- タイムアウト (
--health-timeoutオプション) - healthcheck の完了前に不合格とみなされるまでの期間を指定します。
Retries、Interval、および Start-period コンポーネントの値は、30s や 1h15m などの期間です。有効な時間単位は、"ns"、"us" または "µs"、"ms"、"s"、"m"、および "h"。
- コンテナーの復旧 (
--health-on-failureオプション) コンテナーのステータスが異常な場合に実行するアクションを決定します。アプリケーションに障害が発生すると、Podman は自動的にアプリケーションを再起動して堅牢性を提供します。
--health-on-failureオプションは、次の 4 つのアクションをサポートします。-
none: アクションを実行しません。これがデフォルトのアクションです。 -
kill: コンテナーを強制終了します。 -
restart: コンテナーを再起動します。 stop: コンテナーを停止します。注記--health-on-failureオプションは、Podman バージョン 4.2 以降で使用できます。
-
restart アクションを --restart オプションと組み合わせないでください。systemd ユニット内で実行する場合は、代わりに kill または stop アクションを使用して、systemd 再起動ポリシーを利用することを検討してください。
コンテナー内でヘルスチェックが実行されます。ヘルスチェックは、サービスのヘルス状態がどのようなものかを把握しており、ヘルスチェックの成功と失敗を区別できる場合にのみ意味があります。