オートスケーラー ログの表示

自動スケーリングを有効にすると、指定されたオプションに基づいてオートスケーラーがスケーリングに関する判断を下します。スケーリングに関するそれぞれの判断は Cloud Logging によって記録されます。ログ エクスプローラでこれらのログを読み込み、オートスケーラーのスケーリングに関する決定について理解を深めます。

ログ エクスプローラを使用すると、以下に関連するイベントを表示できます。

  • マネージド インスタンス グループ(MIG)のサイズ変更に関するオートスケーラーの推奨。オートスケーラーが MIG の新しい推奨サイズを計算する場合、推奨サイズの変更はオートスケーラー ログに記述されます。ログエントリをサイズ変更するをご覧ください。
  • オートスケーラーのステータスの変更。たとえば、オートスケーラーが期待どおりに動作しているのに問題が発生した場合、ステータスの変更がオートスケーラー ログに記述されます。ステータス変更ログエントリをご覧ください。

始める前に

オートスケーラー ログの表示

オートスケーラー ログを表示するには、コンソール、gcloud CLI、または Cloud Logging API を使用します。

コンソール

自動スケーリングをオンにしている場合は、Google Cloud コンソールで自動スケーリングのログを表示できます。

  1. [ログ エクスプローラ] ページに移動します。

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

  2. リソース プルダウン メニューをプルダウンし、[オートスケーラー] を選択します。

次のように、MIG から [ログ エクスプローラ] ページに移動することもできます。

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

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

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

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

  4. [モニタリング] タブで、[ログ] パネルがページの下部にあります。このパネルの末尾にあるアイコンをクリックしてパネルを開きます。

  5. [ログ エクスプローラ] ページを開くには、このパネルの [ログ エクスプローラで表示する] アイコンをクリックします。デフォルトのクエリでログ エクスプローラが開き、MIG のすべてのオートスケーラー ログを取得します。

gcloud

自動スケーリングに関連するすべてのログを検索するには、logging read コマンドを使用します。次に例を示します。

gcloud logging read "resource.type=autoscaler" --limit 10 \
    --format json

特定の MIG のオートスケーラー ログを表示するには、次のように instance_group_manager_name を指定します。

gcloud logging read "resource.type=autoscaler AND \
    resource.labels.instance_group_manager_name=example-igm" \
    --limit 10 --format json

オートスケーラーのサイズ変更アクションに関連するログエントリを表示するには、compute.autoscalers.resize メソッド名を指定します。

gcloud logging read "resource.type=autoscaler AND \
    resource.labels.instance_group_manager_name=example-igm AND \
    protoPayload.methodName=compute.autoscalers.resize" \
    --limit 10 --format json

オートスケーラーのステータスの変更に関連するログエントリを表示するには、compute.autoscalers.changeStatus メソッド名を指定します。

gcloud logging read "resource.type=autoscaler AND \
    resource.labels.instance_group_manager_name=example-igm AND \
    protoPayload.methodName=compute.autoscalers.changeStatus" \
    --limit 10 --format json

API

Logging V2 API へのリクエストを発行します。リクエスト本文には、ログ検索で使用する filter パラメータと、ログ表示の対象となる project が含まれている必要があります。たとえば、特定の MIG のサイズ変更アクションのリストを取得するために次の要求を行います。

POST https://logging.googleapis.com/v2/entries:list

{
  "filter": "resource.type=autoscaler AND
    resource.labels.instance_group_manager_name=example-igm AND
    protoPayload.methodName=compute.autoscalers.resize",
  "pageSize": 10,
  "resourceNames": [
    "projects/example-project"
  ]
}

特定の MIG のステータス変更のリストを取得するために次の要求を行います。

POST https://logging.googleapis.com/v2/entries:list

{
  "filter": "resource.type=autoscaler AND
    resource.labels.instance_group_manager_name=example-igm AND
    protoPayload.methodName=compute.autoscalers.changeStatus",
  "pageSize": 10,
  "resourceNames": [
    "projects/example-project"
  ]
}

ログエントリのサイズ変更

オートスケーラーで MIG の推奨サイズが計算されると、Compute Engine では新しい推奨サイズと古い推奨サイズをキャプチャするログエントリが作成されます。ゾーン MIG の場合、ログエントリには推奨サイズの変更理由もキャプチャされます。

ゾーン MIG のログエントリの例を次に示します。この例では、予測自動スケーリングに基づいて、オートスケーラーが 3 VM を計算して 35% の CPU 使用率目標を実現しました。ただし、自動スケーリング ポリシーで構成されているインスタンスの最大数は 2 だけです。このため、オートスケーラーは推奨サイズを 2 に制限します。

    {
    insertId: "1l68z7sg4jw7kzo"
    logName: "projects/example-project/logs/cloudaudit.googleapis.com%2Fsystem_event"
    protoPayload: {
      @type: "type.googleapis.com/google.cloud.audit.AuditLog"
      metadata: {
        @type: "type.googleapis.com/autoscaler.AutoscalerSizeChangeExplanation"
        autoscalingMode: "ON"
        autoscalingReason: {
          scalingLimit: {
            limitPolicy: {
              maxNumReplicas: 2
            }
            limitSize: 2
            name: "MAX_INSTANCES"
          }
          scalingSignal: {
            calculatedSize: 3
            calculationDetails: {
              servingSize: 1
              signalTarget: 0.35
              signalValue: 1.03533
            }
            name: "PREDICTED_CPU_UTILIZATION"
            signalPolicy: {
              coolDownPeriodSec: 15
              cpuUtilization: {
                predictiveMethod: "OPTIMIZE_AVAILABILITY"
                utilizationTarget: 0.35
              }
            }
          }
          summary: "The autoscaler's recommended size changed from 1 to 2
          because the autoscaler predicted that in 15 seconds the average CPU
          utilization across 1 serving instance will be 103.533%, which is above
          the utilization target of 35%. The calculated size was 3 to achieve
          the target CPU utilization but the size was limited by the maximum
          number of instances set in the autoscaling policy."
        }
        newSize: 2
        oldSize: 1
      }
      methodName: "compute.autoscalers.resize"
      resourceName: "projects/example-project/zones/us-east1-d/autoscalers/example-autoscaler"
      serviceName: "compute.googleapis.com"
    }
    receiveTimestamp: "2022-06-13T22:34:43.045973046Z"
    resource: {
      labels: {
        autoscaler_id: "1234567890123456789"
        autoscaler_name: "example-autoscaler"
        instance_group_manager_id: "1357908642148074125"
        instance_group_manager_name: "example-igm"
        location: "us-east1-d"
        project_id: "example-project"
      }
      type: "autoscaler"
    }
    severity: "INFO"
    timestamp: "2022-06-13T22:34:42.810216614Z"
    }

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

プロパティ
autoscalingMode エントリが記録された時点の自動スケーリング モード。モードに関係なく、オートスケーラーは推奨サイズを計算します。これは、ログでは newSize で表されます。オートスケーラーは自動スケーリング モードに応じて、MIG を次のようにサイズ変更します。
  • ON: オートスケーラーは MIG のサイズを newSize に変更します。
  • OFF: オートスケーラーは MIG のサイズを変更しません。
  • ONLY_SCALE_OUT: オートスケーラーは、newSize が MIG のターゲット サイズより大きい場合にのみ MIG のサイズを変更します。
autoscalingReason 自動スケーリングの理由の詳細。このフィールドは、ゾーン MIG にのみ表示されます。
autoscalingReason.scalingLimit calculatedSize を制限した自動スケーリング機能の詳細。これは、自動スケーリング シグナルに基づいてオートスケーラーが計算したサイズです。calculatedSize を制限できる自動スケーリング機能は、スケールインの制御、または安定化期間であるインスタンスの最大数または最小数です。calculatedSize に適用される制限がない場合、scalingLimit フィールドはログに表示されません。
autoscalingReason.scalingLimit.limitPolicy calculatedSize を制限した自動スケーリング機能の構成。安定化は自動スケーリングのデフォルトの機能であるため、安定化が calculatedSize を制限する場合、limitPolicy フィールドは設定されません。
autoscalingReason.scalingLimit.limitSize calculatedSize を制限した自動スケーリング機能に基づく VM の数。
autoscalingReason.scalingLimit.name calculatedSize を制限した自動スケーリング機能の名前。
autoscalingReason.scalingSignal MIG に必要な VM 数の計算に使用される自動スケーリング シグナルの詳細。自動スケーリング ポリシーに複数のシグナルがある場合、オートスケーラーは、最大数の VM を必要とするシグナルを考慮します。
autoscalingReason.scalingSignal.calculatedSize MIG が持つ VM の数は、自動スケーリング シグナルに基づきます。scalingLimit が適用される場合、オートスケーラーは calculatedSizescalingLimit.limitSize に制限します。
autoscalingReason.scalingSignal.calculationDetails calculatedSize の決定に使用される詳細。
  • servingSize: クールダウン期間中でも存在する VM を除く MIG 内の VM の数。
  • signalTarget: オートスケーラーが CPU 使用率(リアルタイム)、予測 CPU 使用率、負荷分散使用率、または使用率のターゲットで構成された指標に対して維持するターゲット値。
  • singleInstanceAssignment: スケーリングが行われる作業量の合計を表す指標の値に基づいている場合、 singleInstanceAssignment は各 VM は処理できる作業量です。
  • signalValue: 自動スケーリング シグナルの値。signalTargetが設定されている場合、オートスケーラーはsignalValuesignalTargetと比較し、必要な VM の数を計算します。これは、calculatedSizeによって表されます。
autoscalingReason.scalingSignal.name ログ内の calculatedSize によって表され、オートスケーラーによって計算されたVM の数に基づく自動スケーリング シグナルの名前。
autoscalingReason.scalingSignal.signalPolicy オートスケーラーによって決定された calculatedSize に基づく自動スケーリング・シグナルの構成。
autoscalingReason.summary 自動スケーリングの理由の説明。
newSize MIG の現在の推奨サイズ。オートスケーラーは、autoscalingMode に応じて、次のように、MIG のサイズを newSize に変更します。
  • ON: オートスケーラーは MIG のサイズを newSize に変更します。
  • OFF: オートスケーラーは MIG のサイズを変更しません。
  • ONLY_SCALE_OUT: オートスケーラーは、newSize が MIG のターゲット サイズより大きい場合にのみ MIG のサイズを変更します。
oldSize MIG の以前の推奨サイズ。

ログエントリの他のフィールドについては、監査ログエントリの形式をご覧ください。

ステータス変更ログエントリ

オートスケーラーのステータスが変わると、Compute Engine は古いステータス メッセージと新しいステータス メッセージをキャプチャするログエントリを作成します。これらのステータス メッセージは、オートスケーラーが予期したとおりに動作しない理由を調べたり、過去に発生していた問題をデバッグしたりするために使用できます。一般的なステータス メッセージの一部については、よく返されるステータス メッセージをご覧ください。

protoPayload の次のフィールドでは、古いステータスと新しいステータスについて説明します。

  • metadata.newStatus.details: オートスケーラーの新しいステータス。
  • metadata.oldStatus.details: オートスケーラーの以前のステータス。

ステータスの変更を記述するログエントリの例を次に示します。この例では、新しいステータス メッセージが表示されるので、負荷分散の構成が正しく設定されているかを確認できます。

    {
      insertId: "ivho6kg4icqfio"
      logName: "projects/example-project/logs/cloudaudit.googleapis.com%2Fsystem_event"
      protoPayload: {
        metadata: {
          @type: "type.googleapis.com/autoscaler.AutoscalerStatusChange"
          newStatus: {
            details: "The autoscaler is configured to scale based on a load
            balancing signal but the instance group has not received any
            utilization data from the load balancer or the utilization is
            constantly 0. Check that the load balancing configuration is
            working"
          }
          oldStatus: {
            details: "OK"
          },
          methodName: "compute.autoscalers.changeStatus"
          resourceName: "projects/example-project/zones/us-east1-b/autoscalers/example-autoscaler"
          serviceName: "compute.googleapis.com"
        }
        receiveTimestamp: "2022-06-08T03:54:12.332329320Z"
        resource: {
          labels: {
            autoscaler_id: "1234567890123456789"
            autoscaler_name: "example-autoscaler"
            instance_group_manager_id: "1357908642148074125"
            instance_group_manager_name: "example-igm"
            location: "us-east1-b"
            project_id: "example-project"
          }
          type: "autoscaler"
        }
        severity: "INFO"
        timestamp: "2022-06-08T03:54:10.675416812Z"
      }
    }

ログエントリの他のフィールドについては、監査ログエントリの形式をご覧ください。

次のステップ