すべてのプロダクト
Search
ドキュメントセンター

Elastic Container Instance:プローブを使用したコンテナのヘルスチェック

最終更新日:Jun 22, 2026

liveness プローブと readiness プローブは、コンテナの状態をチェックするメカニズムです。liveness プローブはコンテナが正常に実行されているかどうかを判断し、readiness プローブはリクエストを処理する準備ができているかどうかを判断します。このトピックでは、Elastic Container Instance (ECI) のコンテナに対して liveness プローブと readiness プローブを設定する方法について説明します。これらのプローブは、ECI がコンテナの状態を監視および管理するのに役立ち、高いサービス可用性と安定性を確保します。

概要

ECI は liveness プローブと readiness プローブをサポートし、コンテナのヘルス状態とステータスをチェックします。

プローブ

説明

ユースケース

liveness プローブ

コンテナが正常に実行されているかどうかをチェックします。

  • チェックが成功した場合、コンテナは正常と見なされます。

  • チェックが失敗した場合、システムは設定された再起動ポリシーに基づいてコンテナを再起動します。

  • liveness プローブが設定されていない場合、コンテナは常に正常と見なされます。

  • liveness プローブはデッドロックを検出できます。たとえば、アプリケーションが実行中であるものの処理が進まない場合、プローブはコンテナを再起動して回復を試みます。

  • 長時間実行されるアプリケーションは、再起動なしでは回復できない破損状態に陥ることがあります。liveness プローブは、この状況を検出して修正できます。

readiness プローブ

コンテナがリクエストを受け付けて処理する準備ができているかどうかをチェックします。

  • チェックが成功した場合、コンテナは準備完了と見なされ、トラフィックを受信できます。

  • チェックが失敗した場合、コンテナは準備ができていないと見なされ、プローブが再び成功するまでシステムはトラフィックの送信を停止します。

  • readiness プローブが設定されていない場合、コンテナは起動直後に準備完了と見なされます。

アプリケーションが起動時に大量のデータや設定ファイルを読み込んでいるなど、一時的にトラフィックを処理できない場合は、readiness プローブを使用します。このような場合、アプリケーションを終了させるのではなく、一時的にリクエストの送信を停止することが望まれます。

API 設定

CreateContainerGroup 操作で ECI インスタンスを作成する際に、LivenessProbe および ReadinessProbe パラメーターを使用してプローブを設定できます。詳細については、「CreateContainerGroup」をご参照ください。

LivenessProbe パラメーター

重要

LivenessProbe パラメーターを設定する際は、HttpGet、Exec、または TcpSocket のいずれか 1 つのチェックメソッドのみを指定できます。

パラメーター

タイプ

例

説明

Container.N.LivenessProbe.HttpGet.Path

string

/healthyz

HTTP GET ヘルスチェックリクエストのパス。

Container.N.LivenessProbe.HttpGet.Port

integer

8888

HTTP GET ヘルスチェックリクエストのポート。

Container.N.LivenessProbe.HttpGet.Scheme

string

HTTP

HTTP GET リクエストのプロトコル。有効値:

  • HTTP

  • HTTPS

Container.N.LivenessProbe.Exec.Command.N

array

cat /tmp/healthy

ヘルスチェックのためにコンテナ内で実行するコマンド。

Container.N.LivenessProbe.TcpSocket.Port

integer

8000

TCP ソケットヘルスチェックで確認するポート。

Container.N.LivenessProbe.InitialDelaySeconds

integer

5

コンテナが起動してから最初のプローブが実行されるまでの遅延時間 (秒)。

Container.N.LivenessProbe.PeriodSeconds

integer

1

プローブが実行される間隔。デフォルト値:10。最小値:1。単位:秒。

Container.N.LivenessProbe.SuccessThreshold

integer

1

失敗後にプローブが成功したと見なされるために必要な連続成功回数。liveness プローブの場合、この値は 1 である必要があります。デフォルト:1。

Container.N.LivenessProbe.FailureThreshold

integer

3

プローブが失敗したと見なされるために必要な連続失敗回数。デフォルト値:3。

Container.N.LivenessProbe.TimeoutSeconds

integer

1

プローブがタイムアウトするまでの秒数。デフォルト値:1。最小値:1。単位:秒。

ReadinessProbe パラメーター

重要

ReadinessProbe パラメーターを設定する際は、HttpGet、Exec、または TcpSocket のいずれか 1 つのチェックメソッドのみを指定できます。

パラメーター

タイプ

例

説明

Container.N.ReadinessProbe.HttpGet.Path

string

/healthyz

HTTP GET ヘルスチェックリクエストのパス。

Container.N.ReadinessProbe.HttpGet.Port

integer

8888

HTTP GET ヘルスチェックリクエストのポート。

Container.N.ReadinessProbe.HttpGet.Scheme

string

HTTP

HTTP GET リクエストのプロトコル。有効値:

  • HTTP

  • HTTPS

Container.N.ReadinessProbe.Exec.Command.N

array

cat /tmp/healthy

ヘルスチェックのためにコンテナ内で実行するコマンド。

Container.N.ReadinessProbe.TcpSocket.Port

integer

8000

TCP ソケットヘルスチェックで確認するポート。

Container.N.ReadinessProbe.InitialDelaySeconds

integer

5

コンテナが起動してから最初のプローブが実行されるまでの遅延時間 (秒)。

Container.N.ReadinessProbe.PeriodSeconds

integer

1

プローブが実行される間隔。デフォルト値:10。最小値:1。単位:秒。

Container.N.ReadinessProbe.SuccessThreshold

integer

1

失敗後にプローブが成功したと見なされるために必要な最小連続成功回数。デフォルト:1。最小値:1。

Container.N.ReadinessProbe.FailureThreshold

integer

3

プローブが失敗したと見なされるために必要な連続失敗回数。デフォルト値:3。

Container.N.ReadinessProbe.TimeoutSeconds

integer

1

プローブがタイムアウトするまでの秒数。デフォルト値:1。最小値:1。単位:秒。

コンソールでの設定

Elastic Container Instance コンソールで ECI インスタンスを作成する際、コンテナー設定 セクションでコンテナを選択し、コンテナの詳細設定を展開してヘルスチェックを有効にし、プローブを設定できます。

説明

コンソールでプローブを設定する場合、コマンドラインと HTTP リクエストメソッドのみがサポートされます。TCP ソケットメソッドはサポートされていません。

パラメーター

説明

時間設定

  • 遅延時間:コンテナの起動後、最初のプローブが実行されるまでの待機時間 (秒) です。これは API パラメーターの initialDelaySeconds に対応します。

  • タイムアウト:プローブがタイムアウトするまでの時間 (秒) です。プローブがタイムアウトした場合、失敗と見なされます。これは API パラメーターの timeoutSeconds に対応します。

検査方法

チェックメソッドを選択します。

  • コマンドラインスクリプト:プローブはコンテナ内でコマンドを実行します。コマンドがステータスコード 0 で終了した場合、チェックは成功と見なされます。

  • Httpリクエストメソッド:プローブはコンテナに HTTP リクエストを送信します。応答ステータスコードが 200 以上 400 未満 (2xx または 3xx) の場合、チェックは成功と見なされます。

コマンドラインスクリプト

チェックメソッドとして コマンドラインスクリプト を選択した場合は、コンテナで実行するコマンドを指定する必要があります。

Httpリクエストメソッド

チェックメソッドとして Httpリクエストメソッド を選択した場合は、HTTP GET リクエストのパス、ポート、およびプロトコルを指定する必要があります。

例

この例では、liveness プローブと readiness プローブを使用して ECI インスタンスを作成し、サービスの障害をシミュレートしてプローブの動作を確認する方法を示します。

  1. CreateContainerGroup 操作を呼び出して ECI インスタンスを作成します。

    次の例では、ヘルスチェックに TCP ソケットメソッドを使用します:

    ContainerGroupName=test-probe
    # nginx イメージを使用し、EIP を自動的に作成して関連付けます。
    Container.1.Name=container-1
    Container.1.Image=nginx
    AutoCreateEip=true
    # Liveness プローブ:起動後 5 秒で開始し、3 秒ごとにポート 80 をチェックします。成功のしきい値:1、失敗のしきい値:3、タイムアウト:10 秒。
    Container.1.LivenessProbe.TcpSocket.Port=80
    Container.1.LivenessProbe.InitialDelaySeconds=5
    Container.1.LivenessProbe.PeriodSeconds=3
    Container.1.LivenessProbe.SuccessThreshold=1
    Container.1.LivenessProbe.FailureThreshold=3
    Container.1.LivenessProbe.TimeoutSeconds=10
    # Readiness プローブ:起動後 5 秒で開始し、3 秒ごとにポート 80 をチェックします。成功のしきい値:1、失敗のしきい値:3、タイムアウト:10 秒。
    Container.1.ReadinessProbe.TcpSocket.Port=80
    Container.1.ReadinessProbe.InitialDelaySeconds=5
    Container.1.ReadinessProbe.PeriodSeconds=3
    Container.1.ReadinessProbe.SuccessThreshold=1
    Container.1.ReadinessProbe.FailureThreshold=3
    Container.1.ReadinessProbe.TimeoutSeconds=10
  2. Elastic Container Instance コンソールで ECI インスタンスのイベントを表示します。

    ECI インスタンスが作成されたら、インスタンス ID をクリックして詳細ページを開きます。イベント タブで、コンテナが正常に起動したことを確認できます。

    イベントリストには、「Pulling image "nginx"」、「Successfully pulled image "nginx"」、「Created container container-1」、「Started container container-1」の 4 つの Normal イベントが順番に表示されます。

  3. コンテナに接続します。詳細については、「ワークベンチを使用して ECI インスタンスに接続」をご参照ください。

  4. Nginx のリッスンポートを変更して、サービスの障害をシミュレートします。

    1. Nginx のリッスンポートを変更します。

      説明

      この例で使用されている Nginx イメージには vim がインストールされていません。vi コマンドを実行する前に、apt-get update と apt-get install vim を実行して vim をインストールしてください。

      vi /etc/nginx/conf.d/default.conf

      次の例に示すように、リッスンポートを 80 から 8080 に変更します:

      server {
          listen       8080;
          listen  [::]:8080;
          server_name  localhost;
          #access_log  /var/log/nginx/host.access.log  main;
          location / {
              root   /usr/share/nginx/html;
              index  index.html index.htm;
          }
          #error_page  404              /404.html;
          # redirect server error pages to the static page /50x.html
          #
          error_page   500 502 503 504  /50x.html;
          location = /50x.html {
              root   /usr/share/nginx/html;
          }
      }
    2. Nginx の設定を再読み込みします。

      nginx -s reload
  5. プローブの効果を確認します。

    Nginx を再読み込みしてから数秒後、コンテナは自動的に再起動します。インスタンスのイベントを表示して、liveness プローブと readiness プローブが失敗した後にコンテナが再起動することを確認できます。

    イベントリストには、プローブがメッセージ dial tcp 172.x.x.x:80: connect: connection refused とともに失敗したことが示されます。これは、コンテナポートへの接続が拒否されたことを意味します。その結果、ECI は自動的に container-1 コンテナを再起動しました。