跳至主要內容
ESC
ACE 職涯與認證 — 第 2/5 篇

GCP 成本優化完全指南 2026:帳單分析與省錢技巧

ACE-302

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 總預算)
Compute45%$4,500
Storage20%$2,000
Network25%$2,500
Other10%$1,000

⚠️ 警告:Network 佔比超過 30%,通常代表架構出了問題,該回頭檢查是不是太多資源跨區域了。

帳單分析實戰:Billing Reports 完整教學

3.1 四大 Billing Reports 類型

Report 1: Reports Page(基礎報表)

存取路徑

Google Cloud Console → Billing → Reports

可回答的問題

  • 本月支出趨勢如何?
  • 上個月哪個專案花費最多?
  • 哪個 GCP 服務成本最高?

核心功能

  1. 時間範圍選擇

    • 本月迄今(MTD)
    • 上個月
    • 過去 3 個月
    • 自訂日期範圍
  2. 分組維度(Group by)

    • Project(專案)
    • Service(服務,如 Compute Engine、Cloud Storage)
    • SKU(具體資源,如 n1-standard-4)
    • Location(區域)
    • Label(自訂標籤)
  3. 篩選器(Filters)

    • 依專案、服務、標籤篩選
    • 排除特定項目
  4. 圖表類型

    • 堆疊柱狀圖(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 在不同區域的價格

RegionvCPU/hourRAM GB/hourTotal/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 分析成本:

核心能力

  1. 自然語言查詢:用對話方式建立成本報表

    • 「顯示本月 Compute Engine 成本最高的 5 個專案」
    • 「比較上週與本週的 Cloud Storage 費用」
  2. AI 報表摘要:自動分析報表並提供關鍵洞察

    • 識別異常支出模式
    • 建議成本優化機會
  3. 報表建議:推薦適合的報表配置

    • 根據歷史查詢模式
    • 自動篩選相關維度

使用範例

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 日:所有既有帳戶自動遷移(不可逆)

重大變更

  1. 折扣顯示方式改變

    • 舊模式:On-Demand 價格 + Credits(折扣以抵免額度形式)
    • 新模式:直接顯示折扣後價格(更透明)
    舊帳單:
      Compute Engine: $1,000
      CUD Credits: -$550
      Total: $450
    
    新帳單:
      Compute Engine (CUD discounted): $450
      Total: $450
  2. Multiprice 支援

    • 同一個 SKU 可以有多個價格(像是 On-Demand、CUD、客製化合約)
    • 系統會自動幫你套用最優惠的價格
  3. 擴大涵蓋範圍

    • ✅ Cloud Run SKUs(新增)
    • ✅ H3 VMs(新增)
    • ✅ 更多 GPU 類型
  4. BigQuery Export Schema 更新

    • 新增 pricing.effective_price 欄位
    • 更清楚追蹤折扣來源

影響與建議

⚠️ 注意事項

  • 遷移後就回不去舊模式了
  • 既有的 CUD 合約照樣有效,不受影響
  • 建議在 2026/1/21 前先檢查一下 BigQuery Export 的查詢要不要調整

優點

  • 帳單更簡潔易懂
  • 自動套用最優惠價格
  • 支援更多資源類型

📚 官方文件

CUD 購買建議

適合場景: ✅ 長期穩定工作負載(如:production database、web servers) ✅ 可預測的運算需求(如:每日定時批次作業) ✅ 需求成長穩定的專案

不適合場景: ❌ 需求波動大的開發/測試環境 ❌ 新創公司(業務不確定性高) ❌ Proof-of-Concept 專案

購買策略

  1. 先看歷史用量:抓出過去 3-6 個月的基準用量(baseline usage)
  2. 保守一點估:CUD 承諾量抓基準用量的 70-80% 就好,留點 buffer
  3. 分散風險:分批買、每季檢討一次,別一口氣壓 3 年
  4. 混合搭配: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, GPU30%
N2, N2D, C2, C2D20%

SUD vs CUD 差異比較

項目SUDCUD
承諾期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 VMSpot VM
發布時間20152021(建議使用)
最長執行時間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
Nearline30 天不常 (每月 1 次)$0.010 (50% off)$0.01
Coldline90 天很少 (每季 1 次)$0.004 (80% off)$0.02
Archive365 天極少 (每年 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 年總成本

策略成本計算總成本
全 Standard10 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)$0VM → VM(同 zone)
跨區域(Inter-region)$0.01-$0.08us-central1 → asia-east1
Internet Egress$0.085-$0.23GCP → 使用者瀏覽器

優化策略

  • ✅ 將相關資源放在同一 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 VMsCPU < 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)

成本比較

選項vCPURAM月費用
n1-highmem-8852 GB$392
Custom452 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 Engine1x e2-micro VM(us-central1/us-west1/us-east1)標準價格
Cloud Storage5 GB Standard$0.020/GB/月
Cloud Functions2M invocations/月$0.40/M invocations
Cloud Build120 分鐘/天$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 考試重點整理

必背知識點

  1. CUD(Committed Use Discount):1 年約 37% 折扣,3 年約 55% 折扣,適合穩定工作負載
  2. SUD(Sustained Use Discount):自動折扣,用越多折越多(最高 30%),無需承諾
  3. Spot VM(原 Preemptible VM):最高 91% 折扣,但可能被中斷,適合批次/容錯工作
  4. Billing Export to BigQuery 可做細緻的成本分析
  5. Budget Alert 可設定預算閾值自動通知(50%/90%/100%)
  6. 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 通知。

ACE 職涯與認證 — 2/5 完成 查看系列全覽 →

留言討論

徽章解鎖!