インスタンス配布ログを表示する

リージョン マネージド インスタンス グループ(MIG)を作成するか、ターゲット サイズを増やすと、Compute Engine はリアルタイムのリソース可用性を評価して、新しいコンピューティング インスタンスをゾーンとマシンタイプに分散します。このプロセス中に、Compute Engine は Cloud Logging にインスタンス分散ログエントリを記録します。

このドキュメントでは、これらのインスタンス配布ログを表示して解釈する方法について説明します。また、これらのログを使用して保留中の割り当てを調査し、アラートを構成する方法についても説明します。

実行中のインスタンスの実際の分布を確認するには、MIG でのインスタンスの分布をモニタリングするをご覧ください。

インスタンス配布ログについて

インスタンス配布ログには、コンピューティング インスタンスの MIG の計画された割り当ての 1 回限りのスナップショットが記録されます。これらのログで、割り当てられたインスタンスは、MIG が容量を検出し、そのマシンタイプとそのゾーンにコンピューティング インスタンスを作成する予定であることを意味します。割り当てられたサイズは、コンピューティング インスタンスが正常に作成されたことを意味するものではありません。

ログはスナップショットを提供するため、MIG が後で残りのコンピューティング インスタンスを作成しても、Compute Engine はこれらのログを更新しません。ログエントリでは、次の詳細情報を確認できます。

  • マシンタイプの分布: MIG がマシンタイプごとに割り当てたコンピューティング インスタンスの数。この情報は、インスタンスの柔軟性を使用するリージョン MIG にのみ表示されます。

  • ゾーン分布: MIG がゾーンごとに割り当てたコンピューティング インスタンスの数。

  • 容量を待機しているインスタンス: MIG が容量をすぐに割り当てることができず、容量を積極的に探しているインスタンスの数。

制限事項

  • インスタンス配布ログは、リージョン MIG でのみ使用できます。

  • 自動スケーリングなしで EVEN ターゲット分配形態を使用するリージョン MIG の場合、ログエントリには oldSize、newSize、deltaSize、targetShape フィールドのみが含まれ、インスタンスの分配の詳細は含まれません。

  • Compute Engine は、MIG を作成するか、ターゲット サイズを増やす場合にのみ、インスタンスの分散の詳細をログに記録します。Compute Engine は、ターゲット サイズが減少した場合や、インスタンスの修復、再作成、更新オペレーション中にこれらの詳細をログに記録しません。

特定の MIG のインスタンス分散ログを表示する

特定の MIG のインスタンス分散ログを表示するには、次のいずれかのオプションを使用します。

コンソール

特定の MIG のログは、インスタンス グループの詳細ページから直接表示できます。

  1. Google Cloud コンソールで、[インスタンス グループ] ページに移動します。

    [インスタンス グループ] に移動

  2. 表示する MIG の名前をクリックします。

  3. [モニタリング] タブをクリックします。

  4. 左側のペインで [ログ] を選択します。

  5. ログ結果フィルタに「instanceDistribution」と入力し、Enter キーを押します。

  6. インスタンスの分布データを表示するには、ログエントリを開き、protoPayload.metadata.details を開きます。

gcloud

特定の MIG のインスタンス分散ログを表示するには、gcloud logging read コマンドを使用します。

gcloud logging read "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND \
  protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\" AND \
  resource.labels.instance_group_manager_name=\"MIG_NAME\""

次のように置き換えます。

  • PROJECT_ID: オブジェクトの ID。

  • MIG_NAME: MIG の名前。

REST

特定の MIG のインスタンス分散ログを表示するには、entries.list メソッドに POST リクエストを送信します。

POST https://logging.googleapis.com/v2/entries:list
{
"resourceNames": [
  "projects/PROJECT_ID"
],
"filter": "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\" AND resource.labels.instance_group_manager_name=\"MIG_NAME\""
}

次のように置き換えます。

  • PROJECT_ID: オブジェクトの ID。

  • MIG_NAME: MIG の名前。

ログの各フィールドの詳細については、インスタンス配布ログエントリをご覧ください。

プロジェクト内のすべてのインスタンス配布ログを表示する

プロジェクト内のすべてのインスタンス配布ログを表示するには、次のいずれかのオプションを選択します。

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. クエリを入力します。以下に、いくつかの例を示します。

    • プロジェクト内のすべてのインスタンス配布ログを表示するには:

      logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event"
      protoPayload.methodName="compute.instanceGroupManagers.instanceDistribution"
      
    • サイズ変更の一部がまだ容量を待機しているインスタンスの分散ログを表示するには:

      logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event"
      protoPayload.methodName="compute.instanceGroupManagers.instanceDistribution"
      protoPayload.metadata.details.data.activeSeekDeltaSize > 0
      

    PROJECT_ID は、プロジェクトの ID に置き換えます。

  3. [クエリを実行] をクリックします。

  4. 結果で、ログエントリを開きます。

    • 概要とデータを表示するには、protoPayload.metadata.details を開きます。
    • 各行の概要を表示するには、message をクリックして [概要行にフィールドを追加] を選択します。

gcloud

インスタンス配布ログを表示するには、gcloud logging read コマンドを使用します。

  • プロジェクト内のすべてのインスタンス配布ログを表示するには:
gcloud logging read "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND \
  protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\""
  • プロジェクト内の過去 1 日間のすべてのログを表示するには、次のように --freshness=1d フラグを指定します。
gcloud logging read "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND \
    protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\"" \
    --freshness=1d
  • サイズ変更の一部がまだ容量を待機しているインスタンスの分散ログを表示するには:
gcloud logging read "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND \
    protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\" AND \
    protoPayload.metadata.details.data.activeSeekDeltaSize > 0"

PROJECT_ID は、プロジェクトの ID に置き換えます。

REST

インスタンス配布ログを表示するには、entries.list メソッドに POST リクエストを送信します。

  • プロジェクト内のすべてのインスタンス配布ログを表示するには:
POST https://logging.googleapis.com/v2/entries:list
{
  "resourceNames": [
    "projects/PROJECT_ID"
  ],
  "filter": "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\""
}
  • プロジェクト内の過去 1 日間のすべてのログを表示するには、フィルタに timestamp 条件を追加します。
POST https://logging.googleapis.com/v2/entries:list
{
  "resourceNames": [
    "projects/PROJECT_ID"
  ],
  "filter": "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\" AND timestamp >= \"YYYY-MM-DDThh:mm:ssZ\""
}
  • サイズ変更の一部がまだ容量を待機しているインスタンスの分散ログを表示するには:
POST https://logging.googleapis.com/v2/entries:list
{
  "resourceNames": [
    "projects/PROJECT_ID"
  ],
  "filter": "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\" AND protoPayload.metadata.details.data.activeSeekDeltaSize > 0"
}

次のように置き換えます。

  • PROJECT_ID: 実際のプロジェクトの ID。

  • YYYY-MM-DDThh:mm:ssZ: 開始時間の RFC 3339 タイムスタンプ(例: 2024-10-22T00:00:00Z)。

ログの各フィールドの詳細については、インスタンス配布ログエントリをご覧ください。

インスタンス分布のログエントリ

以下に、ログエントリ(protoPayload.metadata.details)の例を示します。このイベントは 1 回限りのスナップショットであるため、残りのインスタンスが後で作成されても、ログエントリは更新されません。ログエントリでは、次のように詳細を表示できます。

  • details.data: インスタンスの分散に関する構造化された詳細が表示されます。

  • details.message: インスタンスの分布の概要を表示します。

この例では、インスタンスの柔軟性を備えたリージョン MIG が 0 から 100 にスケールアウトしています。MIG は、100 個の新しいインスタンスのうち 80 個を、ランク付けされた 2 つのインスタンス選択(rank2-c2 選択の 20 c2-standard-4 インスタンスと rank3-n2d 選択の 60 n2d-standard-4 インスタンス)にすぐに割り当てます。このエントリは、40 コンピューティング インスタンスが us-central1-b と us-central1-c にそれぞれ割り当てられていることも示しています。残りの 20 インスタンス(activeSeekDeltaSize)については、MIG は構成されたすべてのインスタンス選択とゾーンで容量を継続的に検索します。インスタンスの柔軟性がないリージョン MIG の場合、ログエントリでは instanceSelections フィールドが省略され、ゾーン分布のみが表示されます。

"metadata": {
  "details": {
    "data": {
      "oldSize": 0,
      "newSize": 100,
      "deltaSize": 100,
      "targetShape": "BALANCED",
      "activeSeekDeltaSize": 20,
      "instanceSelections": {
        "rank1-n2": {
          "rank": 1,
          "machineSelections": [
            {
              "machineType": "n2-standard-4",
              "allocatedSize": 0
            }
          ]
        },
        "rank2-c2": {
          "rank": 2,
          "machineSelections": [
            {
              "machineType": "c2-standard-4",
              "allocatedSize": 20
            }
          ]
        },
        "rank3-n2d": {
          "rank": 3,
          "machineSelections": [
            {
              "machineType": "n2d-standard-4",
              "allocatedSize": 60
            }
          ]
        }
      },
      "zonalDistribution": {
        "us-central1-a": {
          "allocatedSize": 0
        },
        "us-central1-b": {
          "allocatedSize": 40
        },
        "us-central1-c": {
          "allocatedSize": 40
        }
      }
    },
    "message": "Increasing MIG target size from 0 to 100 instances (+100).
    Allocated 80 of 100 new instances. Allocated instances across instance
    selections: rank2-c2 (rank 2; c2-standard-4: 20); rank3-n2d (rank 3;
    n2d-standard-4: 60). Allocated instances across zones based on target
    distribution shape BALANCED: us-central1-a: 0, us-central1-b: 40,
    us-central1-c: 40. MIG continues to allocate the remaining 20 new instances
    across all instance selections and zones. The final distribution across zones
    and machine types may differ as instances are created. View the group's
    instances for the current distribution."
  }
}

次の表に、ログエントリの各フィールドの説明を示します。

フィールド 説明
details.data.oldSize サイズ変更オペレーション前のリージョン MIG のターゲット サイズ。
details.data.newSize リージョン MIG のリクエストされたターゲット サイズ。
details.data.deltaSize ターゲット サイズの変更(newSize - oldSize)。
details.data.targetShape リージョン MIG のターゲット分配形態。
details.data.activeSeekDeltaSize MIG が構成済みのインスタンス選択とゾーン全体で容量をまだ探している新しいインスタンスの数。値が 0 の場合、このフィールドは省略されます。
details.data.instanceSelections

割り当て時に評価された、構成済みのインスタンスの選択。このフィールドは、インスタンスの柔軟性を使用する MIG にのみ存在します。各キーはインスタンス選択の名前で、その値には次のフィールドが含まれます。

  • rank: インスタンス選択に構成された優先度ランク。
  • machineSelections: 選択範囲内のマシンタイプの割り当てのリスト。各エントリには、マシンタイプ(machineType)と、そのマシンタイプを使用して割り当てられたコンピューティング インスタンスの数(allocatedSize)を指定します。
details.data.zonalDistribution 構成されたゾーンと、割り当てられたインスタンスの分布。各キーはゾーン名で、その値にはそのゾーンに割り当てられたコンピューティング インスタンスの数(allocatedSize)が含まれます。
details.message 割り当てられた数やシーク容量の詳細など、インスタンスの分散を説明する概要メッセージ。

インスタンス分散ログを解釈する

インスタンス配布ログには、コンピューティング インスタンスの作成に関する MIG の計画のスナップショットが記録されます。ログには、MIG がコンピューティング インスタンスを正常に作成する前に割り当てることが示されているため、ログデータとコンピューティング インスタンスのステータスおよびエラー メッセージを組み合わせて、MIG の実際の動作を把握する必要があります。

次の表を使用して、一般的なログ出力を解釈し、対応が必要かどうかを判断します。

ログ出力 説明 推奨される対処方法
activeSeekDeltaSize が 0 より大きい MIG は、サイズ変更リクエスト全体をすぐに処理するのに十分な容量を見つけることができませんでした。MIG は、構成されたすべてのオプションで残りのインスタンスの作成を試行し続けます。 MIG のインスタンス エラーを確認して、インスタンスの作成に失敗した理由を確認します。他のマシン ファミリーのマシンタイプの追加、ゾーンの追加、割り当ての確認を検討してください。
優先度の高い(ランク番号が小さい)選択の allocatedSize は 0 です。 決定時に、MIG は最も優先度の高いマシンタイプを確認しましたが、十分な容量が見つかりませんでした。代わりに、MIG は優先度の低い(ランク番号が大きい)選択を使用しました。Compute Engine は、スキップされた選択のインスタンス エラーをログに記録しません。 MIG が最も優先度の高い選択を頻繁にスキップする場合は、最も優先度の高い選択にマシンタイプを追加するか、優先度の低いオプションを受け入れることを検討してください。
構成されたゾーンの allocatedSize が 0 である MIG はこのゾーンに新しいインスタンスを割り当てませんでした。 ターゲット形態が ANY または ANY_SINGLE_ZONE の場合、この不均一な分散は正常です。それ以外の場合は、インスタンス テンプレートの割り当て、予約、ゾーンのサポートを確認します。
message の概要にマシンタイプがありません MIG は、そのマシンタイプを割り当てに使用しませんでした。 構造化された details.data ブロックを確認します。概要メッセージでは、0 個の新しいインスタンスを取得した選択項目とマシンタイプは省略されますが、構造化データには評価されたすべてのオプションが一覧表示されます。

保留中のインスタンス割り当てを確認する

MIG がまだ容量(activeSeekDeltaSize > 0)を待機している場合は、次の点を確認して、割り当てが保留されている理由を把握できます。

  • インスタンス作成エラーを確認する。MIG が容量を割り当てた後にインスタンスの作成が失敗したかどうか、またはコンピューティング インスタンスが容量を待機しているかどうかを確認するには、インスタンスのエラーを確認します。詳細については、インスタンス エラーを一覧表示するをご覧ください。

  • インスタンスのステータスを確認する。各インスタンスのステータスと現在のアクションを確認するには、MIG 内のインスタンスを一覧表示し、instanceStatus フィールドを確認します。詳細については、マネージド インスタンスのステータスを確認するをご覧ください。

  • 設定を確認します。MIG でインスタンスの柔軟性ポリシーを構成している場合は、ポリシー内のマシン ファミリーのリージョン割り当てを確認します。また、選択したゾーンがリクエストされたマシンタイプをサポートしていることを確認します。詳細については、割り当ての表示と管理と使用可能なリージョンとゾーンをご覧ください。

ログに基づいてアラート ポリシーを作成する

MIG のサイズ変更オペレーションが容量を待機しているときに通知を受け取るには、ログ エクスプローラでログベースのアラート ポリシーを作成します。たとえば、activeSeekDeltaSize が 0 より大きい場合にアラートをトリガーできます。

このアラートを作成する手順は次のとおりです。

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. 次のクエリを入力します。

    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event"
    protoPayload.methodName="compute.instanceGroupManagers.instanceDistribution"
    protoPayload.metadata.details.data.activeSeekDeltaSize > 0
    

    PROJECT_ID は、プロジェクトの ID に置き換えます。

  3. [クエリを実行] をクリックしてクエリを検証します。

  4. Cloud Logging ドキュメントのログベースのアラート ポリシーを作成するセクションの手順に沿って、アラート ポリシーを作成します。

次のステップ