メニュー
Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

サービスイベントメッセージ

サービスの問題をトラブルシューティングする場合、最初に診断情報を確認する必要があるのは、サービスイベントログです。

Amazon ECS コンソールでサービスイベントログを検査するには

  1. https://console.aws.amazon.com/ecs/ にある Amazon ECS コンソールを開きます。

  2. [Clusters] ページで、サービスが存在するクラスターを選択します。

  3. [クラスター : clustername] ページで、検査するサービスを選択します。

  4. [サービス : servicename] ページで、[イベント] を選択します。

     サービスイベントメッセージ
  5. [Message] 列で、エラーやその他の役立つ情報を調べます。

サービスイベントメッセージ

以下は、コンソールに表示されることがあるサービスイベントメッセージの例です。

(service service-name) was unable to place a task because the resources could not be found.

上記のイメージで、このサービスは別のタスクの追加に使用できるリソースを見つけることができませんでした。以下に示しているのは、その考えられる原因です。

ポートが足りない

タスクで固定ホストポートマッピングを使用している場合 (タスクでウェブサーバーのホスト上のポート 80 を使用している場合など)、タスクごとに 1 つ以上のコンテナインスタンスが必要です。コンテナインスタンスをクラスターに追加するか、タスクの必要数を減らす必要があります。

メモリが足りない

タスク定義で 1,000 MiB のメモリを指定しており、クラスター内の各コンテナインスタンスのメモリが 1,024 MiB の場合、コンテナインスタンスごとにこのタスクのコピーを 1 つのみ実行できます。タスク定義でメモリを減らしてコンテナインスタンスごとに複数のタスクを起動できるようにするか、クラスターで起動するコンテナインスタンスを増やすことができます。

注記

特定のインスタンスタイプでタスクにできるだけ多くのメモリを提供してリソースの使用率を最大限に高めるには、「コンテナインスタンス メモリ管理」を参照してください。

CPU が足りない

コンテナインスタンスには、CPU コアごとに 1,024 個の CPU ユニットがあります。タスク定義で 1,000 個の CPU ユニットを指定しており、クラスター内の各コンテナインスタンスの CPU ユニットが 1,024 個であると場合、コンテナインスタンスごとにこのタスクのコピーを 1 つのみ実行できます。タスク定義で CPU ユニット数を減らしてコンテナインスタンスごとに複数のタスクを起動できるようにするか、クラスターで起動するコンテナインスタンスを増やすことができます。

十分な数の ENI アタッチメントポイントを利用できない

awsvpc ネットワークモードを使用するタスクには、それぞれ独自の Elastic Network Interface が提供されます。この ENI は、ENI をホストするコンテナインスタンスにアタッチされています。Amazon EC2 インスタンスにアタッチできるネットワークインターフェイスの数には制限があり、プライマリネットワークインターフェイスも 1 つ分としてカウントされます。たとえば c4.large インスタンスにはネットワークインターフェイスを 3 つアタッチできますが、このインスタンスのプライマリネットワークアダプタも 1 つ分としてカウントされるため、このインスタンスに追加でアタッチできる ENI は 2 つです。各 awsvpc タスクにはネットワークインターフェイスが 1 つ必要なため、このインスタンスタイプでは、このようなタスクを 2 つしか実行できないということになります。各インスタンスタイプでサポートされる Network Interface の数の詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「各インスタンスタイプのネットワークインターフェイスごとの IP アドレス」を参照してください。クラスターにコンテナインスタンスを追加することで、利用できるネットワークアダプタの数を増やすことができます。

コンテナインスタンスに必須の属性がない

一部のタスク定義パラメーターでは、特定バージョンの Docker リモート API をコンテナインスタンスにインストールする必要があります。ロギングドライバーオプションなどのその他のパラメーターでは、コンテナインスタンスに ECS_AVAILABLE_LOGGING_DRIVERS エージェント設定変数を使用して、それらのロギングドライバーを登録する必要があります。タスク定義に特定のコンテナインスタンス属性を必要とするパラメーターが含まれており、この要件を満たすことができるコンテナインスタンスがない場合、そのタスクは配置できません。特定のタスク定義パラメーターとエージェント設定変数に必要な属性の詳細については、「タスク定義パラメーター」と「Amazon ECS コンテナエージェントの設定」を参照してください。

(service service-name) was unable to place a task because no container instance met all of its requirements. The closest matching container-instance container-instance-id encountered error "AGENT".

タスク配置に最も近い一致するコンテナインスタンス上の Amazon ECS コンテナエージェントが切断されています。コンテナインスタンスに SSH で接続できる場合は、エージェントログを調べることができます。詳細については、「Amazon ECS コンテナエージェントログ」を参照してください。エージェントがインスタンスで実行されていることも確認する必要があります。Amazon ECS に最適化された AMI を使用している場合は、以下のコマンドを使用して、エージェントを停止して再び開始できます。

sudo stop ecs && sudo start ecs

(service service-name) (instance instance-id) is unhealthy in (elb elb-name) due to (reason Instance has failed at least the UnhealthyThreshold number of health checks consecutively.)

このサービスはロードバランサーに登録されており、ロードバランサーのヘルスチェックは失敗しています。詳細については、「サービスロードバランサーのトラブルシューティング」を参照してください。

(サービス service-name) はタスクを継続的に正常に開始できません。

このサービスには、連続して試行された後開始に失敗したタスクがあります。この時点で、サービススケジューラによって再試行間隔が段階的に増加し始めます。タスクの起動に失敗している理由をトラブルシューティングする必要があります。詳細については、「サービスの調整ロジック」を参照してください。

更新されたタスク定義などでサービスが更新された後、サービススケジューラは正常な動作を再開します。

このページの内容: