Điều tra sự cố ngừng hoạt động của GKE bằng Antigravity CLI và Tiện ích SRE, đồng thời xây dựng một báo cáo Post Mortem (Báo cáo sau sự cố) chi tiết

1. Giới thiệu

856ff52e60953a92.png

Lần cập nhật gần đây nhất: ngày 13 tháng 5 năm 2026

Điều tra sự cố ngừng hoạt động của GKE bằng Tiện ích SRE và xây dựng một báo cáo Post Mortem (Báo cáo sau sự cố) chi tiết

Chào mừng bạn đến với hội thảo SRE này, dành cho những người vận hành muốn thử nghiệm các công cụ SRE trên Google Cloud!

Lớp học lập trình này sẽ hướng dẫn bạn thực hiện việc này:

  1. Cài đặt một cụm GKE dựa trên microservices-demo nguồn mở nổi tiếng.
  2. Tạo sự cố bằng cách phá vỡ theo nhiều cách (một số cách nổi bật hơn, một số cách tinh tế hơn).
  3. Cài đặt và sử dụng Antigravity CLI (hoặc một công cụ tương tự) + Tiện ích SRE cho phần tiếp theo.
  4. Điều tra và hy vọng khắc phục được sự cố ngừng hoạt động.
  5. Tạo một bản đánh giá sau sự cố.
  6. Sử dụng kỹ năng vẽ biểu đồ để tạo biểu đồ có căn cứ, giúp người xem hiểu được điều gì đã xảy ra và thời điểm xảy ra.

Sau đây là cấu trúc từng bước của lớp học lập trình:

Sơ đồ cấu trúc lớp học lập trình

Mục tiêu của hội thảo này là:

  1. minh hoạ các chức năng của Tiện ích SRE và cho bạn biết những gì có thể thực hiện được với tiện ích này: thiết lập OneMCP, Safe Executor, điều tra, tạo báo cáo sau sự cố, biểu đồ và tóm tắt CSV.
  2. Dạy bạn các kỹ năng để điều tra tình huống của riêng bạn trên Google Cloud.

Giai đoạn 1: Thiết lập môi trường và mô phỏng sự cố ngừng hoạt động

Mục tiêu của cột mốc này là thiết lập một ứng dụng minh hoạ Kubernetes trên GKE Autopilot, cài đặt Antigravity CLI và kích hoạt nhân tạo các tình huống lỗi cụm GKE để mô phỏng các sự cố trong quá trình sản xuất.

Giai đoạn 2: Điều tra và giảm thiểu bằng tiện ích SRE

Sau khi phá vỡ môi trường, bạn sẽ sử dụng các công cụ CLI dựa trên tác nhân được trang bị Tiện ích SRE để khám phá cơ sở hạ tầng một cách có hệ thống, phân loại các vấn đề, triển khai mẫu thực thi an toàn cho các bản sửa lỗi và xác minh tình trạng của cụm.

Giai đoạn 3: Đánh giá sau sự cố và tạo biểu đồ

Sau khi giải quyết, bạn sẽ tạo một tài liệu hậu kiểm có cấu trúc về sự cố và sử dụng các API GCM (Google Cloud Monitoring) để lấy dữ liệu chỉ số thực, tạo biểu đồ trực quan để ghi lại thời điểm và cách thức xảy ra sự cố ngừng hoạt động.

Sản phẩm bạn sẽ tạo ra

Trong lớp học lập trình này, bạn sẽ điều tra và khắc phục tình trạng ngừng hoạt động của GKE bằng SRE Extension. Bạn sẽ:

  • Mô phỏng sự cố ngừng hoạt động của GKE bằng cách chặn chính sách mạng, triển khai canary có lỗi và cập nhật quy tắc tường lửa.
  • Phân loại sự cố ngừng hoạt động của cụm bằng cách sử dụng một trợ lý CLI dựa trên SRE Extension.
  • Triển khai các bước khắc phục một cách an toàn bằng cách sử dụng mẫu Safe Executor.
  • Tạo một tài liệu toàn diện về việc đánh giá sau sự cố.
  • Lập biểu đồ chỉ số sự cố bằng các truy vấn chuỗi thời gian của Google Cloud Monitoring.

Kiến thức bạn sẽ học được

  • Cách kiểm tra các tài nguyên và chính sách Kubernetes của GKE bằng kỹ năng SRE Extension.
  • Cách tận dụng mẫu Safe Executor để chạy các lệnh do tác nhân đề xuất với quy trình đánh giá rủi ro thích hợp.
  • Cách sử dụng kỹ năng monitoring-graphs để tạo biểu đồ dựa trên dữ liệu thực tế về các chỉ số ngay trong GCM.
  • Cách ghi lại các phát hiện về sự cố ở định dạng báo cáo sau sự cố có cấu trúc.

Bạn cần có

  • Một Dự án trên Google Cloud đã bật tính năng thanh toán.
  • Công cụ dòng lệnh: gcloud, kubectl, terraform.
  • Antigravity CLI được cài đặt cục bộ hoặc trong Cloud Shell.
  • Một IDE (ví dụ: vscode, IntelliJ, RubyMine hoặc Vim).

Tại sao nên dùng Tiện ích SRE + CLI dựa trên tác nhân?

Sự cố ngừng hoạt động trong quá trình sản xuất diễn ra nhanh chóng và cần có sự tương quan giữa nhiều hệ thống con (tài nguyên Kubernetes, mạng VPC, chỉ số Giám sát đám mây, quyền IAM). Tiện ích SRE cho phép các trợ lý CLI dựa trên tác nhân (chẳng hạn như Antigravity CLI) hoạt động như các phi công phụ tự quản, thực thi các sổ tay đã biên dịch trước, truy vấn các biểu đồ giám sát và đề xuất các biện pháp khắc phục an toàn trong khi vẫn giữ người vận hành là con người trong vòng lặp.

2. Thiết lập

Chọn một trong các lựa chọn sau: Thiết lập môi trường theo tốc độ của riêng bạn nếu bạn muốn chạy

lớp học lập trình trên máy của riêng bạn hoặc; Khởi động Cloud Shell nếu bạn muốn chạy lớp học lập trình này hoàn toàn trên đám mây.

Thiết lập môi trường theo tốc độ của riêng bạn

  1. Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn luôn có thể cập nhật thông tin này.
  • Mã dự án là mã duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi chế độ này sau bước này và chế độ này sẽ duy trì trong suốt thời gian diễn ra dự án.
  • Để bạn biết, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
  1. Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.

Khởi động Cloud Shell

Mặc dù có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên Cloud.

Trên Bảng điều khiển Google Cloud, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ ở trên cùng bên phải:

Kích hoạt Cloud Shell

Quá trình này chỉ mất vài phút để cung cấp và kết nối với môi trường. Khi quá trình này kết thúc, bạn sẽ thấy như sau:

Ảnh chụp màn hình cửa sổ dòng lệnh Google Cloud Shell cho thấy môi trường đã kết nối

Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nền tảng này cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện mọi thao tác trong lớp học lập trình này trong trình duyệt. Bạn không cần cài đặt bất cứ thứ gì.

3. Điều kiện tiên quyết (Cài đặt)

Đối với hướng dẫn này, bạn cần cài đặt:

1. Python và uv

pythonuv (trình quản lý gói cho Python). Đảm bảo bạn đã cài đặt uv:

$ curl -LsSf https://astral.sh/uv/install.sh | sh

Tại sao lại là uv? Mặc dù bạn có thể sử dụng trình quản lý Python mà bạn muốn, nhưng việc sử dụng uv sẽ đảm bảo thiết lập ENV/PATH cho Python sẽ giống nhau cho bạn và cho Antigravity CLI, vì vậy, trải nghiệm shell của bạn sẽ gần giống với Antigravity CLI. Ví dụ: nếu bạn sử dụng virtualenv, Antigravity CLI sẽ buộc phải thực hiện những việc như "source .env/venv/bin/activate && my-original-command" để mô phỏng môi trường của bạn.

2. Antigravity CLI (agy)

Để cài đặt Antigravity CLI chính thức (lệnh agy), hãy mở cửa sổ dòng lệnh rồi chạy trình cài đặt khởi động:

Đối với macOS và Linux:

$ curl -fsSL https://antigravity.google/cli/install.sh | bash

Đối với Windows (PowerShell):

irm https://antigravity.google/cli/install.ps1 | iex

Tập lệnh này sẽ tự động phát hiện hệ điều hành và cấu trúc của bạn, tải xuống

agy

tệp nhị phân và định cấu hình đường dẫn. Khởi động lại thiết bị đầu cuối hoặc tải lại cấu hình shell để các thay đổi có hiệu lực.

efade99623113f1.png

Xác thực

Bạn cần có Khoá API Google AI Studio.

Xuất khoá API:

export GEMINI_API_KEY="your-api-key"

Xác thực bằng gcloud:

export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION"
gcloud auth application-default login

Thiết lập môi trường làm việc và triển khai ứng dụng minh hoạ dịch vụ vi mô

Hãy sao chép ứng dụng microservices-demo và triển khai cơ sở hạ tầng cũng như ứng dụng thông qua terraform

Đây là thời điểm bạn có thể mở IDE (Visual Studio Code, IntelliJ, RubyMine, ..) và mở thư mục.

# 1. Find an empty directory, and download this repo.
git clone https://github.com/GoogleCloudPlatform/microservices-demo.git
cd microservices-demo/terraform

# 2. Update project ID to your gcloud project ID
sed -i 's/<project_id_here>/YOUR_ACTUAL_PROJECT_ID/g' terraform.tfvars

# 3. Deploy the microservices-demo application in GKE autopilot
# If there is a prompt answer yes and continue. This step can take up to 10 mins for provision gke autopilot cluster and deploy microservices-demo application
terraform init
terraform plan
terraform apply

# 4. Verify the IP address of frontend-service to access the online-boutique application
kubectl get service frontend-external | awk '{print $4}'

# 5. Find an empty directory , and download this repo.
git clone https://github.com/palladius/sre-testing-suite.git
cd sre-testing-suite/test-scenarios/microservices-demo-gke/breakage-scenarios

Để kiểm thử chế độ thiết lập, bạn có thể truy cập vào http://[IP ADDRESS] và tải ứng dụng online-boutique

Thiết lập môi trường làm việc cho sre-antigravity-cli-extension

# 1. Install the SRE Extension plugin globally
git clone https://github.com/gemini-cli-extensions/sre.git ~/.gemini/config/plugins/sre-extension

# 2. Launch the Antigravity CLI (agy)
agy  # This runs the CLI under your current breakage-scenarios folder.
# Login with your corporate or personal account when prompted.

# 3. Within the agy agent prompt, configure your MCP servers and GCP project
Use the gcp-mcp-setup skill to setup my GCP project "<gcp_project_id>" with email jane-doe-sre@credible-company.com

4. Bước 1: Mô phỏng sự cố ngừng hoạt động (Trường hợp bị gián đoạn)

Trong bước này, chúng ta sẽ cố tình làm hỏng cụm GKE đã triển khai để mô phỏng một sự cố thực tế trong quá trình sản xuất. Bạn có thể chọn một trong 3 trường hợp (hoặc thử cả 3 trường hợp theo trình tự):

Tình huống 1: Dịch vụ thanh toán bị chặn trên Mạng (Tiêu chuẩn/Tự động)

Tình huống này mô phỏng một kết nối bị gián đoạn giữa giao diện người dùng và dịch vụ thanh toán bằng cách áp dụng một NetworkPolicy Kubernetes đóng vai trò là "lỗ đen" lưu lượng truy cập.

  1. Chuyển đến thư mục kịch bản:
    cd breakage1-checkout
    
  2. Kích hoạt điểm ngắt:
    ./break.sh
    
    Thao tác này sẽ tạo một NetworkPolicy có tên là update-checkout-from-frontend trong không gian tên default. NetworkPolicy này từ chối lưu lượng truy cập đến checkoutservice, trừ phi lưu lượng truy cập đó đến từ một pod có nhãn app: frontend-checkout-test (không tồn tại).
  3. Thử mua các mặt hàng trên giao diện người dùng của Cửa hàng trực tuyến. Trang thanh toán sẽ bị treo hoặc hiển thị lỗi HTTP 500.

Tình huống 2: Phát hành Canary có lỗi (Chế độ lái tự động bằng Istio)

Tình huống này mô phỏng một quy trình triển khai không tốt, trong đó một phiên bản có lỗi của giao diện người dùng được triển khai thông qua quy trình triển khai Canary của Kubernetes.

  1. Chuyển đến thư mục kịch bản:
    cd ../breakage2-canary
    
  2. Kích hoạt điểm ngắt:
    ./break.sh
    
    Lệnh này triển khai một quy trình triển khai thử nghiệm frontend-canary có lỗi chính tả trong các biến môi trường: PRODUCT_CATALOG_SERVICE_ADDR được định cấu hình thành productcatalogservices:3550 thay vì productcatalogservice:3550.
  3. Tải trang chủ của giao diện người dùng. Đôi khi, yêu cầu sẽ không thành công (tuỳ thuộc vào trọng số định tuyến) vì dịch vụ canary không phân giải được danh mục sản phẩm.

Tình huống 3: Cụm tường lửa VPC bị chặn

Tình huống này mô phỏng một lỗi trong cấu hình tường lửa VPC, chặn tất cả lưu lượng truy cập đến cụm GKE.

  1. Chuyển đến thư mục kịch bản:
    cd ../breakage3-firewall
    
  2. Kích hoạt điểm ngắt:
    ./break.sh
    
    Lệnh này sẽ tạo một quy tắc tường lửa ở cấp VPC có tên là frontend-ingress-v2 với priority=1 và hành động DENY nhắm đến lưu lượng truy cập đến các cổng 80, 4438080.
  3. Trang web Cửa hàng trực tuyến sẽ hoàn toàn không truy cập được và các yêu cầu sẽ hết thời gian chờ.

5. Bước 2: Điều tra sự cố ngừng hoạt động bằng tiện ích SRE

Bây giờ, khi ứng dụng ngừng hoạt động, hãy bắt đầu điều tra bằng cách sử dụng trợ lý CLI (Antigravity CLI).

  1. Quay lại thư mục chính của các trường hợp hỏng và chạy trình trợ giúp CLI:
    cd ..
    agy
    
  2. Yêu cầu trợ lý thực hiện quy trình khám phá cơ sở hạ tầng và kiểm tra chẩn đoán:
    Investigate my GKE cluster for outages. Are all services healthy?
    
  3. Những việc mà Trợ lý có thể làm:
    • Thao tác này sẽ kích hoạt các kỹ năng investigation-entrypointgcp-playbooks.
    • Công cụ này liệt kê các nhóm, hoạt động triển khai và dịch vụ Kubernetes để xác định các mục tiêu không thành công.
    • Công cụ này kiểm tra các chính sách mạng (đối với Trường hợp 1) hoặc cấu hình triển khai (đối với Trường hợp 2) hoặc các quy tắc tường lửa (đối với Trường hợp 3).
  4. Đối với Tình huống 1, nhân viên hỗ trợ nên báo cáo: 🔴 Sự cố đã xác định: Một NetworkPolicy có tên là update-checkout-from-frontend đang cô lập các nhóm checkoutservice.
  5. Đối với Trường hợp 2, nhân viên hỗ trợ nên báo cáo: 🔴 Sự cố đã xác định: Hoạt động triển khai frontend-canary được định cấu hình bằng một điểm cuối dịch vụ không hợp lệ productcatalogservices:3550 thay vì productcatalogservice:3550.
  6. Đối với Tình huống 3, nhân viên hỗ trợ nên báo cáo: 🔴 Đã xác định được sự cố: Một quy tắc tường lửa VPC frontend-ingress-v2 đang từ chối lưu lượng truy cập vào trên các cổng 80, 4438080.

6. Bước 3: Giảm thiểu và khắc phục sự cố ngừng hoạt động

Hãy sử dụng mẫu Trình thực thi an toàn của CLI để khắc phục sự cố ngừng hoạt động.

  1. Yêu cầu trợ lý CLI đề xuất và áp dụng một bản sửa lỗi:
    Propose a fix for the outage and apply it.
    
  2. Safe Executor đang hoạt động:
    • Trước khi thực hiện các đề xuất về lệnh, Tiện ích SRE sẽ chạy một quy trình kiểm tra an toàn bằng cách sử dụng kỹ năng safe-sre-investigator.
    • Công cụ này sẽ cho bạn biết chính xác lệnh mà công cụ dự định chạy và đánh giá mức độ rủi ro (ví dụ: Thấp, Trung bình, Cao).
    • Đối với Trường hợp 1, hệ thống sẽ đề xuất:
      kubectl delete networkpolicy update-checkout-from-frontend
      
    • Đối với Trường hợp 2, hệ thống sẽ đề xuất:
      kubectl delete deployment frontend-canary
      
    • Đối với Trường hợp 3, hệ thống sẽ đề xuất:
      gcloud compute firewall-rules delete frontend-ingress-v2 --quiet
      
  3. Xác nhận việc thực thi lệnh khi CLI nhắc bạn.
  4. Xác minh rằng trang web đã hoạt động trở lại và hoạt động bình thường bằng cách làm mới trang chủ của Cửa hàng trực tuyến.
  5. Trong shell, bạn có thể chạy tập lệnh kiểm tra tình huống tương ứng để xác minh tình trạng:
    ./breakage1-checkout/check.sh
    # or ./breakage2-canary/check.sh
    # or ./breakage3-firewall/check.sh
    

7. Bước 4: Tạo báo cáo sau sự cố

Một phần thiết yếu trong vòng đời của SRE là ghi lại sự cố để nhóm có thể rút ra bài học từ đó. Hãy tự động hoá việc này bằng kỹ năng postmortem-create.

  1. Trong trợ lý CLI, hãy yêu cầu viết tài liệu phân tích sau sự cố:
    Create a postmortem for the checkout service network policy outage.
    
  2. Nhân viên hỗ trợ sẽ thu thập thông tin chi tiết về:
    • Thời gian bắt đầu của sự cố (lấy từ nhật ký/lịch sử lệnh CLI).
    • Nguyên nhân gốc (NetworkPolicy chặn).
    • Các biện pháp đã thực hiện để giảm thiểu vấn đề này.
  3. Thao tác này sẽ ghi một tệp Markdown mới có tên là postmortem.md vào không gian làm việc của bạn.
  4. Mở postmortem.md để xem thông tin chi tiết. Bạn sẽ thấy các phần như:
    • Tóm tắt sự cố
    • Dòng thời gian của các sự kiện
    • Phân tích nguyên nhân gốc rễ (RCA)
    • Mục hành động / Biện pháp phòng ngừa

8. Bước 5: Thêm biểu đồ chỉ số dựa trên dữ liệu thực tế

Để báo cáo sau sự cố được chuyên nghiệp, chúng ta cần bằng chứng trực quan về sự cố. Chúng ta sẽ sử dụng kỹ năng monitoring-graphs để tìm nạp dữ liệu chuỗi thời gian từ Google Cloud Monitoring (GCM) và tạo một biểu đồ PNG cho thấy mức tăng đột biến của lỗi.

  1. Yêu cầu trình trợ giúp CLI tạo biểu đồ và thêm biểu đồ đó vào báo cáo sau sự cố:
    Query GCM for frontend HTTP request error rates over the last 1 hour, generate a line chart, and embed it into postmortem.md.
    
  2. Cơ chế hoạt động:
    • Tác nhân gọi tập lệnh Python monitoring-graphs để truy vấn Cloud Monitoring.
    • Thành phần này tìm nạp các chỉ số (ví dụ: kubernetes.io/container/restart_count hoặc loadbalancing.googleapis.com/https/request_count).
    • Thao tác này vẽ biểu đồ bằng cách sử dụng matplotlib và lưu biểu đồ dưới dạng incident_metrics.png.
    • Thao tác này sẽ cập nhật tệp postmortem.md bằng cách chèn một đường liên kết của hình ảnh:
      ![Incident Metric Graph](incident_metrics.png)
      
  3. Mở tệp incident_metrics.png đã tạo để xem biểu đồ minh hoạ chính xác thời điểm cụm bị ngừng hoạt động và thời điểm lưu lượng truy cập trở lại bình thường.

9. Bước 6: Dọn dẹp

Để đảm bảo tài khoản Google Cloud của bạn không phát sinh các khoản phí không cần thiết, hãy dọn dẹp cơ sở hạ tầng đã triển khai.

  1. Chuyển đến thư mục terraform:
    cd ../../microservices-demo/terraform
    
  2. Chạy lệnh huỷ:
    terraform destroy -auto-approve
    
  3. Xác minh rằng bạn đã xoá thành công tất cả tài nguyên GKE trên GCP.

10. Xin chúc mừng!

Bạn đã hoàn tất Lớp học lập trình về điều tra sự cố và gián đoạn của Cụm GKE!

Những nội dung bạn đã tìm hiểu:

  • Triển khai bản minh hoạ vi dịch vụ Online Boutique gồm 10 cấp vào GKE.
  • Mô phỏng 3 sự cố SRE trong thế giới thực (từ chối chính sách mạng, triển khai canary có lỗi, từ chối quy tắc tường lửa VPC).
  • Sử dụng Tiện ích SRE cho Antigravity CLI để phát hiện và chẩn đoán sự cố ngừng hoạt động.
  • Tận dụng mẫu Safe Executor để xem xét và thực thi các lệnh khắc phục.
  • Tạo một bản đánh giá sau sự cố chuyên nghiệp bằng Markdown.
  • Truy vấn các chỉ số của Cloud Monitoring để tự động tạo và nhúng một biểu đồ sự cố có cơ sở.

Để biết thêm thông tin về cách mở rộng tác nhân CLI, hãy xem trang GitHub về tiện ích SRE.