自動スケーリングを有効にすると、指定されたオプションに基づいてオートスケーラーがスケーリングに関する決定を下します。スケーリングに関するそれぞれの決定は Stackdriver Logging によって記録されます。オートスケーラーによって行われるスケーリングに関する決定について理解を深めるには、ログビューアのログをお読みください。
ログビューアを使用すると、以下に関連するイベントを表示できます。
- インスタンス グループのサイズ変更。オートスケーラーがインスタンス グループのサイズを変更すると、そのサイズ変更がオートスケーラー ログに記述されます。
- オートスケーラーのステータスの変更。たとえば、オートスケーラーが期待どおりに動作しているのに問題が発生した場合、ステータスの変更がオートスケーラー ログに記述されます。一般的なステータス メッセージの一部は、よく返されるステータス メッセージのセクションで説明されています。
始める前に
オートスケーラー ログの表示
オートスケーラー ログを表示するには、Google Cloud Platform Console、gcloud
ツール、または Stackdriver Logging API を使用します。
Console
- ログビューアのページに移動します。
- リソース プルダウン メニューをプルダウンし、[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 |
Stackdriver 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 |
Stackdriver Logging がログエントリを受信した時刻。RFC 3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒。 |
次のステップ
- ログから受け取った情報を使用してオートスケーラーを更新する。
- オートスケーラーによる意思決定の方法について詳しく調べる。
- 自動スケーリングのオプションを確認する。