ตรวจสอบการหยุดทำงานของ GKE ด้วย Antigravity CLI และส่วนขยาย SRE แล้วสร้างรายงานการวิเคราะห์สาเหตุที่สวยงาม

1. บทนำ

856ff52e60953a92.png

Last Updated: 2026-05-13

ตรวจสอบการหยุดทำงานของ GKE ด้วยส่วนขยาย SRE และสร้างรายงานการวิเคราะห์สาเหตุที่สวยงาม

ยินดีต้อนรับสู่เวิร์กช็อป SRE สำหรับผู้ปฏิบัติงานที่ต้องการทดลองใช้ SRE Harness ใน Google Cloud

Codelab นี้จะแนะนำคุณเกี่ยวกับสิ่งต่อไปนี้

  1. ติดตั้งคลัสเตอร์ GKE โดยอิงตามmicroservices-demo แบบโอเพนซอร์สที่รู้จักกันดี
  2. สร้างการหยุดทำงานโดยทำให้เกิดการหยุดทำงานในรูปแบบต่างๆ (บางรูปแบบเห็นได้ชัดเจนกว่า บางรูปแบบก็ซับซ้อนกว่า)
  3. ติดตั้งและใช้ Antigravity CLI (หรือ Harness ที่คล้ายกัน) + ส่วนขยาย SRE สำหรับส่วนต่อไปนี้
  4. ตรวจสอบและแก้ไขการหยุดทำงาน
  5. สร้างรายงานหลังการดำเนินการ
  6. ใช้ทักษะการสร้างกราฟเพื่อสร้างกราฟที่อิงตามข้อมูลจริง ซึ่งจะช่วยให้ผู้ชมเข้าใจสิ่งที่เกิดขึ้นและเวลาที่เกิดเหตุการณ์

โครงสร้างแบบทีละขั้นตอนของ Codelab มีดังนี้

แผนภาพโครงสร้าง Codelab

เป้าหมายของเวิร์กช็อปนี้คือ

  1. สาธิตความสามารถของส่วนขยาย SRE และแสดงให้เห็นถึงสิ่งที่คุณทำได้ด้วยส่วนขยายนี้ ได้แก่ การตั้งค่า OneMCP, Safe Executor, การตรวจสอบ, การสร้างรายงานหลังเกิดเหตุ, กราฟ และข้อมูลสรุป CSV
  2. สอนทักษะในการตรวจสอบสถานการณ์ Google Cloud ของคุณเอง

เหตุการณ์สำคัญ 1: การตั้งค่าสภาพแวดล้อมและการจำลองการหยุดทำงาน

เป้าหมายของเหตุการณ์สำคัญนี้คือการตั้งค่าแอปพลิเคชันเดโม Kubernetes ใน GKE Autopilot, ติดตั้ง Antigravity CLI และทริกเกอร์สถานการณ์คลัสเตอร์ GKE เสียหายโดยจำลองเพื่อจำลองเหตุการณ์ที่เกิดขึ้นจริง

เหตุการณ์สำคัญที่ 2: การตรวจสอบและการลดผลกระทบด้วยส่วนขยาย SRE

หลังจากทำลายสภาพแวดล้อมแล้ว คุณจะใช้เครื่องมือ CLI แบบเอเจนต์ที่ติดตั้งส่วนขยาย SRE เพื่อค้นพบโครงสร้างพื้นฐานอย่างเป็นระบบ จัดเรียงปัญหาตามลำดับความสำคัญ ใช้รูปแบบการดำเนินการที่ปลอดภัยสำหรับการแก้ไข และตรวจสอบสถานะคลัสเตอร์

เหตุการณ์สำคัญ 3: การวิเคราะห์หลังการดำเนินการและสร้างกราฟ

เมื่อแก้ไขแล้ว คุณจะสร้างเอกสารสรุปเหตุการณ์ที่มีโครงสร้างและใช้ GCM (Google Cloud Monitoring) API เพื่อดึงข้อมูลเมตริกจริง สร้างแผนภูมิภาพเพื่อบันทึกเวลาและวิธีที่เกิดการหยุดทำงาน

สิ่งที่คุณจะสร้าง

ใน Codelab นี้ คุณจะได้ตรวจสอบและแก้ไขการหยุดทำงานของ GKE โดยใช้ส่วนขยาย SRE คุณจะได้รับสิ่งต่อไปนี้

  • จำลองการหยุดทำงานของ GKE โดยใช้การบล็อกนโยบายเครือข่าย การติดตั้งใช้งาน Canary ที่มีข้อบกพร่อง และการอัปเดตกฎไฟร์วอลล์
  • จัดลำดับความสำคัญของคลัสเตอร์ที่หยุดทำงานโดยใช้ผู้ช่วย CLI ที่ขับเคลื่อนโดยส่วนขยาย SRE
  • ใช้ขั้นตอนการแก้ไขอย่างปลอดภัยโดยใช้รูปแบบ Safe Executor
  • สร้างเอกสารสรุปหลังการตรวจสอบที่ครอบคลุม
  • สร้างกราฟเมตริกเหตุการณ์โดยใช้การค้นหาอนุกรมเวลาของ Google Cloud Monitoring

สิ่งที่คุณจะได้เรียนรู้

  • วิธีตรวจสอบทรัพยากรและนโยบาย Kubernetes ของ GKE โดยใช้ทักษะส่วนขยาย SRE
  • วิธีใช้ประโยชน์จากรูปแบบ Safe Executor เพื่อเรียกใช้คำสั่งที่เอเจนต์แนะนำพร้อมการประเมินความเสี่ยงที่เหมาะสม
  • วิธีใช้ทักษะ monitoring-graphs เพื่อสร้างแผนภูมิเมตริกที่อิงตามข้อมูลจริงจาก GCM โดยตรง
  • วิธีบันทึกผลการสืบค้นเหตุการณ์ในรูปแบบการวิเคราะห์หลังเกิดเหตุแบบมีโครงสร้าง

สิ่งที่คุณต้องมี

  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
  • เครื่องมือบรรทัดคำสั่ง: gcloud, kubectl, terraform
  • ติดตั้ง Antigravity CLI ในเครื่องหรือใน Cloud Shell
  • IDE (เช่น vscode, IntelliJ, RubyMine หรือ Vim)

เหตุใดจึงควรใช้ส่วนขยาย SRE + Agentic CLI

การหยุดทำงานของระบบที่ใช้งานจริงเกิดขึ้นอย่างรวดเร็วและต้องมีการเชื่อมโยงในหลายระบบย่อย (ทรัพยากร Kubernetes, เครือข่าย VPC, เมตริก Cloud Monitoring, สิทธิ์ IAM) ส่วนขยาย SRE ช่วยให้ผู้ช่วย CLI แบบ Agent (เช่น Antigravity CLI) ทำหน้าที่เป็นผู้ช่วยนักบินร่วมแบบอัตโนมัติได้ โดยจะดำเนินการตาม Playbook ที่คอมไพล์ไว้ล่วงหน้า ค้นหากราฟการตรวจสอบ และแนะนำการแก้ไขที่ปลอดภัยในขณะที่ยังคงให้ผู้ปฏิบัติงานที่เป็นมนุษย์อยู่ในวงจร

2. การเริ่มต้นใช้งาน

เลือกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้ การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง หากต้องการเรียกใช้

Codelab บนเครื่องของคุณเอง หรือเริ่ม Cloud Shell หากต้องการเรียกใช้ Codelab นี้ในระบบคลาวด์ทั้งหมด

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

  1. ลงชื่อเข้าใช้ คอนโซล Google Cloud แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณอัปเดตได้ทุกเมื่อ
  • รหัสโปรเจ็กต์จะไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือคุณอาจลองใช้ชื่อของคุณเองและดูว่ามีชื่อนั้นหรือไม่ คุณจะเปลี่ยนแปลงรหัสนี้หลังจากขั้นตอนนี้ไม่ได้ และรหัสจะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์
  • โปรดทราบว่ายังมีค่าที่ 3 ซึ่งคือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
  1. จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้จะไม่เสียค่าใช้จ่ายมากนัก หรืออาจไม่เสียเลย หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD

เริ่มต้น Cloud Shell

แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลในแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

จาก คอนโซล Google Cloud ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

เปิดใช้งาน Cloud Shell

การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อเสร็จแล้ว คุณควรเห็นข้อความคล้ายกับตัวอย่างต่อไปนี้

ภาพหน้าจอของเทอร์มินัล Google Cloud Shell ที่แสดงว่าสภาพแวดล้อมเชื่อมต่อแล้ว

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานทั้งหมดใน Codelab นี้ได้ภายในเบราว์เซอร์ คุณไม่จำเป็นต้องติดตั้งอะไร

3. สิ่งที่ต้องดำเนินการก่อน (การติดตั้ง)

สำหรับบทแนะนำนี้ คุณต้องติดตั้งสิ่งต่อไปนี้

1. Python และ uv

python และ uv (เครื่องมือจัดการแพ็กเกจสำหรับ Python) ตรวจสอบว่าคุณได้ติดตั้ง uv แล้ว

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

ทำไมต้อง uv แม้ว่าคุณจะใช้ตัวจัดการ Python ใดก็ได้ตามต้องการ แต่การใช้ uv จะช่วยให้มั่นใจได้ว่าการตั้งค่า ENV/PATH สำหรับ Python จะเหมือนกันสำหรับคุณและ Antigravity CLI ดังนั้นประสบการณ์การใช้งาน Shell ของคุณจะเหมือนกับของ Antigravity CLI เป็นส่วนใหญ่ หากคุณใช้ virtualenv เช่น Antigravity CLI จะต้องดำเนินการต่างๆ เช่น "source .env/venv/bin/activate && my-original-command" เพื่อเลียนแบบสภาพแวดล้อมของคุณ

2. Antigravity CLI (agy)

หากต้องการติดตั้ง Antigravity CLI อย่างเป็นทางการ (คำสั่ง agy) ให้เปิดเทอร์มินัลแล้วเรียกใช้โปรแกรมติดตั้ง Bootstrap ดังนี้

สำหรับ macOS และ Linux

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

สำหรับ Windows (PowerShell):

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

สคริปต์นี้จะตรวจหาระบบปฏิบัติการและสถาปัตยกรรมของคุณแบบไดนามิก ดาวน์โหลด

agy

ไบนารี และกำหนดค่า PATH รีสตาร์ทเทอร์มินัลหรือโหลดการกำหนดค่าเชลล์ซ้ำเพื่อให้การเปลี่ยนแปลงมีผล

efade99623113f1.png

การตรวจสอบสิทธิ์

คุณต้องมีคีย์ API ของ Google AI Studio

ส่งออกคีย์ API

export GEMINI_API_KEY="your-api-key"

ตรวจสอบสิทธิ์ด้วย gcloud

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

ตั้งค่าสภาพแวดล้อมการทำงานและติดตั้งใช้งานแอปพลิเคชันสาธิตของ Microservices

มาโคลนแอปพลิเคชัน microservices-demo และทำให้โครงสร้างพื้นฐานและแอปพลิเคชันใช้งานได้ผ่าน Terraform กัน

ตอนนี้คุณสามารถเปิด IDE (Visual Studio Code, IntelliJ, RubyMine, ..) และเปิดโฟลเดอร์ได้

# 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

หากต้องการทดสอบการตั้งค่า ให้ไปที่ http://[IP ADDRESS] แล้วโหลดแอป online-boutique

ตั้งค่าสภาพแวดล้อมการทำงานสำหรับ 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. ขั้นตอนที่ 1: จำลองการหยุดทำงาน (สถานการณ์ที่เกิดการหยุดทำงาน)

ในขั้นตอนนี้ เราจะตั้งใจทำให้คลัสเตอร์ GKE ที่ติดตั้งใช้งานแล้วหยุดทำงานเพื่อจำลองเหตุการณ์การผลิตในโลกแห่งความเป็นจริง คุณเลือกได้ 3 สถานการณ์ (หรือลองทั้ง 3 สถานการณ์ตามลำดับ) ดังนี้

สถานการณ์ที่ 1: การบล็อกเครือข่ายบริการชำระเงิน (มาตรฐาน/อัตโนมัติ)

สถานการณ์นี้จำลองการเชื่อมต่อที่ขาดหายไประหว่างฟรอนท์เอนด์และบริการชำระเงินโดยใช้ Kubernetes NetworkPolicy ซึ่งทำหน้าที่เป็น "หลุมดำ" ของการรับส่งข้อมูล

  1. ไปที่โฟลเดอร์สถานการณ์
    cd breakage1-checkout
    
  2. ทำให้เกิดการหยุดทำงาน
    ./break.sh
    
    ซึ่งจะสร้าง NetworkPolicy ชื่อ update-checkout-from-frontend ในเนมสเปซ default ซึ่งปฏิเสธการรับส่งข้อมูลขาเข้าไปยัง checkoutservice เว้นแต่จะมาจากพ็อดที่มีป้ายกำกับ app: frontend-checkout-test (ซึ่งไม่มีอยู่)
  3. ลองซื้อสินค้าในส่วนหน้าของ Online Boutique หน้าชำระเงินจะค้างหรือแสดงข้อผิดพลาด HTTP 500

สถานการณ์ที่ 2: การเปิดตัว Canary ที่มีข้อบกพร่อง (Autopilot ที่มี Istio)

สถานการณ์นี้จำลองการติดตั้งใช้งานที่ไม่ดีซึ่งมีการเปิดตัวฟรอนท์เอนด์เวอร์ชันที่มีข้อบกพร่องผ่านการติดตั้งใช้งาน Canary ของ Kubernetes

  1. ไปที่โฟลเดอร์สถานการณ์
    cd ../breakage2-canary
    
  2. ทำให้เกิดการหยุดทำงาน
    ./break.sh
    
    การทำให้ใช้งานได้นี้จะทำให้ใช้งานได้แบบคานารี frontend-canary ซึ่งมีข้อผิดพลาดในการพิมพ์ในตัวแปรสภาพแวดล้อม โดยPRODUCT_CATALOG_SERVICE_ADDRได้รับการกำหนดค่าเป็น productcatalogservices:3550 แทนที่จะเป็น productcatalogservice:3550
  3. โหลดหน้าแรกของฟรอนท์เอนด์ ซึ่งอาจล้มเหลวในบางครั้ง (ขึ้นอยู่กับน้ำหนักการกำหนดเส้นทาง) เนื่องจากบริการคานารีไม่สามารถแก้ไขแคตตาล็อกผลิตภัณฑ์ได้

สถานการณ์ที่ 3: การบล็อกคลัสเตอร์ไฟร์วอลล์ VPC

สถานการณ์นี้จำลองข้อผิดพลาดในการกำหนดค่าไฟร์วอลล์ VPC ที่บล็อกการรับส่งข้อมูลขาเข้าทั้งหมดไปยังคลัสเตอร์ GKE

  1. ไปที่โฟลเดอร์สถานการณ์
    cd ../breakage3-firewall
    
  2. ทำให้เกิดการหยุดทำงาน
    ./break.sh
    
    ซึ่งจะสร้างกฎไฟร์วอลล์ระดับ VPC ชื่อ frontend-ingress-v2 ที่มี priority=1 และการดำเนินการ DENY ซึ่งกำหนดเป้าหมายการรับส่งข้อมูลขาเข้าที่พอร์ต 80, 443 และ 8080
  3. เว็บไซต์ Online Boutique จะเข้าถึงไม่ได้โดยสิ้นเชิง และคำขอจะหมดเวลา

5. ขั้นตอนที่ 2: การตรวจสอบการหยุดทำงานด้วยส่วนขยาย SRE

ตอนนี้แอปพลิเคชันหยุดทำงานแล้ว มาเริ่มการตรวจสอบโดยใช้ผู้ช่วย CLI (Antigravity CLI) กัน

  1. กลับไปที่โฟลเดอร์สถานการณ์การหยุดทำงานหลัก แล้วเปิดใช้โปรแกรมช่วย CLI
    cd ..
    agy
    
  2. ขอให้ผู้ช่วยทำการค้นพบโครงสร้างพื้นฐานและตรวจสอบการวินิจฉัย
    Investigate my GKE cluster for outages. Are all services healthy?
    
  3. สิ่งที่ตัวแทนทำ
    • ซึ่งจะเปิดใช้งานทักษะ investigation-entrypoint และ gcp-playbooks
    • โดยจะแสดงรายการพ็อด การทำให้ใช้งานได้ และบริการของ Kubernetes เพื่อค้นหาเป้าหมายที่ล้มเหลว
    • โดยจะตรวจสอบนโยบายเครือข่าย (สำหรับสถานการณ์ที่ 1) หรือการกำหนดค่าการติดตั้งใช้งาน (สำหรับสถานการณ์ที่ 2) หรือกฎไฟร์วอลล์ (สำหรับสถานการณ์ที่ 3)
  4. สำหรับสถานการณ์ที่ 1 เจ้าหน้าที่ควรรายงานว่า 🔴 พบเหตุการณ์: NetworkPolicy ชื่อ update-checkout-from-frontend กำลังแยกพ็อด checkoutservice
  5. สำหรับสถานการณ์ที่ 2 เจ้าหน้าที่ควรรายงานว่า 🔴 พบเหตุการณ์: มีการกำหนดค่าการติดตั้งใช้งาน frontend-canary ด้วยปลายทางบริการที่ไม่ถูกต้อง productcatalogservices:3550 แทนที่จะเป็น productcatalogservice:3550
  6. สำหรับสถานการณ์ที่ 3 ตัวแทนควรรายงานว่า 🔴 ระบุเหตุการณ์แล้ว: กฎไฟร์วอลล์ VPC frontend-ingress-v2 ปฏิเสธการรับส่งข้อมูลขาเข้าในพอร์ต 80, 443 และ 8080

6. ขั้นตอนที่ 3: บรรเทาและแก้ไขการหยุดทำงาน

มาใช้รูปแบบ Safe Executor ของ CLI เพื่อแก้ไขปัญหาการหยุดทำงานกัน

  1. ขอให้ผู้ช่วย CLI เสนอและใช้การแก้ไข
    Propose a fix for the outage and apply it.
    
  2. Safe Executor ในการทำงาน:
    • ก่อนที่จะดำเนินการตามคำแนะนำคำสั่ง ส่วนขยาย SRE จะทำการตรวจสอบความปลอดภัยโดยใช้safe-sre-investigatorทักษะ
    • โดยจะแสดงคำสั่งที่ต้องการเรียกใช้และประเมินความเสี่ยง (เช่น ต่ำ ปานกลาง สูง)
    • สำหรับสถานการณ์ที่ 1 ระบบจะแนะนำดังนี้
      kubectl delete networkpolicy update-checkout-from-frontend
      
    • สำหรับสถานการณ์ที่ 2 ระบบจะแนะนำดังนี้
      kubectl delete deployment frontend-canary
      
    • สำหรับสถานการณ์ที่ 3 ระบบจะแนะนำดังนี้
      gcloud compute firewall-rules delete frontend-ingress-v2 --quiet
      
  3. ยืนยันการเรียกใช้คำสั่งเมื่อ CLI แจ้ง
  4. ตรวจสอบว่าเว็บไซต์กลับมาใช้งานได้อีกครั้งและใช้งานได้อย่างสมบูรณ์โดยการรีเฟรชหน้าแรกของ Online Boutique
  5. ในเชลล์ คุณสามารถเรียกใช้สคริปต์ตรวจสอบสถานการณ์ที่เกี่ยวข้องเพื่อยืนยันสถานะได้โดยทำดังนี้
    ./breakage1-checkout/check.sh
    # or ./breakage2-canary/check.sh
    # or ./breakage3-firewall/check.sh
    

7. ขั้นตอนที่ 4: สร้างรายงานการวิเคราะห์หลังเกิดเหตุการณ์

ส่วนสำคัญของวงจร SRE คือการบันทึกเหตุการณ์เพื่อให้ทีมได้เรียนรู้จากเหตุการณ์ดังกล่าว มาตั้งค่าให้ทำงานโดยอัตโนมัติโดยใช้ทักษะ postmortem-create กัน

  1. ในผู้ช่วย CLI ให้ขอเขียนเอกสารสรุปหลังเหตุการณ์
    Create a postmortem for the checkout service network policy outage.
    
  2. ตัวแทนจะรวบรวมรายละเอียดเกี่ยวกับสิ่งต่อไปนี้
    • เวลาเริ่มต้นของเหตุการณ์ (ดึงข้อมูลจากประวัติคำสั่ง/บันทึก CLI)
    • สาเหตุของปัญหา (NetworkPolicy ที่บล็อก)
    • การดำเนินการที่ใช้เพื่อลดความเสี่ยง
  3. โดยจะเขียนไฟล์ Markdown ใหม่ชื่อ postmortem.md ในพื้นที่ทำงานของคุณ
  4. เปิด postmortem.md เพื่อตรวจสอบรายละเอียด คุณจะเห็นส่วนต่างๆ เช่น
    • สรุปเหตุการณ์
    • ไทม์ไลน์ของเหตุการณ์
    • การวิเคราะห์สาเหตุที่แท้จริง (RCA)
    • สิ่งที่ต้องทำ / มาตรการป้องกัน

8. ขั้นตอนที่ 5: เพิ่มกราฟเมตริกที่อิงตามข้อมูล

เราต้องการหลักฐานที่เป็นภาพของเหตุการณ์เพื่อทำให้การชันสูตรพลิกศพเป็นไปอย่างมืออาชีพ เราจะใช้monitoring-graphsทักษะเพื่อดึงข้อมูลอนุกรมเวลาจาก Google Cloud Monitoring (GCM) และสร้างแผนภูมิ PNG ที่แสดงการเพิ่มขึ้นของข้อผิดพลาด

  1. ขอให้โปรแกรมช่วย CLI สร้างกราฟและเพิ่มลงในรายงานหลังเกิดเหตุ
    Query GCM for frontend HTTP request error rates over the last 1 hour, generate a line chart, and embed it into postmortem.md.
    
  2. กลไกภายใน:
    • Agent จะเรียกใช้monitoring-graphsสคริปต์ Python เพื่อค้นหา Cloud Monitoring
    • โดยจะดึงข้อมูลเมตริก (เช่น kubernetes.io/container/restart_count หรือ loadbalancing.googleapis.com/https/request_count)
    • โดยจะสร้างแผนภูมิโดยใช้ matplotlib และบันทึกเป็น incident_metrics.png
    • โดยจะอัปเดตpostmortem.mdไฟล์ด้วยการแทรกลิงก์รูปภาพดังนี้
      ![Incident Metric Graph](incident_metrics.png)
      
  3. เปิดไฟล์ incident_metrics.png ที่สร้างขึ้นเพื่อดูแผนภูมิที่แสดงช่วงเวลาที่แน่นอนที่คลัสเตอร์หยุดทำงานและช่วงเวลาที่การเข้าชมกลับสู่ปกติ

9. ขั้นตอนที่ 6: การทำความสะอาดข้อมูล

มาล้างข้อมูลโครงสร้างพื้นฐานที่ติดตั้งใช้งานเพื่อไม่ให้บัญชี Google Cloud ของคุณถูกเรียกเก็บเงินโดยไม่จำเป็นกัน

  1. ไปที่โฟลเดอร์ Terraform
    cd ../../microservices-demo/terraform
    
  2. เรียกใช้คำสั่งทำลาย
    terraform destroy -auto-approve
    
  3. ยืนยันว่าได้ลบทรัพยากร GKE ใน GCP ทั้งหมดเรียบร้อยแล้ว

10. ยินดีด้วย

คุณทำ Codelab การตรวจสอบการหยุดทำงานและการหยุดให้บริการของคลัสเตอร์ GKE เสร็จแล้ว

สิ่งที่คุณได้เรียนรู้

  • ทำให้การสาธิตไมโครเซอร์วิส Online Boutique แบบ 10 ระดับใช้งานได้ใน GKE
  • จำลองการหยุดทำงานของ SRE ในโลกแห่งความเป็นจริง 3 ครั้ง (การปฏิเสธนโยบายเครือข่าย การเปิดตัว Canary ที่มีข้อบกพร่อง การปฏิเสธกฎไฟร์วอลล์ VPC)
  • ใช้ส่วนขยาย SRE สำหรับ Antigravity CLI เพื่อค้นหาและวินิจฉัยการหยุดทำงาน
  • ใช้รูปแบบ Safe Executor เพื่อตรวจสอบและเรียกใช้คำสั่งการแก้ไข
  • สร้างรายงานหลังการปฏิบัติงาน (Postmortem) แบบมาร์กดาวน์ระดับมืออาชีพ
  • เมตริก Cloud Monitoring ที่ค้นหาเพื่อสร้างและฝังกราฟเหตุการณ์ที่อิงตามข้อมูลโดยอัตโนมัติ

ดูรายละเอียดเพิ่มเติมเกี่ยวกับการขยายตัวแทน CLI ได้ที่หน้า GitHub ของส่วนขยาย SRE