无人使用的项目 Recommender

无人使用的项目 Recommender 会分析组织中项目的使用活动,并提供建议,帮助您发现、收回或移除无人使用的项目。

概览

在快速发展的组织中,云资源(包括整个项目)偶尔会被遗忘,这种情况并不罕见。此类无人使用的资源可能很难识别,并且往往会导致不必要的浪费和安全风险。

无人使用的项目 Recommender 会分析组织中所有项目的使用活动,并为您提供以下功能,可帮助您发现、收回和关停无人使用的项目:

  • 每个项目(网络、API、项目所有者、服务活动等)的使用情况数据分析。
  • 建议停用使用活动量低的项目。
  • 为使用活动量高但没有活跃所有者的项目分配新的所有者的建议。

关停或收回无人使用的项目可为您的组织带来以下影响和优势

  • 降低安全风险 (SECURITY)
  • 减少不必要的支出 (COST)
  • 减少与工作负载相关的碳足迹 (SUSTAINABILITY)

工作原理

无人使用的项目 Recommender 会分析过去 30 天的项目使用情况。下表列出了无人使用项目的 Recommender 可以根据使用活动量是低还是高生成的建议和数据分析。

项目使用情况/类型 数据分析子类型 建议 建议子类型
符合以下条件的项目:
  • 过去 30 天的使用量低
PROJECT_ACTIVITY 查看或删除项目。 CLEANUP_PROJECT
符合以下条件的项目:
  • 过去 30 天的使用量高
  • 已分配用户所有者,但这些所有者在该项目上都不活跃。
PROJECT_ACTIVITY 分配新的所有者以收回项目。 RECLAIM_PROJECT
所有其他非 Apps 脚本项目。 PROJECT_ACTIVITY - -

建议和数据分析在 Cloud 组织层次结构的不同级别提供。访问这些建议和数据分析需要相应级层的 IAM 角色绑定

  • 在项目级层:项目所有者可以发现其有权访问的项目的数据分析和建议并采取措施。
  • 在组织级别:组织管理员可以发现云组织中项目的数据分析和建议并采取措施。
  • 在结算帐号级层:结算管理员可以发现与特定结算帐号关联的项目的数据分析和建议并采取措施。

对项目的使用活动进行排名

根据提供的建议,可为项目提供使用活动量低或高的排名。项目的使用活动量排名是根据项目利用率数据分析中包含的内容计算得出的。

若要将项目认定为使用活动量低,需要满足以下条件:

使用量分类 条件
项目数多于 50 个的组织
  • 项目排名根据项目利用率数据分析中包含的所有内容的使用活动级别进行。
  • 如果与组织内所有其他项目相比,项目的使用活动量低于 10%,则会将项目分类为无人使用。
项目数少于 50 个的组织
  • 项目消耗的 API 调用次数的每日平均值 (consumedApiDailyCount) 小于 100。
  • Cloud Logging 是项目使用的唯一服务。
  • 所有其他项目利用率数据分析的值等于零。

项目利用率数据分析的内容

项目的利用率数据分析的内容是字段值,用于对项目的使用活动进行排名并生成 CLEANUP_PROJECT 和/或 RECLAIM_PROJECT 建议。

下表列出了 Recommender 会在 PROJECT_ACTIVITY 数据分析中显示的各个字段:

字段 说明
使用量级别
usagePercentile 此项目与同一组织中的其他项目相比的使用级别百分位。

如果百分位值为 -1,则表示未计算该值。如果组织的项目少于 50 个,则系统不会计算该值。

API 活动
activeServiceAccountDailyCount 此项目下具有身份验证活动的服务帐号的每日平均值。
apiClientDailyCount 此项目产生的 API 调用的唯一客户端的每日平均值。
consumedApiDailyCount 此项目消耗的 API 调用次数的每日平均值。
datastoreApiDailyCount 此项消耗的 Datastore API 调用次数的每日平均值
网络活动
vpcEgressDailyBytes 流出此项目的 VPC 出站流量字节数的每日平均值。
vpcIngressDailyBytes 流入此项目的 VPC 入站流量字节数的每日平均值。
结算使用量
hasBillingAccount 在观察期结束时检查项目是否有结算帐号
serviceWithBillableUsage 过去 30 天内使用过的计费服务的名称。
Cloud 服务使用量
activeAppengineInstanceDailyCount:system/instance_count 此项目下活跃的 App Engine 实例的每日平均值
activeCloudsqlInstanceDailyCount 此项目下活跃的 Cloud SQL 实例的每日平均值。
activeGceInstanceDailyCount 此项目下活跃的 Compute Engine 实例的每日平均值。
bigqueryInflightJobDailyCount 此项目下运行中的 BigQuery 作业的每日平均值。
bigqueryInflightQueryDailyCount 此项目下运行中的 BigQuery 查询计数的每日平均值。
bigqueryStorageDailyBytes 此项目下 BigQuery 存储空间的每日平均值。
bigqueryTableDailyCount 此项目下 BigQuery 表计数的每日平均值。
gcsObjectDailyCount 此项目下 Cloud Storage 对象数量的每日平均值。
gcsRequestDailyCount 此项目下的 Cloud Storage API 数量的每日平均值。
gcsStorageDailyBytes 此项目下 Cloud Storage 使用的存储空间字节数的每日平均值。
用户活动
numActiveUserOwners 在观察期结束时活跃用户类型项目所有者的数量。活跃表示在观察期内,用户帐号未停用,并且在此项目下存在某个确定的活动。
owners 项目所有者及其活动的列表
其他字段
hasActiveOauthTokens 检查在过去 180 天内项目是否使用了任何有效的 OAuth 令牌。
carbonFootprintDailyKgCO2 根据最近 30 天的可用数据,此项目产生的碳排放量的每日平均量。

删除项目的建议

如果某个项目在过去 30 天内的使用量低并且在过去 180 天内未使用 OAuth 令牌,则建议删除该项目。

将新所有者分配给项目的建议

当项目满足下面列出的所有条件时,建议为项目分配新的所有者:

  • 所有已分配的所有者在过去 90 天内在项目中不活跃,或者不再与公司相关联。
  • 项目的使用量高。

价格

此 Recommender 属于“标准”Recommender 价格层级。如需详细了解价格层级,请参阅 Recommender 价格

准备工作

您必须先执行以下操作,然后才能查看数据分析和建议:

  • 您必须启用 Recommender API。 您只需在单个结算项目上启用该 API。然后,您可以使用此结算项目和 gcloud/API 的 --billing-project 功能查看其他项目、整个组织或结算帐号的建议和数据分析。
  • 确保您已分配下列必要的角色之一:
说明 角色
查看建议 recommender.projectUtilViewer
查看和更新建议 recommender.projectUtilAdmin
在透明度和控制中心中选择停用数据分析和建议 dataprocessing.admin

这些角色提供了一组权限,可让您访问数据分析和建议。如需详细了解角色,请参阅了解角色授予 IAM 权限

通过在组织级层授予这些角色,您可以使用组织级 API 分别或整体(组织中的所有无人使用的项目)访问组织中项目的建议和数据分析。

通过在结算帐号级层授予这些角色,您可以访问使用指定结算帐号的项目的建议和数据分析。

如需详细了解如何选择停用数据分析,请参阅选择停用数据分析和建议

Recommender ID

以下是无人使用的项目 Recommender ID 和数据分析类型:

  • google.resourcemanager.projectUtilization.Recommender
  • google.resourcemanager.projectUtilization.Insight

必需的 IAM 权限

如需访问建议和数据分析列表,您需要具备以下权限:

  • recommender.resourcemanagerProjectUtilizationRecommendations.get
  • recommender.resourcemanagerProjectUtilizationRecommendations.list
  • recommender.resourcemanagerProjectUtilizationInsights.get
  • recommender.resourcemanagerProjectUtilizationInsights.list

如需更新建议和数据分析(例如,以忽略建议),需要具备以下权限:

  • recommender.resourcemanagerProjectUtilizationRecommendations.update
  • recommender.resourcemanagerProjectUtilizationInsights.update

查看无人使用的项目建议

本部分介绍如何使用 gcloud 检查无人使用的数据分析和建议,以及如何使用 curl 向 Recommender API 发送请求。

gcloud

如要使用 gcloud 查看建议和数据分析,请按以下步骤操作。如需了解详情,请参阅使用 API - 数据分析使用 API - 建议

建议

  1. 如需列出已启用 Recommender API 的项目的无人使用的项目建议,请运行以下命令:

      gcloud recommender recommendations list \
      --project=PROJECT_ID \
      --location=global \
      --recommender=google.resourcemanager.projectUtilization.Recommender
    

    替换以下内容:

    • PROJECT_ID:项目 ID。
  2. 如需在使用已启用 Recommender API 的项目(如上一步)中列出的项目中无人使用的项目建议,请运行以下命令:

      gcloud recommender recommendations list \
      --billing-project=BILLING_PROJECT_ID \
      --project=PROJECT_ID \
      --location=global \
      --recommender=google.resourcemanager.projectUtilization.Recommender
    

    替换以下内容:

    • BILLING_PROJECT_ID:您使用 Recommender API 启用的项目的 ID(与上一步中指定的 PROJECT_ID 相同)。
    • PROJECT_ID:您要查看无人使用的项目建议的其他项目的 ID。
  3. 如需在使用已启用 Recommender API 的项目(在上一步中)的同时,列出整个组织的无人使用的项目建议,请运行以下命令:

      gcloud recommender recommendations list \
      --billing-project=BILLING_PROJECT_ID \
      --organization=ORGANIZATION_ID \
      --location=global \
      --recommender=google.resourcemanager.projectUtilization.Recommender
    

    替换以下内容:

    • BILLING_PROJECT_ID:已启用 Recommender API 的项目的 ID(与上一步中指定的 PROJECT_ID 相同)。
    • ORGANIZATION_ID:您要查看无人使用的项目建议的组织的 ID。
  4. 如需在使用已启用 Recommender API 的项目(在上一步中)的同时,列出使用特定结算帐号的无人使用的项目建议,请运行以下命令:

      gcloud recommender recommendations list \
      --billing-project=BILLING_PROJECT_ID \
      --billing-account=BILLING_ACCOUNT_ID \
      --location=global \
      --recommender=google.resourcemanager.projectUtilization.Recommender
    

    替换以下内容:

    • BILLING_PROJECT_ID:已启用 Recommender API 的项目的 ID(与上一步中指定的 PROJECT_ID 相同)。
    • BILLING_ACCOUNT_ID:您的 Google Cloud Platform 结算帐号的 ID。

数据分析

  1. 如需列出给定项目的使用情况数据分析,请运行以下命令:

      gcloud recommender insights list \
      --project=PROJECT_ID \
      --location=global \
      --insight-type=google.resourcemanager.projectUtilization.Insight
    

    替换以下内容:

    • PROJECT_ID:项目 ID。
  2. 如需在使用启用了 Recommender API 的项目(如上一步)中列出其他项目的使用情况数据分析,请运行以下命令:

      gcloud recommender insights list \
      --billing-project=BILLING_PROJECT_ID \
      --project=PROJECT_ID \
      --location=global \
      --insight-type=google.resourcemanager.projectUtilization.Insight
    

    替换以下内容:

    • BILLING_PROJECT_ID:已启用 Recommender API 的项目的 ID(与上一步中指定的 PROJECT_ID 相同)。
    • PROJECT_ID:您要查看无人使用的 Recommender 数据分析的其他项目的 ID。
  3. 如需在使用已启用 Recommender API 的项目(在上一步中)的同时,列出整个组织的使用情况数据分析,请运行以下命令:

      gcloud recommender insights list \
      --billing-project=BILLING_PROJECT_ID \
      --organization=ORGANIZATION_ID \
      --location=global \
      --insight-type=google.resourcemanager.projectUtilization.Insight
    

    替换以下内容:

    • BILLING_PROJECT_ID:已启用 Recommender API 的项目的 ID(与上一步中指定的 PROJECT_ID 相同)。
    • ORGANIZATION_ID:您要查看其使用情况数据分析的组织的 ID。
  4. 如需在使用已启用 Recommender API 的项目(在上一步中)的同时,列出使用特定结算账号的使用情况数据分析,请运行以下命令:

      gcloud recommender insights list \
      --billing-project=BILLING_PROJECT_ID \
      --billing-account=BILLING_ACCOUNT_ID \
      --location=global \
      --insight-type=google.resourcemanager.projectUtilization.Insight
    

    替换以下内容:

    • BILLING_PROJECT_ID:已启用 Recommender API 的项目的 ID(与上一步中指定的 PROJECT_ID 相同)。
    • BILLING_ACCOUNT_ID:您的 Google Cloud Platform 结算帐号的 ID。

API

如需查看建议和数据分析,您可以使用 curl 向 Recommender API 发送请求。如需通过命令行对请求进行授权,您可以使用 OAuth 访问令牌。OAuth 访问令牌是一个字符串,用于授予对 API 的临时访问权限。

建议

  1. 如需列出已启用 Recommender API 的项目的无人使用的项目建议,请运行以下命令:

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/\
    recommenders/google.resourcemanager.projectUtilization.Recommender/recommendations"
    

    替换以下内容:

    • PROJECT_ID:项目 ID。
  2. 如需在使用已启用 Recommender API 的项目(如上一步)中列出的项目中无人使用的项目建议,请运行以下命令:

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
    -H "x-goog-user-project: BILLING_PROJECT_ID" \
    "https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/\
    recommenders/google.resourcemanager.projectUtilization.Recommender/recommendations"
    

    替换以下内容:

    • BILLING_PROJECT_ID:您使用 Recommender API 启用的项目的 ID(与上一步中指定的 PROJECT_ID 相同)。
    • PROJECT_ID:您要查看无人使用的项目建议的其他项目的 ID。
  3. 如需在使用已启用 Recommender API 的项目(在上一步中)的同时,列出整个组织的无人使用的项目建议,请运行以下命令:

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
    -H "x-goog-user-project: BILLING_PROJECT_ID/" \
    "https://recommender.googleapis.com/v1/organizations/ORGANIZATION_ID/locations/global/\
    recommenders/google.resourcemanager.projectUtilization.Recommender/recommendations"
    

    替换以下内容:

    • BILLING_PROJECT_ID:已启用 Recommender API 的项目的 ID(与上一步中指定的 PROJECT_ID 相同)。
    • ORGANIZATION_ID:您要查看无人使用的项目建议的组织的 ID。
  4. 如需在使用已启用 Recommender API 的项目(在上一步中)的同时,列出使用特定结算帐号的无人使用的项目建议,请运行以下命令:

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
    -H "x-goog-user-project: BILLING_PROJECT_ID/" \
    "https://recommender.googleapis.com/v1/billingAccounts/BILLING_ACCOUNT_ID/locations/global/\
    recommenders/google.resourcemanager.projectUtilization.Recommender/recommendations"
    

    替换以下内容:

    • BILLING_PROJECT_ID:已启用 Recommender API 的项目的 ID(与上一步中指定的 PROJECT_ID 相同)。
    • BILLING_ACCOUNT_ID:您的 Google Cloud Platform 结算帐号的 ID。

数据分析

  1. 如需列出给定项目的使用情况数据分析,请运行以下命令:

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global\
    /insightTypes/google.resourcemanager.projectUtilization.Insight/insights"
    

    替换以下内容:

    • PROJECT_ID:项目 ID。
  2. 如需在使用启用了 Recommender API 的项目(如上一步)中列出其他项目的使用情况数据分析,请运行以下命令:

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "x-goog-user-project: BILLING_PROJECT_ID/" \
    "https://recommender.googleapis.com/v1/projects/PROJECT_ID//locations/global\
    /insightTypes/google.resourcemanager.projectUtilization.Insight/insights"
    

    替换以下内容:

    • BILLING_PROJECT_ID:已启用 Recommender API 的项目的 ID(与上一步中指定的 PROJECT_ID 相同)。
    • PROJECT_ID:您要查看无人使用的 Recommender 数据分析的其他项目的 ID。
  3. 如需在使用已启用 Recommender API 的项目(在上一步中)的同时,列出整个组织的使用情况数据分析,请运行以下命令:

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
    -H "x-goog-user-project: PROJECT_ID/" \
    "https://recommender.googleapis.com/v1/organizations/ORGANIZATION_ID/locations/global/\
    insightTypes/google.resourcemanager.projectUtilization.Insight/insights"
    

    替换以下内容:

    • BILLING_PROJECT_ID:已启用 Recommender API 的项目的 ID(与上一步中指定的 PROJECT_ID 相同)。
    • ORGANIZATION_ID:您要查看无人使用的项目建议的组织的 ID。
  4. 如需在使用已启用 Recommender API 的项目(在上一步中)的同时,列出使用特定结算账号的使用情况数据分析,请运行以下命令:

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
    -H "x-goog-user-project: PROJECT_ID/" \
    "https://recommender.googleapis.com/v1/billingAccounts/BILLING_ACCOUNT_ID/locations/global/\
    insightTypes/google.resourcemanager.projectUtilization.Insight/insights"
    

    替换以下内容:

    • BILLING_PROJECT_ID:已启用 Recommender API 的项目的 ID(与上一步中指定的 PROJECT_ID 相同)。
    • BILLING_ACCOUNT_ID:您的 Google Cloud Platform 结算帐号的 ID。

配置建议参数

本部分介绍如何使用 gcloudcurl 查看并配置此 Recommender。

下表列出了可以配置的各种参数:

参数 说明 预期值
minimum_observation_period 最短观察期定义了在生成建议之前待分析的项目活动存在的天数。

目前仅支持在组织级层设置此值。

“P30D”[默认]、“P60D”、“P90D”、“P180D”、“P270D”、“P365D”

gcloud

如需使用 gcloud 查看和更新 Recommender 配置,请按照以下步骤操作。

查看配置

  1. 如需查看给定组织内无人使用的项目的 Recommender 配置,请从启用了 Recommender API 的组织所包含的项目中运行以下命令:

    gcloud beta recommender recommender-config describe \
    google.resourcemanager.projectUtilization.Recommender \
    --organization=ORGANIZATION_ID \
    --location=global
    

    替换以下内容:

    • ORGANIZATION_ID:组织 ID。
  2. 输出示例:

    etag: ETAG
    name: organizations/ORGANIZATION_ID/locations/global/recommenders/google.resourcemanager.projectUtilization.Recommender/config
    recommenderGenerationConfig:
      params:
        minimum_observation_period: P30D
    revisionId: DEFAULT
    updateTime: '2022-04-19T00:57:55Z'
    

    请记下 ETAG 值:

    • ETAG:此值将在 recommender-config update 中使用。

更新配置

  1. 如需更新给定组织内无人使用的项目的 Recommender 配置,请选择启用了 Recommender API 的组织所包含的项目,然后创建一个 config.gcloud 文件:

    
    {
     "params": {
        "minimum_observation_period": DURATION
      }
    }
    

    替换以下内容:

    • DURATION:“P30D”、“P60D”、“P90D”、“P180D”、“P270D”、“P365D”中的一个值
  2. 运行以下命令:

    gcloud beta recommender recommender-config update \
    google.resourcemanager.projectUtilization.Recommender \
    --organization=ORGANIZATION_ID \
    --location=global \
    --config-file=config.gcloud \
    --etag=ETAG
    

    替换以下内容:

    • ORGANIZATION_ID:组织 ID。
    • ETAG:从 recommender-config describe 返回的 etag 值。

API

如需查看和更新 Recommender 配置,您可以使用 curl 向 Recommender API 发送请求。如需通过命令行对请求进行授权,您可以使用 OAuth 访问令牌。OAuth 访问令牌是一个字符串,用于授予对 API 的临时访问权限。

查看配置

  1. 如需查看给定组织内无人使用的项目的 Recommender 配置,请从启用了 Recommender API 的组织所包含的项目中运行以下命令:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "x-goog-user-project: PROJECT_ID" \
    https://recommender.googleapis.com/v1beta1/organizations/ORGANIZATION_ID/locations/global/recommenders/google.resourcemanager.projectUtilization.Recommender/config
    

    替换以下内容:

    • PROJECT_ID:项目 ID。
    • ORGANIZATION_ID:组织 ID。
  2. 输出示例:

    
    {
      "name": "organizations/ORGANIZATION_ID/locations/global/recommenders/google.resourcemanager.projectUtilization.Recommender/config",
      "recommenderGenerationConfig": {
        "params": {
          "minimum_observation_period": "P60D"
        }
      },
      "etag": ETAG,
      "updateTime": "2022-04-21T18:51:17.407255Z",
      "revisionId": "75c3b0d7"
    }
    
    

    请记下 ETAG 值:

    • ETAG:此值将在 curl PATCH 中使用。

更新配置

  1. 如需更新给定组织内无人使用的项目的 Recommender 配置,请选择启用了 Recommender API 的组织所包含的项目,然后创建一个 request.json 文件:

    
    {
      "name": "organizations/ORGANIZATION_ID/locations/global/recommenders/google.resourcemanager.projectUtilization.Recommender/config",
      "recommenderGenerationConfig": {
        "params": {
          "minimum_observation_period": DURATION
        }
      },
    "etag": ETAG,
    }
    

    替换以下内容:

    • DURATION:“P30D”、“P60D”、“P90D”、“P180D”、“P270D”、“P365D”中的一个值
    • ETAG:从 CURL get 返回的 etag 值。
  2. 运行以下命令行:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "x-goog-user-project: PROJECT_ID" \
    -H "Content-Type: application/json; charset=utf-8" -d @request.json \
    https://recommender.googleapis.com/v1beta1/organizations/ORGANIZATION_ID/locations/global/recommenders/google.resourcemanager.projectUtilization.Recommender/config
    

    替换以下内容:

    • PROJECT_ID:项目 ID。
    • ORGANIZATION_ID:组织 ID。

后续步骤