创建和运行评估

您可以使用 Workload Manager 创建和运行自动化评估,根据业界标准和 Google Cloud 最佳实践扫描您的工作负载。定期运行评估可让您尽早发现各个项目中的配置偏移和架构风险,从而帮助您提高工作负载的可靠性、安全性和性能。

您可以使用 Google Cloud 控制台或 Workload Manager API 创建和运行工作负载评估。如需了解评估工作原理的概念信息,请参阅 Workload Manager 评估简介。

限制

Workload Manager 支持每个项目每小时最多同时运行 25 项评估。如果一个项目有超过 25 个评估,请将每小时评估次数限制为 25 次,或将评估时间表设置为每 6 小时或更低频率运行一次。

准备工作

在创建和运行工作负载评估之前,请先满足以下前提条件:

  1. 验证您要评估的 Google Cloud 资源是否已在目标项目中创建。如需查看支持的资源和规则列表,请参阅 Google Cloud 最佳实践参考。

  2. 在您创建和运行评估的 Google Cloud 使用方项目中启用所需的 API:

  3. 如果您要评估应用或数据库工作负载,请验证您是否已在运行工作负载的所有计算实例或集群上设置了所需的代理或 Operator:

  4. 可选:如果您想在内置 Google Cloud 最佳实践之外添加自定义规则,请将 GoogleCloudPlatform/workload-manager GitHub 代码库中的示例规则上传到 Cloud Storage 存储桶,该存储桶的顶层包含 /lib 和 /rules 文件夹。如需详细了解如何上传自定义规则,请参阅使用 Rego 编写自定义规则。

  5. 如需创建和运行评估,请验证您是否拥有所需的角色和权限。

  6. 如果您使用 Workload Manager API 创建评估,请在消费者项目中手动创建 Workload Manager 服务代理,并为其授予以下角色:

    • 目标项目中的 Workload Manager Service Agent (roles/workloadmanager.serviceAgent)。

    • 如果您设置了评估时间表,则为使用方项目中的 Workload Manager Worker (roles/workloadmanager.worker)。

    当您使用 Google Cloud 控制台时,Workload Manager 会自动创建服务代理。如需详细了解如何配置服务代理,请参阅 Workload Manager 服务代理。

所需的角色

如需获得创建和运行工作负载评估所需的权限,请让管理员向您授予以下 IAM 角色:

  • 创建和运行评估:使用方项目的 Workload Manager Evaluation Administrator (roles/workloadmanager.evaluationAdmin)
  • 创建服务代理(仅限首次评估):使用方项目和目标项目的 Project IAM Admin (roles/resourcemanager.projectIamAdmin)
  • 读取 Cloud Asset Inventory 数据(自定义规则和最佳实践):针对使用方项目的 Cloud Asset Owner (roles/cloudasset.owner)
  • 从 Cloud Storage 存储桶读取自定义规则(可选):使用方项目上的 Storage Object Viewer (roles/storage.objectViewer) 角色
  • 创建提醒通知(可选):使用方项目的 Monitoring Metric Writer (roles/monitoring.metricWriter)
  • 将评估结果导出到 BigQuery(可选):使用方项目的 BigQuery Admin (roles/bigquery.admin) 角色

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

这些预定义角色包含创建和运行工作负载评估所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需创建和运行工作负载评估,您需要具备以下权限:

  • 创建和运行评估:
    • 针对使用方项目的 workloadmanager.evaluations.create
    • 针对使用方项目的 workloadmanager.evaluations.run
  • 创建服务代理(仅限首次评估):使用方和目标项目上的 resourcemanager.projects.setIamPolicy
  • 读取 Cloud Asset Inventory 数据(自定义规则和最佳实践):针对使用方项目的 cloudasset.assets.searchAllResources
  • 从 Cloud Storage 存储桶读取自定义规则(可选):
    • 针对使用方项目的 storage.objects.get
    • 针对使用方项目的 storage.objects.list
  • 创建提醒通知(可选):使用方项目的 monitoring.timeSeries.create 权限
  • 将评估结果导出到 BigQuery(可选):
    • 针对使用方项目的 bigquery.datasets.get
    • 针对使用方项目的 bigquery.tables.create
    • 针对使用方项目的 bigquery.tables.updateData

您也可以使用自定义角色或其他预定义角色来获取这些权限。

如需详细了解使用方项目和目标项目中的角色,请参阅使用方项目和目标项目中用于评估的 IAM 角色以及 Workload Manager IAM 角色和权限。

创建工作负载评估

您可以使用 Google Cloud 控制台或 Workload Manager API 创建工作负载评估。如需创建使用自定义规则的评估,请参阅使用自定义规则评估工作负载。

控制台

如需在 Google Cloud 控制台中创建工作负载评估,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Workload Manager 页面。

    前往 Workload Manager

  2. 选择要存储和运行评估的 Google Cloud 使用方项目。

  3. 如果系统提示您为 Workload Manager 启用所需的 API,请点击启用。

  4. 点击新建评估。

  5. 在名称和规则窗格中,配置评估详细信息并选择要评估的规则:

    1. 在评估名称部分,为工作负载评估输入一个名称。

    2. 可选:对于说明,输入工作负载评估的说明。

    3. 在工作负载类型字段中,选择以下受支持的工作负载类型之一:

      • SAP

      • SQL Server

      • MySQL

      • Redis

      • OpenShift

      • 自定义

      选择自定义后,您可以根据 Google Cloud 最佳实践或存储在 Cloud Storage 中的自定义规则来评估工作负载。

    4. 从规则表中,选择要包含在工作负载评估中的最佳实践规则。如需详细了解每条规则,请参阅 Google Cloud 最佳实践参考。

  6. 点击继续。

  7. 在范围和过滤条件窗格中,指定评估的目标项目和资源过滤条件:

    1. 在评估范围部分中,如需添加包含要评估的资源的目标项目,请点击浏览项目。

    2. 可选:如需在目标项目之间共享规则发现结果,请选中共享发现结果复选框。如需了解详情,请参阅分享评估结果。

    3. 可选:在将过滤条件应用于资源部分中,如需从目标项目中选择特定资源,请点击添加过滤条件,然后使用以下任一过滤条件类型:

      • 服务账号:按 Compute Engine 实例关联的服务账号过滤实例。

      • 标签:按键值标签对过滤资源。

      • 名称:按资源 ID 模式过滤资源。

      同一过滤条件类型中的多个过滤条件使用 OR 逻辑。不同过滤条件类型中的过滤条件使用 AND 逻辑。

    4. 如果系统提示,请选择您希望 Workload Manager 存储评估数据的区域。

  8. 点击继续。

  9. 在频率和通知窗格中,配置评估时间表、导出目标位置和提醒通知:

    1. 在时间安排部分中,选择您希望以何频率运行评估。

    2. 可选:如需将评估结果导出到与评估位于同一区域的区域级 BigQuery 数据集,请选择保存到 BigQuery 数据集,然后指定数据集。如需为评估创建单独的表,请选择为此评估创建新的结果表。

    3. 可选:在通知部分,选择您希望接收其提醒通知的事件,然后选择通知渠道。

  10. 点击继续。

  11. 在查看窗格中,查看工作负载评估设置。如需修改任何设置,请点击左侧导航栏中的窗格名称。

  12. 点击创建。

REST

如需使用 Workload Manager API 创建工作负载评估,请按以下步骤操作:

  1. 可选:如需检索工作负载类型的可用规则名称列表,请向 projects.locations.rules.list 方法发送 GET 请求:

    curl -X GET \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "X-Goog-User-Project: CONSUMER_PROJECT_ID" \
        "https://workloadmanager.googleapis.com/v1/projects/CONSUMER_PROJECT_ID/locations/LOCATION_ID/rules?evaluationType=EVALUATION_TYPE"
    

    替换以下内容:

  2. 如需创建评估,请向 projects.locations.evaluations.create 方法发送 POST 请求:

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        -H "X-Goog-User-Project: CONSUMER_PROJECT_ID" \
        -d '{
          "description": "DESCRIPTION",
          "evaluationType": "EVALUATION_TYPE",
          "ruleNames": [
            "RULE_NAMES"
          ],
          "resourceFilter": {
            "scopes": [
              "projects/TARGET_PROJECT_ID"
            ],
            "resourceIdPatterns": [
              "RESOURCE_ID_PATTERNS"
            ],
            "inclusionLabels": {
              "LABEL_KEY": "LABEL_VALUE"
            },
            "gceInstanceFilter": {
              "serviceAccounts": [
                "SERVICE_ACCOUNT_EMAIL"
              ]
            }
          },
          "schedule": "SCHEDULE",
          "bigQueryDestination": {
            "destinationDataset": "projects/BQ_PROJECT_ID/datasets/BQ_DATASET_ID",
            "createNewResultsTable": true
          }
        }' \
        "https://workloadmanager.googleapis.com/v1/projects/CONSUMER_PROJECT_ID/locations/LOCATION_ID/evaluations?evaluationId=EVALUATION_ID"
    

    替换以下内容:

    • CONSUMER_PROJECT_ID:您在其中创建评估的使用方项目的 ID

    • LOCATION_ID:Workload Manager 存储评估的受支持区域,例如 us-central1

    • EVALUATION_ID:评估的唯一 ID

    • DESCRIPTION:评估的说明

    • EVALUATION_TYPE:工作负载评估类型,例如 SAP、SQL_SERVER、MYSQL、REDIS、OPENSHIFT 或 OTHER

    • RULE_NAMES:要包含在评估中的规则 ID 的英文逗号分隔列表

    • TARGET_PROJECT_ID:目标项目的项目 ID 或项目编号,该项目包含要评估的资源

    • RESOURCE_ID_PATTERNS:用于过滤已评估资源的可选资源名称模式,例如 //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance*

    • LABEL_KEY 和 LABEL_VALUE:用于过滤资源的可选键值对标签

    • SERVICE_ACCOUNT_EMAIL:用于过滤 Compute Engine 实例的可选服务账号电子邮件地址

    • SCHEDULE:可选的 cron 表达式(采用世界协调时间 [UTC]),用于定期运行评估,例如 0 */6 * * * 表示每 6 小时运行一次

    • BQ_PROJECT_ID 和 BQ_DATASET_ID:可选的项目 ID 和区域 BigQuery 数据集 ID,用于导出评估结果

    如需详细了解支持的字段,请参阅 Evaluation 资源参考文档。

运行工作负载评估

除了按周期性时间表运行评估之外,您还可以随时使用 Google Cloud 控制台或 Workload Manager API 按需运行现有工作负载评估。

控制台

如需在 Google Cloud 控制台中运行工作负载评估,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Workload Manager 页面。

    前往 Workload Manager

  2. 点击要运行的评估的名称。

  3. 在评估信息页面上,点击运行。

    工作负载评估需要几分钟才能完成。在查看最新结果之前,请等待评估运行完成。

REST

如需使用 Workload Manager API 运行工作负载评估,请向 projects.locations.evaluations.executions.run 方法发送 POST 请求:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -H "X-Goog-User-Project: CONSUMER_PROJECT_ID" \
    -d '{
      "executionId": "EXECUTION_ID"
    }' \
    "https://workloadmanager.googleapis.com/v1/projects/CONSUMER_PROJECT_ID/locations/LOCATION_ID/evaluations/EVALUATION_ID/executions:run"

替换以下内容:

  • CONSUMER_PROJECT_ID:存储评估的使用方项目的 ID。

  • LOCATION_ID:评估所在的区域,例如 us-central1。

  • EVALUATION_ID:您要运行的评估的 ID。

  • EXECUTION_ID:此执行运行的可选唯一 ID。如需让 Workload Manager 自动生成 ID,请省略此字段。

该请求会返回一个长时间运行的 Operation。如需检查执行状态或列出执行结果,请使用 projects.locations.evaluations.executions.get 和 projects.locations.evaluations.executions.results.list 方法。

分享评估结果

通过共享评估结果,目标项目中的资源所有者可以在其本地项目控制台和集成页面(例如 Compute Engine)上查看配置结果。此功能不需要对使用方项目拥有直接 IAM 访问权限。

修改评估以分享发现结果

如需为现有评估启用或停用发现结果共享,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Workload Manager 页面。

    前往 Workload Manager

  2. 点击您要修改的评估的名称。

  3. 点击修改。

  4. 在范围和过滤条件部分中,选中或取消选中共享发现结果复选框。

  5. 点击保存。

共享发现结果的公开范围

启用共享发现结果后,Workload Manager 会将规则发现结果传播到评估范围中指定的所有目标项目。您可以在规则发现结果标签页和集成页面(例如 Compute Engine 概览页面)中查看发现结果。

停用分享发现结果后,Workload Manager 会停止将规则发现结果传播到目标项目,并且这些发现结果仅在使用方项目中可见。

为评估设置提醒通知

您可以配置提醒通知,以便在发生特定评估事件(例如评估检测到新发现结果或未能运行)时,Workload Manager 会通知您选择的通知渠道。如果您在创建评估时未配置提醒通知,则可以按照以下步骤在 Google Cloud 控制台中为现有评估添加或更新提醒通知:

  1. 在 Google Cloud 控制台中,前往 Workload Manager 页面。

    前往 Workload Manager

  2. 点击您要为其启用提醒通知的评估的名称。

  3. 点击修改。

  4. 选择通知部分。

  5. 选择您希望接收其提醒通知的事件,然后选择通知渠道。

  6. 点击保存。

后续步骤