閒置專案專案建議工具
閒置專案建議工具會分析您機構中專案的使用活動,並提供建議,協助您找出、回收或移除閒置專案。
總覽
在快速變遷的機構中,有時會忘記雲端資源 (包括整個專案),這並不罕見。這類無人看管的資源難以識別,且往往會造成不必要的浪費和安全風險。
閒置專案專案建議工具會分析機構中所有專案的使用活動,並提供下列功能,協助您找出、回收及關閉閒置專案:
- 每個專案的使用情況洞察資料 (網路、API、專案擁有者、服務活動等)。
- 建議關閉使用率偏低的專案。
- 建議為使用活動頻繁但沒有有效擁有者的專案指派新擁有者。
關閉或回收無人管理的專案,可為貴機構帶來下列影響和好處:
- 降低安全風險 (
SECURITY
) - 減少不必要的支出 (
COST
) - 工作負載相關碳足跡的減少量 (
SUSTAINABILITY
)
運作方式
閒置專案專案建議工具會分析過去 30 天的專案用量。 下表列出無人看管專案建議工具可根據使用活動偏低或偏高而產生的建議和洞察資料。
專案用量/類型 | 洞察子類型 | 建議 | 建議子類型 |
---|---|---|---|
專案:
|
PROJECT_ACTIVITY |
查看或刪除專案。 | CLEANUP_PROJECT |
專案:
|
PROJECT_ACTIVITY |
指派新的擁有者,重新取得專案。 | RECLAIM_PROJECT |
所有其他非 Apps Script 專案。 | PROJECT_ACTIVITY |
- | - |
建議和洞察資料適用於 Cloud 機構階層的不同層級。如要存取這些建議和洞察資料,必須在相應層級繫結 IAM 角色:
- 專案層級:專案擁有者可以發掘並根據自己有權存取的專案洞察資料和建議採取行動。
- 機構層級:機構管理員可以發掘雲端機構內專案的洞察資料和建議,並據此採取行動。
- 在帳單帳戶層級:帳單管理員可以發掘與特定帳單帳戶相關聯的專案洞察資料和建議,並採取行動。
為專案的使用活動排名
系統會根據提供的建議,將專案的使用活動評為低或高。系統會根據專案使用情況洞察中包含的內容,計算專案使用活動的排名。
如果專案的使用率偏低,則適用下列條件:
使用情況分類 | 條件 |
---|---|
擁有超過 50 個專案的機構 |
|
專案少於 50 個的機構 |
|
最佳化建議的優先順序和影響
無人看管的專案建議包含下列欄位,有助於判斷套用建議的優先順序,並預估可帶來的效益:
priority
- 優先順序值介於 P1 到 P4 之間,P1 為最高優先順序。primaryImpact
-SECURITY
。閒置專案中高優先順序安全性建議的數量。additionalImpact(s)
-COST
和SUSTAINABILITY
。 如果移除專案,可實現的成本 ($) 和永續發展排放量 (kgCO2e) 減少量。
建議優先順序
閒置專案建議的優先順序從 P1 到 P4,P1 為最高優先順序。
推薦系統會先查看每個無人看管專案中的安全性建議。然後,系統會將閒置專案建議的優先順序,設為專案中優先順序最高的建議。舉例來說,如果閒置專案有 10 項安全性建議,其中 8 項為 P2 建議,2 項為 P1 建議,則閒置專案建議的優先順序值會指派為 P1。
在無人看管的專案中,最常出現的安全建議來自 IAM 建議。如果閒置專案建議的優先順序為 P1,可能表示閒置專案中有可公開存取的 Cloud Storage 值區 (進一步瞭解 IAM 建議工具如何設定優先順序)。
安全性影響
primaryImpact
- SECURITY
欄位會提供securityProjection
,等於閒置專案中高優先順序 (P2 以上) 安全性建議的數量。舉例來說,如果專案有建議,要以更精細的角色取代廣泛的「編輯者」角色,該建議的優先順序為 P2,並會計入 priorityRecommendationCount
。
費用落差
additionalImpact
- COST
欄位會提供costProjection
,預估移除無人看管的專案後可節省的費用。這是根據過去 30 天內,在無人看管專案中執行的資源所產生的費用計算而得。
永續發展影響
「additionalImpact
- SUSTAINABILITY
」欄位會顯示 sustainabilityProjection
,這是指過去 30 天內,閒置專案中執行的資源所造成的碳排放量估計值。估算值是以二氧化碳排放當量 (kgCO2e) 為單位。
專案使用率洞察資料的內容
專案使用率洞察內容是欄位值,用於對專案的使用活動進行排名,並產生 CLEANUP_PROJECT
和/或 RECLAIM_PROJECT
建議。
下表列出建議事項工具在 PROJECT_ACTIVITY
洞察資料中顯示的各個欄位:
欄位 | 說明 |
---|---|
使用程度 | |
usagePercentile |
這個專案的使用量百分比,與同一機構內其他專案的比較結果。 如果百分位數為 -1,表示系統未計算該值。如果機構的專案少於 50 個,系統就不會計算該值。 |
API 活動 | |
activeServiceAccountDailyCount |
這個專案中,每天有驗證活動的服務帳戶平均數量。 |
apiClientDailyCount |
這項專案產生的 API 呼叫每日平均不同用戶端數。 |
consumedApiDailyCount |
這個專案每日平均耗用的 API 呼叫次數。 |
datastoreApiDailyCount |
這個專案每日平均耗用的 Datastore API 呼叫次數 |
網路活動 | |
vpcEgressDailyBytes |
這個專案的每日平均 VPC 輸出位元組數。 |
vpcIngressDailyBytes |
這個專案的每日平均 VPC 輸入位元組數 |
帳單用量 | |
hasBillingAccount |
檢查專案在觀察期結束時是否設有帳單帳戶 |
serviceWithBillableUsage |
過去 30 天內使用的付費服務名稱。 |
雲端服務用量 | |
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 天的可用資料,這個專案每日平均貢獻的碳排放量。 |
costProjection |
如果移除專案,預計在指定時間內可節省的費用。系統會根據帳單帳戶權限顯示自訂價格或定價。 這是根據最近 30 天的可用資料估算而得,並非實際帳單。 |
severity |
severity 會設為專案中最高嚴重程度安全洞察的對應值。舉例來說,根據 IAM Recommender 為洞察資訊設定嚴重程度的方式,無人看管專案洞察資訊的 CRITICAL 嚴重程度可能表示無人看管專案中有可公開存取的 Cloud Storage 值區。 |
刪除專案的建議
如果專案在過去 30 天內使用率偏低,且過去 180 天內未使用任何 OAuth 權杖,建議刪除該專案。
指派專案新擁有者的建議
如果專案符合下列所有條件,建議您指派新的擁有者:
- 所有指派的擁有者在過去 90 天內都未在專案中執行任何動作,或已離職。
- 專案的使用率偏高。
定價
如要進一步瞭解 Active Assist 定價,請參閱建議事項定價。
事前準備
如要查看洞察資料和最佳化建議,請先完成下列事項:
- 您必須啟用 Recommender API。
您只需要在單一帳單專案中啟用 API,接著,您可以使用
--billing-project
gcloud/API 的功能,透過這個帳單專案,查看其他專案、整個機構或帳單帳戶的建議和洞察資料。 - 請確認您已獲派下列其中一個必要角色:
說明 | 角色 |
---|---|
查看建議 |
recommender.projectUtilViewer |
查看及更新建議 |
recommender.projectUtilAdmin |
在資訊公開和控制中心停用深入分析和建議功能 |
dataprocessing.admin |
這些角色提供一組權限,可讓您存取洞察資訊和建議。如要進一步瞭解角色,請參閱瞭解角色和授予 IAM 權限。
在機構層級授予這些角色,即可使用機構層級 API,個別或集體存取機構中專案的建議和洞察資料 (機構中所有無人看管的專案)。
在帳單帳戶層級授予這些角色,即可存取使用指定帳單帳戶的專案建議和洞察資料。
如要進一步瞭解如何停用,請參閱這篇文章。
建議事項 ID
以下是閒置專案建議工具 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 - 建議」。
建議
如要列出已啟用 Recommender API 的專案閒置專案建議,請執行下列指令:
gcloud recommender recommendations list \ --project=PROJECT_ID \ --location=global \ --recommender=google.resourcemanager.projectUtilization.Recommender
更改下列內容:
PROJECT_ID
:專案 ID。
如要使用已啟用 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。
如要列出整個機構的無人看管專案建議,請使用已啟用 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。
如要列出使用特定帳單帳戶的無人看管專案建議,請使用已啟用 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 帳單帳戶 ID。
深入分析
如要列出特定專案的使用情況洞察資料,請執行下列指令:
gcloud recommender insights list \ --project=PROJECT_ID \ --location=global \ --insight-type=google.resourcemanager.projectUtilization.Insight
更改下列內容:
PROJECT_ID
:專案 ID。
如要列出其他專案的使用情況洞察資料,請使用已啟用 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
:您要查看閒置建議洞察資料的其他專案 ID。
如要列出整個機構的用量洞察資料,請使用已啟用 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。
如要列出使用特定帳單帳戶的用量洞察,請使用已啟用 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 帳單帳戶 ID。
API
如要查看建議和洞察資料,可以使用 curl
將要求傳送至 Recommender API。如要透過指令列授權要求,請使用 OAuth 存取權杖。OAuth 存取權杖是一組字串,可向 API 授予暫時存取權。
建議
如要列出已啟用 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。
如要使用已啟用 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。
如要列出整個機構的無人看管專案建議,請使用已啟用 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。
如要列出使用特定帳單帳戶的無人看管專案建議,請使用已啟用 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 帳單帳戶 ID。
深入分析
如要列出特定專案的使用情況洞察資料,請執行下列指令:
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。
如要列出其他專案的使用情況洞察資料,請使用已啟用 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
:您要查看閒置建議洞察資料的其他專案 ID。
如要列出整個機構的用量洞察資料,請使用已啟用 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。
如要列出使用特定帳單帳戶的用量洞察,請使用已啟用 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 帳單帳戶 ID。
設定建議參數
本節說明如何使用 gcloud
和 curl
查看及設定這項建議。
下表列出可設定的各種參數:
參數 | 說明 | 預期值 |
---|---|---|
minimum_observation_period |
最低觀察期是指系統在產生建議前,分析專案活動的天數。
目前僅支援在機構層級設定這個值。 |
"P30D"[DEFAULT], "P60D", "P90D", "P180D", "P270D", "P365D" |
gcloud
如要使用 gcloud
查看及更新建議事項設定,請按照下列步驟操作。
查看設定
如要查看特定機構的無人看管專案建議設定,請從該機構所屬的專案執行下列指令,並啟用 Recommender API:
gcloud beta recommender recommender-config describe \ google.resourcemanager.projectUtilization.Recommender \ --organization=ORGANIZATION_ID \ --location=global
更改下列內容:
ORGANIZATION_ID
:機構 ID。
輸出範例:
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
。
更新設定
如要更新特定機構的無人看管專案建議設定,請選取已啟用 Recommender API 的機構專案,然後建立
config.gcloud
檔案:{ "params": { "minimum_observation_period": DURATION } }
更改下列內容:
DURATION
:從「P30D」、「P60D」、「P90D」、「P180D」、「P270D」、「P365D」中選擇一個值
執行下列指令:
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
如要查看及更新建議事項設定,可以使用 curl
向 Recommender API 傳送要求。如要透過指令列授權要求,請使用 OAuth 存取權杖。OAuth 存取權杖是一組字串,可向 API 授予暫時存取權。
查看設定
如要查看特定機構的無人看管專案建議設定,請從該機構所屬的專案執行下列指令,並啟用 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。
輸出範例:
{ "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
。
更新設定
如要更新特定機構的無人看管專案建議設定,請選取已啟用 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 值。
執行下列指令列:
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。