GCP 成本優化完全指南 2026:帳單分析與省錢技巧
TL;DR: 【2026 最新版】學會 GCP 成本優化三大支柱:善用 Gemini AI 輔助的 Billing Reports 分析帳單、掌握 2026/1/21 CUD 自動遷移策略、運用 Spot VM 最高 91% 折扣。本文涵蓋 FinOps Hub 2.0、App Hub 整合等最新功能,手把手帶你從「看不懂帳單」到「精準控管每一塊錢」。
為什麼 GCP 成本容易失控?5 個常見陷阱
場景一:開發測試環境忘記關閉 週五下班前你開了 10 台 n1-standard-8 VM 跑壓測,週末忘了關,週一一看已經燒掉 $500 起跳。
場景二:選錯 Storage Class 不常存取的備份檔案丟在 Standard Storage,儲存費每月就多付 5-10 倍。
場景三:跨區域傳輸費爆表
application 在 us-central1,database 卻在 asia-east1,每月跨區傳輸費就佔了帳單的 30%。
場景四:沒善用折扣方案 明明運算需求很穩定,卻一路用 On-Demand 價格,白白錯過 CUD 能省下的 50-70%。
場景五:缺乏成本可見性 帳單按月結算,等你發現成本不對勁,往往已經多花了好幾千美元。
💡 FinOps 核心理念:成本優化不是「省錢」,而是「花對錢」,用最少的成本達成業務目標。
GCP 成本結構解析:你的錢花在哪?
四大成本組成
GCP 帳單主要分成四大類:
1. Compute(運算)
- Compute Engine VM instances
- GKE clusters
- Cloud Run containers
- Cloud Functions executions
成本驅動因素:
- VM 規格(vCPU、RAM、GPU)
- 運行時數
- 區域(us-central1 最便宜,asia-northeast1 較貴 10-20%)
2. Storage(儲存)
- Cloud Storage buckets
- Persistent Disks
- Cloud SQL databases
- Filestore
成本驅動因素:
- Storage Class(Standard / Nearline / Coldline / Archive)
- 儲存容量(GB/月)
- 讀寫操作次數
3. Network(網路)
- VPC 內部流量(免費)
- 跨區域傳輸(Regional egress)
- 對外網路(Internet egress)
- Load Balancer 流量
成本驅動因素:
- 出站流量(Egress)計費,入站(Ingress)免費
- 同區域免費,跨區依距離計費
4. Other Services(其他服務)
- BigQuery queries
- Cloud Logging
- Cloud Monitoring
- API calls
成本結構範例
典型 web application 成本分布:
| 項目 | 佔比 | 月費用(假設 $10,000 總預算) |
|---|---|---|
| Compute | 45% | $4,500 |
| Storage | 20% | $2,000 |
| Network | 25% | $2,500 |
| Other | 10% | $1,000 |
⚠️ 警告:Network 佔比超過 30%,通常代表架構出了問題,該回頭檢查是不是太多資源跨區域了。
帳單分析實戰:Billing Reports 完整教學
3.1 四大 Billing Reports 類型
Report 1: Reports Page(基礎報表)
存取路徑:
Google Cloud Console → Billing → Reports
可回答的問題:
- 本月支出趨勢如何?
- 上個月哪個專案花費最多?
- 哪個 GCP 服務成本最高?
核心功能:
-
時間範圍選擇
- 本月迄今(MTD)
- 上個月
- 過去 3 個月
- 自訂日期範圍
-
分組維度(Group by)
- Project(專案)
- Service(服務,如 Compute Engine、Cloud Storage)
- SKU(具體資源,如 n1-standard-4)
- Location(區域)
- Label(自訂標籤)
-
篩選器(Filters)
- 依專案、服務、標籤篩選
- 排除特定項目
-
圖表類型
- 堆疊柱狀圖(Stacked bar chart)
- 堆疊面積圖(Stacked area chart)
- 折線圖(Line chart)
最佳實踐:
日常監控設定:
- Group by: Service
- Time range: Last 30 days
- Chart: Stacked area chart
成本分攤設定:
- Group by: Label
- Filter: label.team=backend, label.team=frontend
- Time range: This month
Report 2: Cost Table Report(成本明細表)
功能:取代傳統發票,把成本拆得很細給你看
包含欄位:
- Project ID / Project Number
- Service description
- SKU description
- Usage amount
- Cost(含稅前/稅後)
- Credits(折扣)
使用場景:
- 財務部門對帳
- 專案成本精算
- 跨部門費用分攤
下載格式:CSV / PDF
Report 3: Pricing Table Report(SKU 定價表)
功能:查詢所有 SKU 的即時定價
使用時機:
- 估算新專案成本
- 比較不同區域價格
- 規劃 resource migration
範例:查詢 n1-standard-4 在不同區域的價格
| Region | vCPU/hour | RAM GB/hour | Total/month (730h) |
|---|---|---|---|
| us-central1 | $0.190 | $0.0255 | $185.58 |
| asia-east1 | $0.209 | $0.0280 | $204.01 |
| europe-west1 | $0.209 | $0.0280 | $204.01 |
Report 4: CUD Analysis Reports(CUD 效益分析)
功能:視覺化 Committed Use Discounts 的財務影響
關鍵指標:
- CUD Coverage(涵蓋率):被 CUD 涵蓋的用量百分比
- CUD Utilization(使用率):已使用的 CUD 承諾百分比
- Effective Savings(實際節省金額)
最佳實踐:
- Coverage < 70%:考慮購買更多 CUD
- Utilization < 80%:CUD 購買過多,需調整
3.2 🆕 Gemini Cloud Assist - AI 驅動的成本分析
2025 年 12 月最新功能
Google Cloud 把 Gemini Cloud Assist 整進了 Billing Reports,幫你用 AI 分析成本:
核心能力:
-
自然語言查詢:用對話方式建立成本報表
- 「顯示本月 Compute Engine 成本最高的 5 個專案」
- 「比較上週與本週的 Cloud Storage 費用」
-
AI 報表摘要:自動分析報表並提供關鍵洞察
- 識別異常支出模式
- 建議成本優化機會
-
報表建議:推薦適合的報表配置
- 根據歷史查詢模式
- 自動篩選相關維度
使用範例:
User: "Show me which team spent the most last month"
Gemini: 建立報表 → Group by: Label (team) → Time: Last month
結果: Backend team $15,000 (↑20% vs prev month)
💡 Pro Tip:Gemini 會記住你的查詢習慣,用越久建議越精準。
3.3 🆕 App Hub 整合 - 按應用程式分析成本
2025 年 12 月新增
App Hub 現在也整進了 Billing Reports,FinOps 和 DevOps 團隊可以這樣用:
- 按應用程式分組成本:在 Reports 中選擇「Group by Application」
- 應用程式層級篩選:在 Cost Table Report 篩選特定 application
- 成本優化建議:針對每個 application 提供效率優化建議
使用場景:
- 多個微服務組成的應用程式,追蹤總成本
- 跨專案的應用程式,統一成本視圖
- 與 DevOps 工具整合,自動化成本歸因
3.4 🆕 FinOps Hub 2.0 - 雲端浪費偵測
2026 年最新版本
FinOps Hub 2.0 新增 Utilization Insights 儀表板:
功能:
-
Idle Resources Detection(閒置資源偵測)
- CPU < 5% 的 VM
- 未附加的 Persistent Disks
- 未使用的 Static IPs
-
Right-Sizing Recommendations(合適化建議)
- Over-provisioned VMs
- Under-utilized databases
-
Waste Reduction Metrics(浪費減少指標)
- 每月可節省金額
- 優化後的預估成本
存取路徑:
Google Cloud Console → Billing → FinOps Hub → Utilization Insights
3.5 進階功能:BigQuery Export
為什麼需要 BigQuery Export?
雖然 Gemini 和 FinOps Hub 2.0 的 AI 分析已經很好用,但要做深度分析,BigQuery Export 還是少不了:
- 複雜的自訂查詢(如:「找出成本週成長 > 20% 的專案」)
- 串接 BI 工具(Looker、Tableau、Data Studio)
- 長期歷史資料保留與趨勢分析
設定步驟:
# Step 1: 建立 BigQuery dataset
bq mk --dataset --location=US billing_export
# Step 2: 在 Billing 設定中啟用 Export
# Google Cloud Console → Billing → Billing export
# → Enable BigQuery export
# → Select dataset: billing_export
# Step 3: 等待資料開始匯出(通常需 24 小時)
範例查詢:找出本月成本 Top 10 專案
SELECT
project.name AS project_name,
SUM(cost) AS total_cost,
SUM(IFNULL((SELECT SUM(c.amount)
FROM UNNEST(credits) AS c), 0)) AS total_credits
FROM
`billing_export.gcp_billing_export_v1_XXXXX`
WHERE
DATE(usage_start_time) >= DATE_TRUNC(CURRENT_DATE(), MONTH)
GROUP BY
project_name
ORDER BY
total_cost DESC
LIMIT 10;
範例查詢:按 Label 分攤成本
SELECT
(SELECT value FROM UNNEST(labels) WHERE key = 'team') AS team,
service.description AS service,
SUM(cost) AS total_cost
FROM
`billing_export.gcp_billing_export_v1_XXXXX`
WHERE
DATE(usage_start_time) >= '2026-12-01'
GROUP BY
team, service
ORDER BY
total_cost DESC;
📊 Pro Tip:使用 Looker Studio 連接 BigQuery,建立 Real-time Cost Dashboard。
折扣大作戰:CUD vs SUD vs Spot VM 完全攻略
4.1 Committed Use Discounts (CUD) - 承諾使用折扣
運作機制
跟 GCP 簽 1 年或 3 年的承諾,換來大幅折扣。概念上就像「買房」對比「租房」。
兩種 CUD 類型
Type 1: Resource-Based CUD(資源型)
承諾用掉固定數量的資源(vCPU、RAM、GPU)。
折扣幅度:
| 機器類型 | 1 年期 | 3 年期 |
|---|---|---|
| 一般用途(N1, N2, E2) | 37% | 55% |
| 記憶體最佳化(M1, M2) | 41% | 70% |
| 運算最佳化(C2, C2D) | 37% | 55% |
範例:承諾使用 100 vCPU + 400 GB RAM(us-central1)
承諾內容:
- 100 vCPU x 730 小時/月 = 73,000 vCPU-hours
- 400 GB RAM x 730 小時/月 = 292,000 GB-hours
折扣計算:
On-Demand 價格: $3,650/月
3 年 CUD 價格: $1,643/月(55% off)
每月節省: $2,007
3 年總節省: $72,252
Type 2: Spend-Based CUD(消費型)
承諾每小時的最低消費金額($/hour),不綁定特定資源類型。
優點:
- 資源配置可以隨時調整(今天用 16 vCPU,明天改用 8 vCPU + GPU 都行)
- 適合多專案、多團隊的環境
折扣幅度:最高 57%(多數資源)
範例:承諾 $100/hour(3年期)
承諾內容:
- $100/hour x 730 hours = $73,000/月
使用彈性:
Week 1: 50 台 n1-standard-4 VM
Week 2: 10 台 n1-highmem-8 + 5 張 V100 GPU
Week 3: 100 台 e2-medium VM
只要每小時使用量達 $100,折扣全額套用
🚨 2026 年 1 月 21 日重大變更(必讀)
所有既有帳單帳戶(使用 spend-based CUD 者)將自動遷移到新的 Multiprice CUD 資料模型
時間軸:
- ✅ 2025 年 7 月 15 日:新帳戶(首次購買 spend-based CUD)自動採用新模型;既有帳戶可提前 opt-in
- 🔄 2026 年 1 月 21 日:所有既有帳戶自動遷移(不可逆)
重大變更:
-
折扣顯示方式改變
- 舊模式:On-Demand 價格 + Credits(折扣以抵免額度形式)
- 新模式:直接顯示折扣後價格(更透明)
舊帳單: Compute Engine: $1,000 CUD Credits: -$550 Total: $450 新帳單: Compute Engine (CUD discounted): $450 Total: $450 -
Multiprice 支援
- 同一個 SKU 可以有多個價格(像是 On-Demand、CUD、客製化合約)
- 系統會自動幫你套用最優惠的價格
-
擴大涵蓋範圍
- ✅ Cloud Run SKUs(新增)
- ✅ H3 VMs(新增)
- ✅ 更多 GPU 類型
-
BigQuery Export Schema 更新
- 新增
pricing.effective_price欄位 - 更清楚追蹤折扣來源
- 新增
影響與建議:
⚠️ 注意事項:
- 遷移後就回不去舊模式了
- 既有的 CUD 合約照樣有效,不受影響
- 建議在 2026/1/21 前先檢查一下 BigQuery Export 的查詢要不要調整
✅ 優點:
- 帳單更簡潔易懂
- 自動套用最優惠價格
- 支援更多資源類型
📚 官方文件:
CUD 購買建議
適合場景: ✅ 長期穩定工作負載(如:production database、web servers) ✅ 可預測的運算需求(如:每日定時批次作業) ✅ 需求成長穩定的專案
不適合場景: ❌ 需求波動大的開發/測試環境 ❌ 新創公司(業務不確定性高) ❌ Proof-of-Concept 專案
購買策略:
- 先看歷史用量:抓出過去 3-6 個月的基準用量(baseline usage)
- 保守一點估:CUD 承諾量抓基準用量的 70-80% 就好,留點 buffer
- 分散風險:分批買、每季檢討一次,別一口氣壓 3 年
- 混合搭配:CUD 顧基準用量,波峰用量交給 On-Demand + SUD
4.2 Sustained Use Discounts (SUD) - 持續使用折扣
運作機制
全自動,完全不用手動設定。Google 會自己追蹤每個資源的使用時數,單月用量一超過 25% 就開始打折。
折扣級距:
| 使用率 | 折扣幅度 | 範例(n1-standard-4, $146.08/月 On-Demand) |
|---|---|---|
| 0-25% | 0% | 182.5 小時 → $0 discount |
| 25-50% | 20% | 365 小時 → $29.22 discount |
| 50-75% | 40% | 547.5 小時 → $58.43 discount |
| 75-100% | 60% | 730 小時 → $87.65 discount |
最高折扣:
| 機器類型 | 最高 SUD |
|---|---|
| N1, M1, M2, GPU | 30% |
| N2, N2D, C2, C2D | 20% |
SUD vs CUD 差異比較
| 項目 | SUD | CUD |
|---|---|---|
| 承諾期 | 無 | 1-3 年 |
| 設定方式 | 自動 | 手動購買 |
| 最高折扣 | 30% | 70% |
| 適用場景 | 波動工作負載 | 穩定工作負載 |
| 退款政策 | N/A(隨時可停) | 有限制 |
| 疊加性 | ✅ 可疊加 CUD | ✅ 超額用量享 SUD |
黃金組合:CUD + SUD
策略:
- CUD 顧住基準用量(70-80% 需求)→ 拿 50-70% 折扣
- 波峰超出的部分 → 自動吃 SUD 的 20-30% 折扣
範例:
場景: 平日需 80 vCPU,假日需 120 vCPU
策略:
- 購買 CUD: 80 vCPU (55% off)
- 超額 40 vCPU → 享 SUD (30% off)
成本計算:
Pure On-Demand: $5,110/月
CUD (80 vCPU) + SUD (40 vCPU): $2,920/月
節省: $2,190/月 (43%)
4.3 Spot VM - 最高 91% 折扣的終極武器
什麼是 Spot VM?
Spot VM 是 Google 的「剩餘運算資源拍賣」機制。GCP 把閒置的運算容量用超低價賣給你,但保留隨時把它收回去的權利。
Spot VM vs Preemptible VM:
| 項目 | Preemptible VM | Spot VM |
|---|---|---|
| 發布時間 | 2015 | 2021(建議使用) |
| 最長執行時間 | 24 小時強制中斷 | 無 24 小時上限(但仍可能隨時被搶占) |
| 折扣幅度 | 最高 80% | 最高 91% |
| 定價模型 | 固定折扣 | 動態定價 |
| 可用性 | 舊版(仍可用) | 新版(官方推薦) |
適用場景
完美適配: ✅ 批量資料處理(ETL pipelines) ✅ 機器學習訓練(可 checkpoint) ✅ 影片渲染、圖片處理 ✅ CI/CD build agents ✅ 科學模擬運算
不適合: ❌ Production 關鍵服務(database、web server) ❌ 無法容忍中斷的即時系統 ❌ 沒有 checkpoint 機制的長時間運算
最佳實踐策略
1. 時段選擇
Spot VM 的可用性會隨時段差很多:
| 時段 | 可用性 | 建議 |
|---|---|---|
| 工作日 9am-6pm | 低(企業用量高) | ❌ 避免 |
| 工作日 6pm-9am | 中 | ⚠️ 可用但不穩定 |
| 週末 | 高(數據中心負載低) | ✅ 最佳時段 |
2. 區域選擇與價格比較
Spot VM 的價格會隨各區域的供需而不同:
# 查詢 Spot VM 價格(以 n1-standard-4 為例)
gcloud compute machine-types list \
--filter="name=n1-standard-4" \
--format="table(name,zone,guestCpus,memoryMb)"
# 比較不同區域 Spot 價格
# us-central1-a: $0.040/hour (91% off)
# us-east1-b: $0.055/hour (88% off)
# asia-east1-a: $0.065/hour (85% off)
建議:優先挑 us-central1(愛荷華)或 us-west1(奧勒岡),不只價格最低,可用性也高。
3. 設定最高價(Max Price)
設個上限,免得動態定價衝太高:
gcloud compute instances create my-spot-vm \
--zone=us-central1-a \
--machine-type=n1-standard-4 \
--provisioning-model=SPOT \
--instance-termination-action=DELETE \
--max-run-duration=3600s \
--maintenance-policy=TERMINATE
4. 處理中斷(Preemption Handling)
Spot VM 被收回前,GCP 會給你 30 秒的寬限期:
# 設定關機腳本(Shutdown script)
cat > shutdown.sh <<'EOF'
#!/bin/bash
echo "Spot VM is shutting down, saving state..."
# 保存進度到 Cloud Storage
gsutil cp /tmp/checkpoint.tar.gz gs://my-bucket/checkpoints/
# 通知 Slack
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"Spot VM terminated"}' \
$SLACK_WEBHOOK_URL
EOF
# 建立 Spot VM with shutdown script
gcloud compute instances create my-spot-vm \
--metadata-from-file shutdown-script=shutdown.sh \
--provisioning-model=SPOT
5. 與 GKE 整合(推薦)
用 GKE Autopilot 搭配 Spot VMs,就能自動做到容錯:
# GKE NodePool with Spot VMs
apiVersion: v1
kind: NodePool
metadata:
name: spot-pool
spec:
autoscaling:
enabled: true
minNodeCount: 0
maxNodeCount: 10
config:
machineType: n1-standard-4
preemptible: true # Spot VM
management:
autoRepair: true
autoUpgrade: true
GKE 會自動幫你處理:
- Spot VM 被收回時,自動把 pods 重新調度到其他 node
- On-Demand 跟 Spot VMs 混搭,確保服務不中斷
6. 實戰範例:ML 訓練成本優化
場景: 訓練 ResNet-50 模型,需 8 張 V100 GPU
成本比較:
On-Demand (8x V100):
- $2.48/hour x 8 = $19.84/hour
- 訓練 10 小時 = $198.40
Spot VM (8x V100):
- $0.74/hour x 8 = $5.92/hour (70% off)
- 預期中斷 2 次,總 12 小時 = $71.04
- 節省: $127.36 (64%)
實作:
- 每 30 分鐘儲存 checkpoint 到 Cloud Storage
- 被中斷時,從最新 checkpoint 恢復訓練
- 使用 GCS 的 Lifecycle Management,訓練完成後刪除舊 checkpoints
Spot VM 監控與告警
監控指標:
- Preemption Rate(中斷率):< 5% 為健康
- Average Availability(平均可用性):> 90% 為穩定
設定告警:
# Cloud Monitoring 告警:Spot VM 被中斷
gcloud alpha monitoring policies create \
--notification-channels=CHANNEL_ID \
--display-name="Spot VM Preemption Alert" \
--condition-display-name="Spot VM preempted" \
--condition-threshold-value=1 \
--condition-threshold-duration=60s
儲存與網路成本優化技巧
5.1 Storage Class 智慧選擇
四種 Storage Class 比較
| Class | 最低儲存時間 | 存取頻率 | 價格 ($/GB/月) | 讀取費用 ($/GB) |
|---|---|---|---|---|
| Standard | 無 | 頻繁 (每週多次) | $0.020 | $0 |
| Nearline | 30 天 | 不常 (每月 1 次) | $0.010 (50% off) | $0.01 |
| Coldline | 90 天 | 很少 (每季 1 次) | $0.004 (80% off) | $0.02 |
| Archive | 365 天 | 極少 (每年 1 次) | $0.0012 (94% off) | $0.05 |
選擇決策樹
是否每週存取?
├─ 是 → Standard Storage
└─ 否 → 是否每月存取?
├─ 是 → Nearline Storage
└─ 否 → 是否每季存取?
├─ 是 → Coldline Storage
└─ 否 → Archive Storage
Lifecycle Management(生命週期管理)
自動降級策略:
{
"lifecycle": {
"rule": [
{
"action": { "type": "SetStorageClass", "storageClass": "NEARLINE" },
"condition": { "age": 90 }
},
{
"action": { "type": "SetStorageClass", "storageClass": "COLDLINE" },
"condition": { "age": 365 }
},
{
"action": { "type": "Delete" },
"condition": { "age": 1825 }
}
]
}
}
範例:10 TB 備份資料,5 年總成本
| 策略 | 成本計算 | 總成本 |
|---|---|---|
| 全 Standard | 10 TB x $0.020 x 60 月 | $12,000 |
| Lifecycle 優化 | Year 1-2: Standard → $4,800 Year 3-5: Coldline → $1,440 | $6,240 |
| 節省 | $5,760 (48%) |
5.2 網路成本優化
三大網路成本來源
1. Egress(出站流量)計費
| 流量類型 | 價格 ($/GB) | 範例 |
|---|---|---|
| 同區域(Intra-zone) | $0 | VM → VM(同 zone) |
| 跨區域(Inter-region) | $0.01-$0.08 | us-central1 → asia-east1 |
| Internet Egress | $0.085-$0.23 | GCP → 使用者瀏覽器 |
優化策略:
- ✅ 將相關資源放在同一 zone(免費)
- ✅ 使用 Cloud CDN 減少 origin 流量
- ❌ 避免跨區域 database 查詢
2. Load Balancer 費用
| 類型 | 固定費用 | 流量費用 |
|---|---|---|
| HTTP(S) LB | $18/月 | $0.008/GB |
| TCP/UDP LB | $18/月 | $0.008/GB |
| Internal LB | $0 | $0.01/GB |
優化技巧:把多個 LB 合併成一個(用 URL maps 來分流)
3. Cloud CDN(內容傳遞網路)
成本比較:
場景: 1 TB 圖片每月被瀏覽 10,000 次
不使用 CDN:
- Internet Egress: 1 TB x 10,000 x $0.12 = $1,200
使用 CDN:
- Cache Hit 率 90%: 100 GB x 10,000 x $0.12 = $120
- CDN 費用: 900 GB x 10,000 x $0.04 = $360
- 總計: $480(節省 60%)
10 個省錢最佳實踐 Checklist
☑️ 1. 啟用 Billing Alerts(預算告警)
設定步驟:
# Step 1: 建立預算
gcloud billing budgets create \
--billing-account=BILLING_ACCOUNT_ID \
--display-name="Monthly Budget" \
--budget-amount=10000 \
--threshold-rule=percent=50 \
--threshold-rule=percent=90 \
--threshold-rule=percent=100
# Step 2: 設定通知
# 當達 50%/90%/100% 時發送 email 告警
進階:自動關閉超支資源
# Cloud Function triggered by Pub/Sub budget alert
def stop_billing_instances(event, context):
budget_notification = json.loads(base64.b64decode(event['data']).decode())
if budget_notification['costAmount'] > budget_notification['budgetAmount']:
# 停止所有非 production VM
for instance in compute.instances().list(project=PROJECT_ID).execute():
if 'production' not in instance['labels']:
compute.instances().stop(instance=instance['name']).execute()
☑️ 2. 使用 Resource Labels 追蹤成本
標籤策略:
必要標籤:
- team: backend / frontend / data
- env: production / staging / dev
- project: project-alpha / project-beta
- cost-center: engineering / marketing
範例: gcloud compute instances create my-vm \
--labels=team=backend,env=production,cost-center=engineering
成本分攤報表:
-- BigQuery: 按 team 分攤成本
SELECT
labels.value AS team,
SUM(cost) AS total_cost
FROM
`billing_export.gcp_billing_export_v1_XXXXX`
CROSS JOIN UNNEST(labels) AS labels
WHERE
labels.key = 'team'
AND DATE(usage_start_time) >= '2026-12-01'
GROUP BY team
ORDER BY total_cost DESC;
☑️ 3. 刪除未使用的資源
常見浪費:
| 資源 | 偵測方法 | 月費用浪費 |
|---|---|---|
| Idle VMs | CPU < 5% 持續 7 天 | $50-$500 |
| Orphaned Disks | 未附加到 VM | $0.04/GB/月 |
| Unused IPs | 未綁定 VM | $3.65/IP/月 |
| Old Snapshots | > 90 天未使用 | $0.026/GB/月 |
偵測腳本:
# 找出 CPU < 5% 的 VM(過去 7 天)
gcloud monitoring time-series list \
--filter='metric.type="compute.googleapis.com/instance/cpu/utilization"' \
--format=json | jq '.[] | select(.points[].value.doubleValue < 0.05)'
# 找出 orphaned disks
gcloud compute disks list --filter="NOT users:*" --format="table(name,sizeGb,zone)"
# 找出未使用的靜態 IP
gcloud compute addresses list --filter="status=RESERVED" --format="table(name,region)"
☑️ 4. Right-Sizing(合適化 VM 規格)
使用 Recommender API:
# 取得 VM resize 建議
gcloud recommender recommendations list \
--project=PROJECT_ID \
--location=us-central1 \
--recommender=google.compute.instance.MachineTypeRecommender \
--format=json
範例建議:
{
"name": "projects/123/locations/us-central1/recommenders/.../recommendations/abc",
"description": "Save costs by resizing this VM",
"primaryImpact": {
"category": "COST",
"costProjection": {
"cost": {
"units": "-45"
},
"duration": "2592000s"
}
},
"content": {
"operationGroups": [
{
"operations": [
{
"action": "replace",
"path": "/machineType",
"value": "zones/us-central1-a/machineTypes/n1-standard-2"
}
]
}
]
}
}
建議:n1-standard-4 → n1-standard-2,每月省 $45
☑️ 5. 啟用 Auto Shutdown(自動關機)
開發/測試環境排程:
# 使用 Cloud Scheduler + Cloud Functions
# scheduler.yaml
- name: stop-dev-vms
schedule: "0 19 * * 1-5" # 工作日 7pm
target:
httpTarget:
uri: https://us-central1-PROJECT.cloudfunctions.net/stopDevVMs
- name: start-dev-vms
schedule: "0 8 * * 1-5" # 工作日 8am
target:
httpTarget:
uri: https://us-central1-PROJECT.cloudfunctions.net/startDevVMs
成本節省:
- 開發環境每天運行 12 小時(8am-8pm)
- 週末完全關閉
- 節省:65% 運算成本
☑️ 6. 使用 Custom Machine Types
場景:需要高 RAM 但 CPU 不高的應用(如:in-memory cache)
成本比較:
| 選項 | vCPU | RAM | 月費用 |
|---|---|---|---|
| n1-highmem-8 | 8 | 52 GB | $392 |
| Custom | 4 | 52 GB | $280 |
| 節省 | $112 (29%) |
# 建立 custom machine type
gcloud compute instances create my-custom-vm \
--custom-cpu=4 \
--custom-memory=52GB \
--zone=us-central1-a
☑️ 7. 善用 Free Tier(免費額度)
Always Free(永久免費):
| 服務 | 免費額度 | 超額價格 |
|---|---|---|
| Compute Engine | 1x e2-micro VM(us-central1/us-west1/us-east1) | 標準價格 |
| Cloud Storage | 5 GB Standard | $0.020/GB/月 |
| Cloud Functions | 2M invocations/月 | $0.40/M invocations |
| Cloud Build | 120 分鐘/天 | $0.003/分鐘 |
策略:
- 個人專案用 e2-micro(免費)
- 測試環境用 Free Tier 搭配 Spot VM
- 小型 static website 可全免費(Cloud Storage + Cloud CDN)
📖 延伸閱讀:完整免費資源清單請參考 GCP 免費資源完全指南,含防爆帳單設定教學。
☑️ 8. 區域價格套利
價格差異:
| 區域 | n1-standard-4 | 價差 |
|---|---|---|
| us-central1(愛荷華) | $146.08/月 | Baseline |
| asia-northeast1(東京) | $191.03/月 | +31% |
| europe-west2(倫敦) | $180.48/月 | +24% |
策略:
- 非延遲敏感服務:選最便宜區域(us-central1)
- 需低延遲:選最近區域,但用 Spot VM 抵消價差
☑️ 9. 啟用 Organization Policies
限制資源建立:
# 禁止建立昂貴的 VM types
constraints/compute.restrictMachineTypes:
deniedValues:
- 'm1-ultramem-*'
- 'm2-ultramem-*'
constraints/compute.restrictRegions:
allowedValues:
- 'us-central1'
- 'us-west1'
強制標籤:
constraints/gcp.resourceLocations:
allowedValues:
- in:us-locations
- in:asia-locations
☑️ 10. 定期成本審查(Cost Review)
每週:
- 查看 Billing Reports(本週 vs 上週)
- 檢查異常增長的專案/服務
每月:
- 產生 Cost Summary Report
- 與預算對比,分析差異原因
- 更新 CUD/Spot VM 策略
每季:
- 全面資源盤點(使用 Asset Inventory)
- 評估新的折扣方案(GCP 常推新優惠)
- Benchmark 與 AWS/Azure 價格
成本異常告警設定教學
7.1 Budget Alerts(預算告警)
完整設定範例:
# 建立多層級預算告警
gcloud billing budgets create \
--billing-account=012345-6789AB-CDEFGH \
--display-name="Production Budget - 2026" \
--budget-amount=50000 \
--threshold-rule=percent=50,basis=CURRENT_SPEND \
--threshold-rule=percent=90,basis=CURRENT_SPEND \
--threshold-rule=percent=100,basis=FORECASTED_SPEND \
--all-updates-rule-monitoring-notification-channels=projects/PROJECT_ID/notificationChannels/CHANNEL_ID \
--all-updates-rule-pubsub-topic=projects/PROJECT_ID/topics/billing-alerts
告警策略:
| 閾值 | 基準 | 動作 |
|---|---|---|
| 50% | 實際消費 | Email 通知 team lead |
| 90% | 實際消費 | Email + Slack 通知所有人 |
| 100% | 預測消費 | Email + Slack + 自動停止 dev/staging VMs |
7.2 Anomaly Detection(異常偵測)
使用 Cloud Monitoring + BigQuery:
-- 偵測成本週增長 > 30% 的專案
WITH weekly_cost AS (
SELECT
project.name AS project_name,
DATE_TRUNC(DATE(usage_start_time), WEEK) AS week,
SUM(cost) AS total_cost
FROM `billing_export.gcp_billing_export_v1_XXXXX`
GROUP BY project_name, week
),
cost_change AS (
SELECT
project_name,
week,
total_cost,
LAG(total_cost) OVER (PARTITION BY project_name ORDER BY week) AS prev_week_cost,
(total_cost - LAG(total_cost) OVER (PARTITION BY project_name ORDER BY week))
/ NULLIF(LAG(total_cost) OVER (PARTITION BY project_name ORDER BY week), 0) AS growth_rate
FROM weekly_cost
)
SELECT
project_name,
week,
total_cost,
prev_week_cost,
ROUND(growth_rate * 100, 2) AS growth_percent
FROM cost_change
WHERE growth_rate > 0.3 -- 成長 > 30%
AND week = DATE_TRUNC(CURRENT_DATE(), WEEK)
ORDER BY growth_rate DESC;
自動化告警:
# Cloud Function: 每日執行上述查詢,發現異常時通知
import google.cloud.bigquery as bq
import slack_sdk
def detect_cost_anomaly(event, context):
client = bq.Client()
query = """...""" # 上述 SQL
results = client.query(query).result()
anomalies = [row for row in results if row.growth_percent > 30]
if anomalies:
slack_client = slack_sdk.WebClient(token=SLACK_TOKEN)
message = f"⚠️ Cost Anomaly Detected!\n"
for anomaly in anomalies:
message += f"- {anomaly.project_name}: +{anomaly.growth_percent}%\n"
slack_client.chat_postMessage(
channel="#billing-alerts",
text=message
)
總結與下一步行動
🚀 2026 年 GCP FinOps 新趨勢
進到行動計畫之前,先看看 2026 年 GCP 成本優化有哪些值得注意的趨勢:
1. AI 驅動的成本管理(AI-Driven FinOps)
- Gemini Cloud Assist:自然語言查詢成本數據
- AI 異常偵測:自動識別異常支出模式,預警風險
- 智能建議引擎:基於機器學習的優化建議(非規則導向)
2. GreenOps - 永續性與成本的結合
- Google Cloud 會提供 AI 工作負載的碳排放數據
- 優化成本時也一併把環境影響考慮進去
- 挑低碳區域可以省錢又減碳(像 us-central1 用的是風力發電)
3. FinOps-as-Code
- 使用 Terraform Providers 管理成本配置
- Infrastructure-as-Code 延伸至 Cost-as-Code
- 版本控制、自動化部署成本策略
4. Optimization Hub - 統一優化中心
- Google 推出 Optimization Hub,集中顯示所有成本優化建議
- 從 idle resources 到 right-sizing,一站式管理
- 與 FinOps Hub 2.0 整合,形成完整 FinOps 平台
5. 細緻化成本歸因(Cost Attribution)
- GKE Cost Allocation GA:精確追蹤 Kubernetes 成本(cluster、namespace、label 層級)
- App Hub 整合:按應用程式(而非資源)分析成本
- 更符合業務導向的成本視角
三大關鍵要點
1. 可見性是基礎(Visibility) 🔍
- 善用 Gemini Cloud Assist 快速查詢成本數據
- 啟用 FinOps Hub 2.0 偵測雲端浪費
- 強制所有資源加上 Labels,搭配 App Hub 按應用程式追蹤
2. 善用折扣組合拳(Discounts) 💰
- 2026/1/21 前準備 CUD Multiprice 遷移
- CUD 涵蓋基準用量(70-80% 需求)→ 50-70% 折扣
- 波峰超額用量自動享 SUD → 20-30% 折扣
- 容錯工作負載用 Spot VM → 最高 91% 折扣
- 組合技可達 60-80% 總成本節省
3. 自動化與 AI 是王道(Automation + AI) 🤖
- Gemini AI 自動分析報表並提供洞察
- Budget Alerts + Cloud Functions 自動關閉超支資源
- Optimization Hub 持續監控並推送優化建議
- Cloud Scheduler 自動關閉開發環境
成本優化成熟度模型
Level 1: 基礎(反應式)
- ✅ 啟用 Billing Alerts
- ✅ 每月查看帳單
- ✅ 刪除明顯未使用的資源
Level 2: 進階(主動式)
- ✅ 使用 Labels 追蹤成本
- ✅ 購買 CUD 涵蓋穩定工作負載
- ✅ 開發環境自動關機
- ✅ 定期 Right-Sizing
Level 3: 專家(預測式)
- ✅ BigQuery Export + BI Dashboard
- ✅ 異常偵測自動告警
- ✅ CUD + SUD + Spot VM 組合策略
- ✅ FinOps 團隊定期審查
- ✅ 成本納入架構設計考量
30 天行動計畫
Week 1: 建立可見性
- Day 1-2: 啟用 Billing Reports,分析現狀
- Day 3-4: 設定 Budget Alerts(50%/90%/100%)
- Day 5-7: 啟用 BigQuery Export,建立基礎 Dashboard
Week 2: 快速勝利(Quick Wins)
- Day 8-10: 刪除 orphaned disks、unused IPs、old snapshots
- Day 11-12: 停止 idle VMs(CPU < 5%)
- Day 13-14: 設定開發環境自動關機(省 50%+)
Week 3: 折扣策略
- Day 15-17: 分析過去 3 個月用量,規劃 CUD 購買
- Day 18-20: 識別容錯工作負載,遷移至 Spot VM
- Day 21: 驗證 SUD 自動套用情況
Week 4: 持續優化
- Day 22-24: 實施 Resource Labels 策略
- Day 25-27: 設定 Lifecycle Management(Storage)
- Day 28-30: 建立每週成本審查流程
預期成果:30 天內節省 30-50% 總成本
延伸學習資源
官方文件:
工具:
社群:
系列文章推薦
- 上一篇:ACE-301:企業上雲實戰:GCP 遷移評估與執行策略
- 下一篇:ACE-303:GCP 認證攻略:從 ACE 到 PCA 的完整學習路徑
- 相關主題:GCP-102:GCP 新手上路:環境設定與權限管理(預算告警設定)
ACE 考試重點整理
必背知識點
- CUD(Committed Use Discount):1 年約 37% 折扣,3 年約 55% 折扣,適合穩定工作負載
- SUD(Sustained Use Discount):自動折扣,用越多折越多(最高 30%),無需承諾
- Spot VM(原 Preemptible VM):最高 91% 折扣,但可能被中斷,適合批次/容錯工作
- Billing Export to BigQuery 可做細緻的成本分析
- Budget Alert 可設定預算閾值自動通知(50%/90%/100%)
- Labels 是成本歸屬的關鍵——用 label 標記團隊、環境、專案
常見陷阱題
Q:工作負載 24/7 穩定運行,如何最大程度省錢? A:3 年 CUD(55% 折扣)。Spot VM 不適合(會被中斷),SUD 折扣不夠深。
Q:批次資料處理工作可以容忍中斷和重試,如何省錢? A:Spot VM(最高 91% 折扣)。搭配 MIG 自動重建被中斷的實例。
Q:如何追蹤哪個團隊花了多少雲端費用? A:使用 Labels 標記資源(team=frontend),搭配 Billing Export to BigQuery 做分析。
Q:設定 Budget Alert 後,超過預算會自動停止資源嗎? A:不會。Budget Alert 只發通知,不會自動停止。要自動控制需搭配 Cloud Functions 處理 Pub/Sub 通知。