オートスケーラー ログを表示する


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

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

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

始める前に

  • 自動スケーリングのドキュメントを読みます。
  • ログを表示する対象となるアクティブなオートスケーラーを用意します。
  • ログ エクスプローラの使用方法を確認します。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

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

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

コンソール

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

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

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

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

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

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

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

  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

REST

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 を計算して CPU 使用率の目標の 35% を達成しています。ただし、自動スケーリング ポリシーで構成されるインスタンスの最大数は 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"
      }
    }

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

次のステップ