推奨事項

Recommender

Recommender は、Google Cloud プロダクトやリソースの最適化に関する推奨事項を提供する Google Cloud のサービスです。

各 Recommender には、サービスを識別する一意の Recommender ID があります。Recommender ID は、Recommender の gcloud コマンド、REST API、RPC API を使用して推奨事項を操作するときに使用します。

詳細については、Recommender をご覧ください。

推奨事項

推奨事項とは、機械が生成した提案のことで、クラウド リソースの使用を最適化することを目的としています。推奨事項に対処するために必要な手順を含みます。Recommender は、機械学習やヒューリスティックスを使用して、リソースの使用状況に基づいて推奨事項を提供します。Recommender は、Recommendation エンティティを使用して推奨事項を保存します。

推奨事項には次のコア属性があります。

名前

推奨事項の名前は、Recommendation エンティティの name フィールドに格納されます。推奨事項に対する名前で、次の形式を持ちます。

projects/TARGET_PROJECT_ID/locations/LOCATION/recommenders/RECOMMENDER_ID/recommendations/RECOMMENDATION_ID

ここで

  • TARGET_PROJECT_ID は、推奨事項が作成されたプロジェクトの ID です。
  • LOCATION は、推奨事項に関連付けられたリソースがある Google Cloud ロケーションglobal または us-central1-a)です。
  • RECOMMENDER_ID は、完全修飾された Recommender ID です(例: google.compute.instance.MachineTypeRecommender)。
  • RECOMMENDATION_ID は推奨事項の一意の ID です。

説明

推奨事項の説明は、Recommendation エンティティの description フィールドに格納されます。英語でのみ利用できます。これは、人が読めるテキストで、推奨事項を説明するものです。Google Cloud Console では、推奨事項の詳細を表示するためにクリックすると、その説明が表示されます。

Recommender のサブタイプ

Recommender は、特定の種類の推奨事項用のサブタイプを持つ場合があります。たとえば、Identity and Access Management のロール Recommender には、サブタイプ REPLACE_ROLEREMOVE_ROLE があります。時間の経過とともに、新しいサブタイプが既存の Recommender に導入される可能性があります。こちらの概要では、利用可能なすべての Recommender のリストを提示しています。利用可能な推奨事項のサブタイプの詳細については、Recommender のドキュメントをご覧ください。

Recommender の影響

影響により、推奨される対応の実施で得られるメリットが定量化されます。各推奨事項には、次の種類の影響があります。この影響は、推奨事項を適用した結果として生じる可能性のある成果を表しています。

  • メインの影響は必須であり、Recommendation エンティティの primaryImpact フィールドに格納されます。

  • サブの影響は省略可で、additionalImpact フィールドに格納されます。

メインの影響とサブの影響には、次の種類があります。

  • COST: 指定された推奨事項を適用した場合に節約(または発生)すると予想される金額。詳しくは、CostProjectioncost フィールドを参照してください。

  • PERFORMANCE: 推定されるパフォーマンスの向上または低下。一部のパフォーマンスに関する推奨事項では、追加コストが発生する場合があります(たとえば、過剰な VM に対する CPU またはメモリの割り当てを増やすことが推奨されている場合など)。

  • SECURITY: 推定されるセキュリティ ポスチャーの改善。詳しくは、SecurityProjectiondetails フィールドを参照してください。

  • MANAGEABILITY: 推定される手動作業の削減量。

  • SUSTAINABILITY: 推定される二酸化炭素排出の削減量。詳しくは、SustainabilityProjectioncarbon_footprint_kg_co2 フィールドと Carbon Footprint の報告方法を参照してください。

オペレーション

Operation は、提示された推奨事項の詳細な手順の 1 つとして実行される必要がある単一のアクションです。オペレーションは、次のような変更を表します。

  • Google Cloud リソースの JSON オブジェクト フィールドを、追加、削除、置換する。
  • Google Cloud リソースの JSON 配列フィールドを、追加、削除、置換する。JSON 配列要素は、パスのフィルタを定義することによって識別されます。
  • 新しい Google Cloud リソースを追加する。
  • Google Cloud リソースを削除する。
  • テスト オペレーションで、リソースの元の状態を示す。また、テスト オペレーションを使用して、推奨事項を適用する前にリソースの現在の状態を確認することもできます。
  • Google Cloud のリソースとフィールドをコピーして移動する。

Operation は、パッチの JSON パス(RFC 6902)形式を大まかに基にしています。Google Cloud では、一般的に見られる複雑なシナリオを含め、リソースの変更を反映する一貫性のある方法を提供するため、この RFC を選択しています。たとえば、IAM 推奨事項では、プリンシパルのロール バインディングの別ロールへの移行を反映するために、ネストされた配列が使用されます。

リソースごとに、次の方法で変更リスト(diff ベースの出力)を生成できます。

  • 元の状態: テスト オペレーションにより、フィールドの元の値が表されます。これは差分出力の左側に表示されます。
  • 推奨される状態: 非テスト オペレーションにより、フィールドごとの推奨される変更が表示されます。これは差分出力の右側に表示されます。

オペレーション グループ

オペレーション グループは、推奨事項を適用する際に特定の順序で実行する必要がある 1 つ以上のオペレーションのセットです。推奨事項には、オペレーション グループを 1 つ以上含めることができます。オペレーション グループは、Recommendation エンティティの operationGroups フィールドに格納されます。

たとえば、Compute Engine インスタンス グループの VM インスタンス マシンタイプの変更を提案する推奨事項には、2 つのオペレーション グループがあります。1 つはインスタンス テンプレートのマシンタイプを変更するグループで、もう 1 つは特定のインスタンス グループに変更を適用するグループです。

最初のオペレーション セットは、2 番目のセットを開始する前に完了しておく必要があるため、推奨事項では、2 つのインスタンス グループに分けて定義されます。

1 つのオペレーション グループには、1 つのテスト オペレーションを含めることができます。テスト オペレーションは、推奨事項がまだ有効であることの確認を行います。VM インスタンスのマシンタイプの変更を提案する推奨事項には、現在のマシンタイプが推奨事項の作成時と同じかどうかを確認するテスト オペレーションがあります。

状態

推奨事項では、提案された後、多くの状態遷移が発生します。推奨事項には、次の状態があります。

  • ACTIVE: 推奨事項は作成されているが、それに対するアクションが実行されていないことを意味します。推奨事項は、申請することにより適用できます。アクティブな推奨事項は、リソースが変更されると更新されます。
  • CLAIMED: 自身または別のプロセスで推奨事項を申請済みで、そのレスポンスが処理中であることを意味します。推奨事項が申請済みの場合、リソースが変更されても、Recommender は推奨事項を更新しません。
  • SUCCEEDED: 自身または別のプロセスにより、推奨事項が関連するリソースに適用されたことを意味します。
  • FAILED: 推奨事項を適用しようとして失敗したことを意味します。
  • DISMISSED: 自身または別のプロセスで、関連するリソースに適用されることなく、推奨事項が閉じられたことを意味します。この状態では、推奨事項のリストにその推奨事項が表示されなくなります。通常は、さまざまな理由でその推奨事項を無効にした管理者により適用されます。また、その推奨事項は、CLAIMED 状態に移行できなくなります。

推奨事項の状態に関する情報は、Recommendation エンティティの stateInfo フィールドに格納されます。その情報には、推奨事項の状態と、状態を補足する Recommender ごとのメタデータが含まれます。

推奨事項が CLAIMEDSUCCEEDED、または FAILED の状態に変更されると、推奨事項の内容は更新されません。また、推奨事項の有効期間は、状態の変更後 90 日間です。

etag

etag は、推奨事項の現在の状態を識別する一意のフィンガープリントです。推奨事項が変わるたびに、新しい etag 値が割り当てられます。この値は、Recommender エンティティの etag フィールドに格納されます。

gcloud コマンドや API 呼び出しを使用して Recommender から推奨事項を取得すると、後続のオペレーションでは、推奨事項 ID と etag の両方を使用してその推奨事項を参照できます。これにより、最後に取得してから推奨事項が変更されていない場合にのみ、オペレーションを実行できるようになります。

優先度

推奨事項の優先度は、最初にどのアクションを行うべきかを判断するのに役立ちます。このフィールドには、デフォルトの優先値として設定された P4P1P2P3P4 の値が含まれています。Recommender ごとに独自の優先度の戦略を定義できます。

状態のメタデータ

推奨事項の申請の際、または完了や失敗を記録する際には、状態メタデータと一緒にオペレーションに関する補足メタデータを含めることができます。

そのメタデータは、key:value ペアで指定します。次に例を示します。

{
  "stateMetadata": {
    "priority" : "high",
    "tracking_number": "12345" }
}

stateMetadata フィールドを更新すると、既存の状態メタデータが上書きされます。

最終更新時間

最終更新時間は、推奨事項が生成プロセスによって最後に更新された時刻を示します。推奨事項の内容には、最終更新時でのリソースの状態が反映されます。

Compute Engine の VM インスタンスに対するサイズ変更の推奨事項例を次に示します。

{
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "test",
            "path": "/machineType",
            "resource": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-rightsizing-2",
            "resourceType": "compute.googleapis.com/Instance",
            "valueMatcher": {
              "matchesPattern": ".*zones/us-central1-a/machineTypes/n1-standard-4"
            }
          },
          {
            "action": "replace",
            "path": "/machineType",
            "resource": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-rightsizing-2",
            "resourceType": "compute.googleapis.com/Instance",
            "value": "zones/us-central1-a/machineTypes/custom-2-5120"
          }
        ]
      }
    ]
  },
  "description": "Save cost by changing machine type from n1-standard-4 to custom-2-5120.",
  "etag": "\"923daeebe926c12f\"",
  "recommenderSubtype": "CHANGE_MACHINE_TYPE",
  "lastRefreshTime": "2019-06-13T06:44:58Z",
  "name": "projects/32428390823/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/a523ff7e-ed03-4143-a3a5-5b396b99cba9",
  "primaryImpact": {
    "category": "COST",
    "costProjection": {
      "cost": {
        "currencyCode": "USD",
        "units": "-73"
      },
      "duration": "2592000s"
    }
  },
  "stateInfo": {
    "state": "ACTIVE"
  }
}

推奨事項の他の例については、Recommender で個別の Recommender のドキュメントをご覧ください。

インサイトのリファレンス

関連するインサイトのリファレンス。推奨事項は、リファレンスによって関連するインサイト(ある場合)と関連付けられます。

構成

Recommender 構成により、次のことが可能になります。

  • 分析情報と推奨事項の生成方法をカスタマイズできます。これは、これらの分析情報と推奨事項の生成に使用される構成パラメータの一部を変更することで行われます。
  • 各 Recommender の構成は、各パラメータのいくつかのデフォルト値で始めます。各パラメータには、構成のカスタマイズに使用できるさまざまな値があります。
  • 最後に変更した構成が有効な構成です。構成を変更するたびに、構成が反映されるまでに最長 48 時間かかります。

Recommender 構成の例として、デフォルトの CPU しきい値またはモニタリング期間を設定し、ワークロード、アプリケーション、インフラストラクチャのニーズにより適した推奨事項を作成するということがあります。

構成 API を使用すると、Recommender または分析情報のタイプの構成を取得できます。1 つのプロジェクトの構成パラメータを更新できます。各 Recommender の構成または分析情報のタイプには、構成パラメータを表示および変更するための特定の権限が必要です。

アイドル状態の VM Recommender の構成パラメータを含むレスポンスの例を次に示します。

{
  "name": "projects/project-number/locations/global/recommenders/google.iam.policy.Recommender/config",
  "recommenderGenerationConfig": {
    "params": {
      "minimum_observation_period": "P90D",
    }
  },
  "etag": "\"2f3c9b65cda6a4ba\"",
  "updateTime": "2020-11-03T04:41:15.330351Z"
}