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

自動スケーリングを有効にすると、指定されたオプションに基づいてオートスケーラーがスケーリングに関する判断を下します。スケーリングに関するそれぞれの判断は Cloud Logging によって記録されます。オートスケーラーによって行われるスケーリングに関する判断について理解を深めるには、ログビューアのログをお読みください。

ログビューアを使用すると、以下に関連するイベントを表示できます。

  • インスタンス グループのサイズ変更。オートスケーラーがインスタンス グループのサイズを変更すると、そのサイズ変更がオートスケーラー ログに記述されます。
  • オートスケーラーのステータスの変更。たとえば、オートスケーラーが期待どおりに動作しているのに問題が発生した場合、ステータスの変更がオートスケーラー ログに記述されます。一般的なステータス メッセージの一部は、よく返されるステータス メッセージのセクションで説明されています。

始める前に

  • 自動スケーリングのドキュメントを読みます。
  • ログを表示する対象となるアクティブなオートスケーラーを用意します。
  • ログビューアの使用方法を確認します。

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

オートスケーラー ログを表示するには、Google Cloud Consolegcloud コマンドライン ツール、または Cloud Logging API を使用します。

Console

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

  1. [ログビューア] ページに移動します。

    [ログビューア] ページに移動

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

gcloud

gcloud ツールを使用してベータ版 logging read コマンドを実行し、自動スケーリングに関連するすべてのログ(アクティビティおよび監査ログなど)を検索します。例:

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

オートスケーラーのサイズ変更アクションに関連するログだけにエントリを制限する場合は、logName パラメータを指定し、フィールド jsonPayload.newSize でフィルタを適用します。logName を以下のものに設定します。

`projects/[PROJECT_ID]/logs/compute.googleapis.com%2Fautoscaler`

例:

gcloud beta logging read 'logName="projects/[PROJECT_ID]/logs/compute.googleapis.com%2Fautoscaler" AND jsonPayload.newSize:*' \
    --limit 10 --format json

オートスケーラーのステータスの変更の場合は、logName パラメータを指定し、フィールド jsonPayload.new_status によってフィルタを適用します。logName を以下のものに設定します。

`projects/[PROJECT_ID]/logs/compute.googleapis.com%2Fautoscaler`

例:

gcloud beta logging read 'logName="projects/[PROJECT_ID]/logs/compute.googleapis.com%2Fautoscaler" AND jsonPayload.new_status:*' \
    --limit 10 --format json

API

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

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

{
  "filter": "logName=\"projects\/[PROJECT_ID]\/logs\/compute.googleapis.com%2Fautoscaler\" AND jsonPayload.new_size:*",
  "pageSize": 10,
  "resourceNames": [
    "projects\/[PROJECT_ID]"
  ]
}

ステータス変更のリストを取得するリクエストは次のように発行します。

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

{
  "filter": "logName=\"projects\/[PROJECT_ID]\/logs\/compute.googleapis.com%2Fautoscaler\" AND jsonPayload.new_status:*",
  "pageSize": 10,
  "resourceNames": [
    "projects\/[PROJECT_ID]"
  ]
}

サイズ変更ログ

サイズ変更アクションに関連するログには、インスタンス グループの変更前のサイズと新しいサイズに関する情報が記述されます。このログエントリは、JSON ペイロードに次のフィールドが存在することで識別できます。

jsonPayload.new_size
jsonPayload.old_size

たとえば、次のエントリでは、サイズ 8 の古いインスタンス グループからサイズ 10 の新しいインスタンス グループへ変更されたことがログに記録されています。

{
"insertId": "1l68z7sg4jw7kzo",
"jsonPayload": {
  "autoscaler_name": "example-autoscaler",
  "instance_group_name": "example-igm",
  "new_size": 10,
  "old_size": 8,
  "project_id": "myproject",
  "zone_name": "europe-west1-b"
},
"logName": "projects/myproject/logs/compute.googleapis.com%2Fautoscaler",
"receiveTimestamp": "2017-10-24T16:12:08.294439822Z",
"resource": {
  "labels": {
    "autoscaler_id": "1234567890123456789",
    "location": "europe-west1-b",
    "project_id": "myproject"
  },
  "type": "gce_autoscaler"
},
"severity": "INFO",
"timestamp": "2017-10-24T16:12:07.715125478Z"
}

ログの各フィールドの説明は次のとおりです。

プロパティ
insertId ログエントリの一意の識別子。
jsonPayload ログエントリのペイロードを表す構造体を JSON オブジェクトで記述したもの。
new_size 自動スケーリングによるこのグループの新しいサイズ。グループがスケールアップされた場合、新しいサイズは古いサイズより大きくなります。スケールダウンされた場合、新しいサイズは古いサイズより小さくなります。
old_size このグループの変更前の古いサイズ。
instance_group_name このログエントリの適用対象のマネージド インスタンス グループの名前。
project_id インスタンス グループのプロジェクト ID。これは常に現在のプロジェクトの ID でなければなりません。
autoscaler_name このアクションを担当するオートスケーラーの名前。
zone_name オートスケーラーとインスタンス グループのゾーン。
resource オートスケーラーの詳細。
type リソースのタイプ。オートスケーラーの場合、このフィールドは常に gce_autoscaler になります。
labels オートスケーラーに関するメタデータ。
location オートスケーラーのゾーン。
autoscaler_id サーバーが生成した数値のオートスケーラー ID。
project_id オートスケーラーが属するプロジェクト ID
timestamp ログエントリが表すイベントの発生日時。RFC 3339 UTC Zulu 形式のタイムスタンプ(精度はナノ秒)です。
severity このログの重大度。オートスケーラー ログの場合、これは常に "INFO" になります。
logName このログエントリが属するログのリソース名。オートスケーラー サイズ変更ログの場合、これは常に projects/[PROJECT_ID]/logs/compute.googleapis.com%2Fautoscaler になります。
receiveTimestamp Cloud Logging がログエントリを受信した時刻。RFC 3339 UTC Zulu 形式のタイムスタンプ(精度はナノ秒)です。

ステータス変更ログ

オートスケーラーのステータスが変わると、Compute Engine はステータス変更をキャプチャするログエントリを作成します。このログエントリは、JSON ペイロードに次のフィールドが存在することで識別できます。

jsonPayload.old_status
jsonPayload.new_status

たとえば、次のエントリは、OK から新しいステータスへのステータス変更について記述しています。

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

このステータス メッセージは、オートスケーラーが予期したとおりに動作しない理由を調べたり、過去に発生していた問題をデバッグしたりするために使用できます。この場合、新しいステータス メッセージが表示されるので、負荷分散の構成が正しく設定されているかを確認できます。

{
"insertId": "ivho6kg4icqfio",
"jsonPayload": {
  "autoscaler_name": "example-autoscaler",
  "instance_group_name": "example-igm",
  "new_status": {
    "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."
  },
  "old_status": {
    "details": "OK"
  },
  "project_id": "myproject",
  "zone_name": "us-east1-b"
},
"logName": "projects/myproject/logs/compute.googleapis.com%2Fautoscaler",
"receiveTimestamp": "2017-10-24T15:11:58.076196762Z",
"resource": {
  "labels": {
    "autoscaler_id": "1234567890123456789",
    "location": "us-east1-b",
    "project_id": "myproject"
  },
  "type": "gce_autoscaler"
},
"severity": "INFO",
"timestamp": "2017-10-24T15:11:57.619997893Z"
}

ログの各フィールドの説明は次のとおりです。

プロパティ
insertId ログエントリの一意の識別子。
jsonPayload ログエントリのペイロードを表す構造体を JSON オブジェクトで記述したもの。
new_status オートスケーラーの新しいステータス。よく返されるステータス メッセージを参照。
old_status 変更前の古いオートスケーラー ステータス。
instance_group_name このログエントリの適用対象のマネージド インスタンス グループの名前。
project_id インスタンス グループのプロジェクト ID
autoscaler_name このアクションを担当するオートスケーラーの名前。
zone_name オートスケーラーとインスタンス グループのゾーン。
resource オートスケーラーの詳細。
type リソースのタイプ。オートスケーラーの場合、このフィールドは常に gce_autoscaler になります。
labels オートスケーラーに関するメタデータ。
location オートスケーラーのゾーン。
autoscaler_id サーバーが生成した数値のオートスケーラー ID。
project_id オートスケーラーが属するプロジェクト ID。常に現在のプロジェクトになります。
timestamp ログエントリが表すイベントの発生日時。RFC 3339 UTC Zulu 形式のタイムスタンプ(精度はナノ秒)です。
severity このログの重大度。オートスケーラー ログの場合、これは常に "INFO" になります。
logName このログエントリが属するログのリソース名。ステータス変更ログの場合、これは常に projects/[PROJECT_ID]/logs/compute.googleapis.com%2Fautoscaler になります。
receiveTimestamp Cloud Logging がログエントリを受信した時刻。RFC 3339 UTC Zulu 形式のタイムスタンプ(精度はナノ秒)です。

次のステップ