examlab .net 用最有效率的方法,考取最有價值的證照
本篇導覽 約 19 分鐘

監控、日誌與警報:全棧可視化

3,620 字 · 約 19 分鐘閱讀 ·

為 ACE 考試掌握 Google Cloud 的維運套件 (Operations Suite)。了解 Cloud Monitoring、Cloud Logging 以及 Ops Agent。

立即做 20 題練習 → 免費 · 不用註冊 · ACE

理解 Google Cloud 維運套件 (Operations Suite)

Google Cloud 維運套件 (Operations Suite,以前稱為 Stackdriver) 是 Google Cloud 的監控、日誌記錄和診斷解決方案。對於 Associate Cloud Engineer (ACE) 來說,理解如何觀察系統狀態並在出現問題時自動觸發警報,是確保生產環境穩定運行的關鍵。

一個健康的雲端環境不僅需要執行程式碼,還需要具備「可觀測性」(Observability)。這包括三大支柱:指標 (Metrics)日誌 (Logs)追蹤 (Trace)

白話文解釋

1. 醫院的監護儀與病歷 (瑞士刀類比)

  • Cloud Monitoring (指標):就像病床旁的心電圖機。它即時顯示心跳、血壓(CPU、記憶體使用率)。如果心跳停了,機器會發出警報聲(警報,Alerting)。
  • Cloud Logging (日誌):就像醫生的病歷本。它詳細記錄了病人什麼時候吃了藥、什麼時候做了檢查。當病人不舒服時,醫生會去翻閱病歷(日誌分析)查找原因。
  • 運作時間檢查 (Uptime Checks): 就像護士每小時巡房一次,確認病人還有呼吸。

2. 飛機的黑盒子 (工地類比)

  • 日誌 (Logs): 黑盒子記錄的所有飛行參數和駕駛艙對話。如果飛機出事(系統崩潰),調查員會解析黑盒子資料。
  • 指標 (Metrics): 儀表板上的高度計和油量表。機師隨時看著它們來確保飛行安全。
  • Ops Agent: 就像是在引擎內部安裝的額外感測器,能提供比機殼外部觀測更深入的資料。

3. 公路上的監視器 (交通號誌類比)

  • Cloud Logging: 監視器拍下的每輛車的錄影紀錄。
  • 資訊主頁 (Dashboards): 交通指揮中心的電視牆。同時顯示不同路段的流量和車速趨勢。
  • 通知管道 (Notification Channels): 當車禍發生時,系統自動發送簡訊給警察(Slack, Email, PagerDuty)。

Cloud Monitoring:資訊主頁與自定義指標

Cloud Monitoring 負責收集「數據指標」。

資訊主頁 (Dashboards)

資訊主頁 (Dashboards) 讓你將來自不同服務(VM, GKE, SQL)的指標視覺化。GCP 提供預設的資訊主頁,你也可以根據業務需求建立自定義資訊主頁,將關鍵效能指標 (KPIs) 集中呈現。 Source ↗

自定義指標 (Custom Metrics)

如果 Google Cloud 預設的指標(如 CPU)不夠用,你可以定義自己的指標。例如「每秒處理的訂單數」或「用戶註冊成功率」。

設定警報與運作時間檢查

這是實現自動化運維的核心。

警報政策 (Alerting Policies)

警報政策定義了什麼時候該發送通知。

  • 條件 (Condition): 例如「CPU 使用率連續 5 分鐘超過 80%」。
  • 通知管道 (Notification Channels): Email, Slack, PagerDuty, Webhooks。
  • 事件 (Incident): 警報觸發後會產生一個事件,直到問題解決為止。

運作時間檢查 (Uptime Checks)

運作時間檢查 (Uptime Checks) 透過從全球多個地點發送請求到你的服務(URL 或 IP),來確認服務是否可用。這能發現負載平衡器故障或區域性網路問題。 Source ↗

Cloud Logging:查看與過濾日誌

Cloud Logging 是一個強大的、中心化的日誌存儲與查詢系統。

日誌瀏覽器 (Logs Explorer)

使用 日誌查詢語言 (Logging Query Language, LQL) 進行精確查詢。

resource.type="gce_instance"
severity>=ERROR
textPayload:"Connection refused"

日誌接收器 (Log Sinks,匯出)

預設情況下,日誌只保留 30 天。如果你需要長期保留(如合規需求)或進行大數據分析,你需要建立日誌接收器 (Log Sink),將日誌匯出到 Cloud Storage、BigQuery 或 Pub/Sub。 Source ↗

當 ACE 情境要求 Cloud Logging 保存超過預設的 30 天時,答案就是建立 Log Sink:匯出到 BigQuery 做 SQL 分析、Cloud Storage 做長期低成本封存、或 Pub/Sub 串流到 SIEM。雖然可以直接延長 Log Bucket 的保存期限,但合規場景下使用 GCS sink 搭配 Archive 儲存類別通常更便宜。 Source ↗

不要假設「Audit Logs 預設永久保留」。Admin Activity audit logs 免費保留 400 天,但 Data Access audit logs 預設只保留 30 天 — 如果考題要求多年期的稽核日誌保留,你仍然必須像處理一般日誌一樣,建立 Log Sink 匯出到 Cloud Storage 或 BigQuery。 Source ↗

安裝與使用 Ops Agent

對於 Compute Engine VM,預設只能看到「外部」指標(如網路流量、虛擬機磁碟 I/O)。

Ops Agent 是安裝在 VM 內部的代理程式。它能收集「內部」指標(如作業系統層級的記憶體使用率、程序列表)以及應用程式日誌。在 ACE 考試中,如果你需要監控 VM 的記憶體 (Memory) 消耗,答案通常是安裝 Ops Agent。 Source ↗

雲端診斷:Trace, Debug 與 Error Reporting

  • Cloud Trace: 追蹤請求在分散式系統中流轉的延遲。
  • Cloud Debugger (已歸檔,改用 Snapshot Debugging): 在不停止服務的情況下,檢查運行中程式碼的狀態。
  • Error Reporting: 自動彙整應用程式崩潰訊息,並將重複的錯誤歸類。

透過 gcloud CLI 管理維運

# 安裝 Ops Agent (經由指令)
curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --also-install

# 查看日誌
gcloud logging read "resource.type=gce_instance AND severity>=ERROR" --limit 10

# 建立日誌指標
gcloud logging metrics create my-error-metric \
    --description="Count errors in my app" \
    --log-filter="textPayload:Error"

指令 gcloud logging read 讓你直接從終端機查詢日誌,適合快速除錯或寫腳本。配合 --limit 與標準的 Logging Query Language 過濾條件(例如 resource.type=gce_instance AND severity>=ERROR)能精準鎖定問題。 Source ↗

監控最佳實踐

  1. 定義 SLO (服務水準目標):不要對所有事發送警報,只對會影響用戶體驗的事發送警報。
  2. 避免警報疲勞 (Alert Fatigue):精確設定門檻值,減少無效的通知。
  3. 結構化日誌 (Structured Logging):盡量將日誌以 JSON 格式輸出,方便後續查詢和過濾。
  4. 日誌型指標 (Log-based Metrics):將特定的日誌(如 404 錯誤)轉換成指標,並為其設定警報。

ACE 考試的常見場景

  • 情境:你發現某台 VM 的記憶體快滿了,但在 Cloud Monitoring 資訊主頁上看不到記憶體指標。
    • 解決方案:在 VM 上安裝 Ops Agent
  • 情境:你需要將所有 API 呼叫記錄保存 7 年。
    • 解決方案:建立 日誌接收器 (Log Sink) 並匯出到 Cloud Storage,配合 封存 (Archive) 儲存類別。
  • 情境:你希望當網站打不開時,維運團隊能立刻收到 Slack 訊息。
    • 解決方案:建立 運作時間檢查 (Uptime Check) 並設定 警報政策 (Alerting Policy) 指向 Slack 頻道。

常見問題 (FAQ)

Q1: Cloud Monitoring 的資料保留多久? 答:大部分指標資料保留 6 星期,部分資料可能保留更久。如果需要更久,需匯出到 BigQuery。

Q2: 什麼是日誌型指標 (Log-based Metrics)? 答:這讓你可以根據日誌內容建立指標。例如「日誌中出現『Login Failed』的次數」。

Q3: Ops Agent 與舊的舊版監控/日誌代理程式 (Legacy Monitoring/Logging Agent) 有什麼區別? 答:Ops Agent 將兩者整合為一個更高效的代理程式,目前是 Google 唯一推薦的方案。

Q4: 我可以監控非 Google Cloud 的伺服器嗎? 答:可以,透過安裝 Ops Agent,你可以監控 AWS 或本地資料中心 (IDC) 的伺服器。

Q5: Error Reporting 支援哪些語言? 答:Java, Python, Node.js, Go, PHP, Ruby 等主流語言。

ACE 總結清單

  • 明白 Ops Agent 是獲取記憶體 (Memory) 指標的唯一途徑。
  • 掌握日誌接收器 (Log Sink) 的匯出目標:GCS (封存)、BigQuery (分析)、Pub/Sub (串流)。
  • 了解運作時間檢查 (Uptime Check) 是外部觀測服務可用性的工具。
  • 知道如何使用日誌過濾器查找特定錯誤。
  • 理解警報通知管道的設定流程。

官方資料來源

更多 ACE 主題