VM インスタンス グループのサイズ提案の Recommender は、Compute Engine 仮想マシンのマネージド インスタンスのリソース使用率を最適化するのに役立ちます。これらのレコメンデーションは、Cloud Monitoring サービスが過去 8 日間に集めたシステム指標または指標に基づいて自動的に生成されます。レコメンデーションに従って、グループのマシンタイプのサイズを変更して、VM リソースをより効率的に使用できます。
推奨サイズ提案は、サイズの適正化ともいいます。
詳細については、マネージド インスタンス グループの推奨サイズ提案の適用をご覧ください。
Recommender ID
VM インスタンス グループのサイズ提案の Recommender ID は次のとおりです。
google.compute.instanceGroupManager.MachineTypeRecommender
この ID は、gcloud
コマンドまたは REST と RPC API を使用して、レコメンデーションを表示および変更するときに使用します。
場所
Recommender の gcloud
コマンドと API では、表示または変更するレコメンデーションのロケーションを指定する必要があります。VM インスタンス グループの推奨サイズ提案の場合は、gcloud
と API インタラクションのロケーションとして Compute Engine のゾーンを使用してください。
権限
必要な権限
インスタンス グループの推奨サイズ提案を表示するには:
recommender.computeInstanceGroupManagerMachineTypeRecommendations.get
recommender.computeInstanceGroupManagerMachineTypeRecommendations.list
インスタンス グループの推奨サイズ提案の状態を変更するには:
recommender.computeInstanceGroupManagerMachineTypeRecommendations.update
権限の付与
これらの権限を付与するには、次のようにロールを割り当てます。
- レコメンデーションのみを表示するには、Compute Recommender の閲覧者(
roles/recommender.computeViewer
)のロールを付与します。 - レコメンデーションを表示および変更するには、Compute Recommender の管理者(
roles/recommender.computeAdmin
)のロールを付与します。 serviceusage.services.use
権限を付与するには、Service Usage ユーザーのロール(roles/serviceusage.serviceUsageConsumer
)を付与します。
別の方法として、次の基本ロールを付与することもできます。
- レコメンデーションだけを表示するには、閲覧者(
roles/viewer
)のロールを付与します。 - レコメンデーションを表示および変更するには、オーナー(
roles/owner
)または編集者(roles/editor
)のロールを付与します。- これらのロールには
serviceusage.services.use
権限も含まれます。
- これらのロールには
レコメンデーションのサブタイプ
この Recommender は、次のサブタイプをサポートしています。
CHANGE_MACHINE_TYPE
- 現在の使用量に基づいて、仮想マシン マネージド インスタンス グループの現在のマシンタイプの変更を推奨します。
オペレーション グループ
VM インスタンス グループのサイズ提案の Recommender によって生成される各レコメンデーションには、レコメンデーションを適用するために必要な一連のアクションを示すオペレーション グループがあります。
マネージド インスタンス グループ内の VM インスタンスの推奨サイズ提案
VM インスタンス グループの推奨サイズ提案には、2 つの OperationGroup
エンティティが含まれます。
最初のエンティティでは、compute.googleapis.com/InstanceTemplate
リソースに対する 3 つのオペレーションを指定します。
test
オペレーション。現在のマシンタイプがレコメンデーションが作成されたときと同じであることを確認します。例:{ "action": "test", "resourceType": "compute.googleapis.com/InstanceTemplate", "resource": "//compute.googleapis.com/projects/example-project/global/instanceTemplates/it-name", "path": "/properties/machineType" "value": "n1-standard-4" }
copy
オペレーション。新しいインスタンス テンプレート リソースを作成します。次に例を示します。{ "action": "copy", "resourceType": "compute.googleapis.com/InstanceTemplate", "sourceResource": "//compute.googleapis.com/projects/example-project/global/instanceTemplates/it-name", "resource": "//compute.googleapis.com/projects/p1/global/instanceTemplates/$new-it-name", "sourcePath": "/", "path": "/" }
ここで、$new-it-name は新しいインスタンス テンプレート名です。
replace
オペレーション。新しいインスタンス テンプレートでのマシンタイプを、推奨されたタイプに置き換えます。{ "action": "replace", "resourceType": "compute.googleapis.com/InstanceTemplate", "resource": "//compute.googleapis.com/projects/example-project/global/instanceTemplates/$new-it-name", "path": "/properties/machineType", "value" : "n1-standard-8" }
ここで、$new-it-name は新しいインスタンス テンプレート名です。
2 番目のエンティティでは、compute.googleapis.com/InstanceGroupManager
リソースに対して replace
オペレーションを指定します。このオペレーションによって、現在のインスタンス テンプレート it-name
が、推奨されたマシンタイプを使用する上記で指定した新しいテンプレートに置き換えられます。
{ "action" : "replace", "resourceType": "compute.googleapis.com/InstanceGroupManager", "resource": "//compute.googleapis.com/projects/example-project/zones/z1/instanceGroupManagers/instance-group", "path": "/versions/*/instanceTemplate", "pathValueMatchers": { "/versions/*/instanceTemplate": { "matchesPattern": ".*global/instanceTemplates/it-name" } } "value": "global/instanceTemplates/$new-it-name" }
ここで、$new-it-name は新しいインスタンス テンプレート名です。
例
次の例は、マネージド インスタンス グループの推奨サイズ提案を一覧表示する方法を示しています。
必要な環境変数を設定します。
PROJECT=TARGET_PROJECT_ID LOCATION=LOCATION_ID RECOMMENDER=google.compute.instanceGroupManager.MachineTypeRecommender
ここで
TARGET_PROJECT_ID は、推奨事項を一覧表示するプロジェクトです。現在のプロジェクトとは異なるプロジェクトを指定できます。
gcloud
コマンドには、プロジェクト ID を使用する必要があります。- API リクエストには、プロジェクト番号またはプロジェクト ID を使用できます。プロジェクト番号をおすすめします。
プロジェクト番号は、API コマンドと
gcloud
コマンドの両方のレスポンスで返されます。LOCATION_ID は、レコメンデーションに関連付けられたリソースがある Google Cloud ゾーン(
us-central1-a
など)です。
VM インスタンス グループの推奨サイズ提案を一覧表示します。
gcloud
次の情報を入力します。
gcloud recommender recommendations list \ --project=${PROJECT} \ --location=${LOCATION} \ --recommender=${RECOMMENDER} \ --format=json
REST
次の情報を入力します。
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: ${PROJECT}" \ "https://recommender.googleapis.com/v1/projects/${PROJECT}/locations/${LOCATION}/recommenders/${RECOMMENDER}/recommendations"
出力は次のようになります。
[ { "content": { "operationGroups": [ { "operations" : [ { "action": "test", "resourceType": "compute.googleapis.com/InstanceTemplate", "resource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/it-name", "path": "/properties/machineType" "value": "n1-standard-4" }, { "action": "copy", "resourceType": "compute.googleapis.com/InstanceTemplate", "sourceResource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/it-name", "resource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/$new-it-name", "sourcePath": "/", "path": "/" }, { "action": "replace", "resourceType": "compute.googleapis.com/InstanceTemplate", "resource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/$new-it-name", "path": "/name", "value" : "$new-it-name" }, { "action": "replace", "resourceType": "compute.googleapis.com/InstanceTemplate", "resource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/$new-it-name", "path": "/properties/machineType", "value" : "n1-standard-8" } ] }, { "operations" : [ { "action" : "replace", "resourceType": "compute.googleapis.com/InstanceGroupManager", "resource": "//compute.googleapis.com/projects/test-project/zones/us-west1-a/instanceGroupManagers/igm-name", "path": "/versions/*/instanceTemplate", "pathValueMatchers": { "/versions/*/instanceTemplate": { "matchesPattern" : ".*global/instanceTemplates/it-name" } } "value": "global/instanceTemplates/$new-it-name" } ] } ] }, "description" : "Improve performance by changing machine type from n1-standard-4 to n1-standard-8.", "etag": "\"eebe926c12f923da\"", "name": "projects/823742397239/locations/us-west1-a/recommenders/google.compute.instanceGroupManager.MachineTypeRecommender/recommendations/0fd31b24-cc05-4132-8431-ed54a22dd4f1", "lastRefreshTime": { "seconds": 1543912652 }, "primaryImpact": { "category": "PERFORMANCE" }, "additionalImpact": [ "category": "COST", "costProjection": { "cost": {"currencyCode": "USD", "units": 50}, "duration": { "seconds": 2592000 } } ], "stateInfo": { "state": "ACTIVE" }, "recommenderSubtype": "CHANGE_MACHINE_TYPE" } ]
Recommender の gcloud
コマンドと API を使用してレコメンデーションに関する追加タスクを実行する手順については、API の使用をご覧ください。