第21章 コンテナーの監視
Podman コマンドを使用して Podman 環境を管理します。これにより、システムおよび Pod 情報を表示し、Podman イベントをモニターすることで、コンテナーの正常性を判別できます。
21.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
再起動ポリシーを利用することを検討してください。
コンテナー内でヘルスチェックが実行されます。ヘルスチェックは、サービスのヘルス状態がどのようなものかを把握しており、ヘルスチェックの成功と失敗を区別できる場合にのみ意味があります。
関連情報
-
podman-healthcheck
man ページ -
podman-run
の man ページ - エッジの Podman: カスタムのヘルスチェックアクションでサービスを維持する
- Monitoring container vitality and availability with Podman