1. مقدمة

تاريخ آخر تعديل: 2026-05-13
التحقيق في انقطاع GKE باستخدام إضافة SRE وإنشاء تقرير Post Mortem مفصّل
مرحبًا بك في ورشة عمل SRE هذه، وهي مخصّصة للمشغّلين الذين يريدون تجربة أدوات SRE على Google Cloud.
سيرشدك هذا الدرس التطبيقي حول الترميز خلال هذه العملية:
- ثبِّت مجموعة GKE استنادًا إلى microservices-demo معروف ومفتوح المصدر.
- أنشئ انقطاعًا عن طريق تقسيمه بطرق مختلفة (بعضها أكثر وضوحًا، وبعضها أكثر دقة).
- ثبِّت Antigravity CLI (أو أداة مشابهة) واستخدِمها + إضافة SRE للجزء التالي.
- التحقيق في الانقطاع وإصلاحه
- أنشئ تقرير تحليل بعد حدوث الكوارث.
- استخدِم مهارات إنشاء الرسومات البيانية لإنشاء رسم بياني مستند إلى بيانات واقعية يتيح للمشاهدين فهم ما حدث ومتى.
في ما يلي البنية المفصّلة للدرس التطبيقي:

يهدف هذا التدريب إلى:
- توضيح إمكانات إضافة SRE وعرض ما يمكن تنفيذه باستخدامها: إعداد OneMCP وSafe Executor والتحقيق وإنشاء تقرير ما بعد الوفاة والرسومات البيانية وملخّصات CSV
- تعليمك المهارات اللازمة للتحقيق في سيناريو Google Cloud الخاص بك
المرحلة 1: إعداد البيئة ومحاكاة الانقطاع
الهدف من هذا الإنجاز هو إعداد تطبيق تجريبي على Kubernetes في وضع التشغيل الآلي في GKE، وتثبيت Antigravity CLI، وتفعيل سيناريوهات تعطل مجموعة GKE بشكل مصطنع لمحاكاة الحوادث في مرحلة الإنتاج.
المرحلة 2: التحقيق والتخفيف باستخدام إضافة SRE
بعد إيقاف البيئة، ستستخدم أدوات سطر الأوامر المستندة إلى الوكيل والمزوّدة بإضافة SRE لاكتشاف البنية الأساسية بشكل منهجي، وتصنيف المشاكل، وتنفيذ نمط التنفيذ الآمن للإصلاحات، والتحقّق من سلامة المجموعة.
المرحلة 3: تحليل الأخطاء وإنشاء الرسوم البيانية
بعد حلّ المشكلة، ستنشئ مستندًا منظَّمًا لتحليل أسباب الحادثة، وستستخدم واجهات برمجة تطبيقات GCM (خدمة المراقبة من Google Cloud) لاسترداد بيانات المقاييس الفعلية، وإنشاء رسوم بيانية مرئية لتسجيل وقت حدوث الانقطاع وكيفية حدوثه.
ما ستنشئه
في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية التحقيق في حالات انقطاع GKE وإصلاحها باستخدام إضافة SRE. سيكون عليك إجراء ما يلي:
- محاكاة انقطاع GKE باستخدام حظر سياسة الشبكة وعمليات نشر Canary التي تتضمّن أخطاء وتحديثات قواعد جدار الحماية
- تحديد أولويات انقطاع الخدمة في المجموعة باستخدام مساعد سطر الأوامر المستند إلى إضافة SRE
- تنفيذ خطوات الإصلاح بأمان باستخدام نمط Safe Executor
- إنشاء مستند شامل بعد انتهاء الحدث
- إنشاء رسومات بيانية لمقاييس الحوادث باستخدام طلبات البحث عن السلاسل الزمنية في Google Cloud Monitoring
ما ستتعلمه
- كيفية فحص موارد وسياسات Kubernetes في GKE باستخدام مهارات SRE Extension
- كيفية الاستفادة من نمط Safe Executor لتنفيذ الأوامر التي يقترحها الوكيل مع إجراء تقييم مناسب للمخاطر
- كيفية استخدام مهارة
monitoring-graphsلإنشاء رسومات بيانية مستندة إلى بيانات المقاييس مباشرةً من GCM - كيفية توثيق نتائج الحوادث بتنسيق ما بعد الوفاة المنظَّم
المتطلبات
- مشروع Google Cloud تم تفعيل الفوترة فيه
- أدوات سطر الأوامر:
gcloudوkubectlوterraform - Antigravity CLI مثبَّتة على الجهاز أو في Cloud Shell.
- بيئة تطوير متكاملة (IDE) (مثل vscode أو IntelliJ أو RubyMine أو Vim)
لماذا SRE Extension + Agentic CLI؟
تتسم الانقطاعات في بيئة الإنتاج بالسرعة وتتطلّب ربطًا بين أنظمة فرعية متعددة (موارد Kubernetes وشبكات السحابة الخاصة الافتراضية ومقاييس Cloud Monitoring وأذونات إدارة الهوية وإمكانية الوصول). يتيح "ملحق هندسة موثوقية الموقع" لمساعدي واجهة سطر الأوامر المستقلين (مثل Antigravity CLI) العمل كطيارين مساعدين مستقلين، وتنفيذ كتيبات التشغيل المُجمَّعة مسبقًا، وطلب بيانات من رسومات المراقبة، واقتراح عمليات إصلاح آمنة مع إبقاء المشغّل البشري على علم بكل خطوة.
2. الإعداد
اختَر أحد الخيارات التالية: إعداد بيئة ذاتية السرعة إذا كنت تريد تنفيذ هذا الإجراء
الدرس التطبيقي حول الترميز على جهازك، أو ابدأ Cloud Shell إذا أردت تنفيذ هذا الدرس التطبيقي حول الترميز بالكامل على السحابة الإلكترونية.
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.



- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
- رقم تعريف المشروع هو معرّف فريد في جميع مشاريع Google Cloud ولا يمكن تغييره (لا يمكن تغييره بعد ضبطه). تنشئ Cloud Console تلقائيًا سلسلة فريدة، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف مشروعك (يُشار إليه عادةً باسم
PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. يمكنك بدلاً من ذلك تجربة اسم مستخدم من اختيارك ومعرفة ما إذا كان متاحًا. لا يمكن تغيير هذا الخيار بعد هذه الخطوة ويظل ساريًا طوال مدة المشروع. - للعلم، هناك قيمة ثالثة، وهي رقم المشروع، وتستخدمها بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات عن هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس البرمجي الكثير، إن وُجدت أي تكلفة. لإيقاف الموارد وتجنُّب تكبُّد رسوم فوترة تتجاوز هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.
بدء Cloud Shell
على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي حول الترميز Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.
من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة:

لن يستغرق توفير البيئة والاتصال بها سوى بضع لحظات. عند الانتهاء، من المفترض أن يظهر لك ما يلي:

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا دائمًا بسعة 5 غيغابايت، وتعمل على Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إكمال جميع المهام في هذا الدرس العملي ضمن المتصفّح. لست بحاجة إلى تثبيت أي تطبيق.
3- المتطلبات الأساسية (التثبيت)
لإكمال هذا البرنامج التعليمي، عليك تثبيت ما يلي:
1. Python وuv
python وuv (أداة إدارة الحِزم للغة Python) تأكَّد من تثبيت uv:
$ curl -LsSf https://astral.sh/uv/install.sh | sh
لماذا الأشعة فوق البنفسجية؟ على الرغم من أنّه يمكنك استخدام أي مدير Python تفضّله، سيضمن استخدام uv إعداد ENV/PATH للغة Python بشكل متساوٍ لك ولأداة Antigravity CLI، وبالتالي ستكون تجربة الصدفة لديك مشابهة إلى حد كبير لتجربة Antigravity CLI. إذا كنت تستخدم virtualenv ، على سبيل المثال، سيتم إجبار Antigravity CLI على تنفيذ إجراءات مثل "source .env/venv/bin/activate && my-original-command" لمحاكاة بيئتك.
2. Antigravity CLI (agy)
لتثبيت Antigravity CLI الرسمية (الأمر agy)، افتح الوحدة الطرفية ونفِّذ أداة التثبيت التمهيدية:
في أجهزة macOS وLinux:
$ curl -fsSL https://antigravity.google/cli/install.sh | bash
على أجهزة Windows (PowerShell):
irm https://antigravity.google/cli/install.ps1 | iex
سيكتشف هذا النص البرمجي نظام التشغيل والبنية بشكل ديناميكي، وسينزّل أحدث إصدار مجمّع من
agy
الثنائي، واضبط PATH. أعِد تشغيل نافذة الأوامر أو أعِد تحميل إعدادات shell لكي تصبح التغييرات سارية.

المصادقة
يجب أن يكون لديك مفتاح واجهة برمجة تطبيقات Google AI Studio.
تصدير مفتاح واجهة برمجة التطبيقات:
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-demo وننشر البنية التحتية والتطبيق من خلال Terraform
يمكنك الآن فتح بيئة التطوير المتكاملة (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 التي تم نشرها عمدًا لمحاكاة مشكلة إنتاجية في العالم الحقيقي. يمكنك الاختيار من بين ثلاثة سيناريوهات (أو تجربة جميع السيناريوهات الثلاثة بالتسلسل):
السيناريو 1: حظر شبكة خدمة الدفع (الوضع العادي/القيادة الذاتية)
يحاكي هذا السيناريو انقطاع الاتصال بين الواجهة الأمامية وخدمة الدفع من خلال تطبيق NetworkPolicy في Kubernetes يعمل كـ "ثقب أسود" للزيارات.
- انتقِل إلى مجلد السيناريو:
cd breakage1-checkout
- تفعيل عملية التجزئة:
يؤدي ذلك إلى إنشاء NetworkPolicy باسم./break.sh
update-checkout-from-frontendفي مساحة الاسمdefaultالتي ترفض حركة المرور الواردة إلىcheckoutserviceما لم تأتِ من وحدة pod تحمل التصنيفapp: frontend-checkout-test(غير المتوفّر). - حاوِل شراء سلع من واجهة Online Boutique الأمامية. ستتوقف صفحة الدفع أو ستعرض الخطأ HTTP 500.
السيناريو 2: طرح إصدار Canary يتضمّن أخطاء (التشغيل التلقائي مع Istio)
يحاكي هذا السيناريو عملية نشر غير صحيحة يتم فيها طرح إصدار يتضمّن أخطاء في الواجهة الأمامية من خلال عملية نشر Canary في Kubernetes.
- انتقِل إلى مجلد السيناريو:
cd ../breakage2-canary
- تفعيل عملية التجزئة:
يؤدي هذا إلى نشر عملية نشر تجريبية./break.sh
frontend-canaryتتضمّن خطأ إملائيًا في متغيّرات البيئة: تم ضبطPRODUCT_CATALOG_SERVICE_ADDRعلىproductcatalogservices:3550بدلاً منproductcatalogservice:3550. - تحميل الصفحة الرئيسية لواجهة المستخدم سيتعذّر ذلك أحيانًا (حسب أوزان التوجيه) لأنّ خدمة الإصدار التجريبي لا يمكنها حلّ مشكلة كتالوج المنتجات.
السيناريو 3: حظر مجموعة جدار الحماية في السحابة الخاصة الافتراضية (VPC)
يحاكي هذا السيناريو خطأً في إعداد جدار حماية شبكة VPC يحظر جميع حركة البيانات الواردة إلى مجموعة GKE.
- انتقِل إلى مجلد السيناريو:
cd ../breakage3-firewall
- تفعيل عملية التجزئة:
يؤدي ذلك إلى إنشاء قاعدة جدار حماية على مستوى شبكة VPC باسم./break.sh
frontend-ingress-v2معpriority=1والإجراءDENYالذي يستهدف الزيارات الواردة إلى المنافذ80و443و8080. - سيتعذّر الوصول إلى الموقع الإلكتروني Online Boutique تمامًا، وستنتهي مهلة الطلبات.
5- الخطوة 2: التحقيق في الانقطاع باستخدام إضافة SRE
بعد أن تعذّر الوصول إلى التطبيق، لنبدأ التحقيق باستخدام مساعد واجهة سطر الأوامر (Antigravity CLI).
- ارجع إلى مجلد سيناريوهات الأعطال الرئيسية وشغِّل أداة CLI المساعدة:
cd .. agy
- اطلب من المساعد إجراء عملية رصد للبنية الأساسية وفحص تشخيصي:
Investigate my GKE cluster for outages. Are all services healthy? - الإجراءات التي يتّخذها الوكيل:
- يؤدي ذلك إلى تفعيل مهارتَي
investigation-entrypointوgcp-playbooks. - تعرض هذه الأداة وحدات Kubernetes pods وعمليات النشر والخدمات لتحديد الأهداف التي تعذّر الوصول إليها.
- يفحص هذا البرنامج سياسات الشبكة (في السيناريو 1) أو إعدادات النشر (في السيناريو 2) أو قواعد جدار الحماية (في السيناريو 3).
- يؤدي ذلك إلى تفعيل مهارتَي
- بالنسبة إلى السيناريو 1، يجب أن يبلّغ الوكيل عن: 🔴 تم تحديد المشكلة: تعمل وحدة
NetworkPolicyباسمupdate-checkout-from-frontendعلى عزل وحداتcheckoutservice. - في السيناريو 2، يجب أن يبلّغ الوكيل عن: 🔴 تم تحديد المشكلة: تم إعداد عملية النشر
frontend-canaryباستخدام نقطة نهاية خدمة غير صالحةproductcatalogservices:3550بدلاً منproductcatalogservice:3550. - بالنسبة إلى السيناريو 3، يجب أن يبلّغ البرنامج عن: 🔴 تم تحديد المشكلة: ترفض قاعدة جدار حماية في شبكة VPC
frontend-ingress-v2الزيارات الواردة على المنافذ80و443و8080.
6. الخطوة 3: التخفيف من تأثير الانقطاع وإصلاحه
لنستخدِم نمط Safe Executor في واجهة سطر الأوامر لمعالجة الانقطاع.
- اطلب من مساعد واجهة سطر الأوامر اقتراح حلّ وتطبيقه:
Propose a fix for the outage and apply it. - مثال على استخدام Safe Executor:
- قبل تنفيذ اقتراحات الأوامر، تجري إضافة SRE Extension تدقيقًا للأمان باستخدام مهارة
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
- قبل تنفيذ اقتراحات الأوامر، تجري إضافة SRE Extension تدقيقًا للأمان باستخدام مهارة
- أكِّد تنفيذ الأمر عندما يطلب منك ذلك واجهة سطر الأوامر.
- تأكَّد من أنّ الموقع الإلكتروني عاد إلى العمل ويعمل بشكل كامل من خلال إعادة تحميل الصفحة الرئيسية لمتجر Online Boutique.
- في shell، يمكنك تنفيذ النص البرمجي المناسب للتحقّق من السيناريو للتأكّد من سلامة النظام:
./breakage1-checkout/check.sh # or ./breakage2-canary/check.sh # or ./breakage3-firewall/check.sh
7. الخطوة 4: إنشاء تقرير ما بعد الوفاة عن الحادث
يُعدّ توثيق الحادث جزءًا أساسيًا من دورة حياة هندسة موثوقية الموقع (SRE) لكي يتمكّن الفريق من الاستفادة من التجربة. لنعمل على أتمتة هذه العملية باستخدام مهارة postmortem-create.
- في مساعد واجهة سطر الأوامر، اطلب كتابة مستند التحليل بعد الوفاة:
Create a postmortem for the checkout service network policy outage. - سيجمع موظّف الدعم تفاصيل حول ما يلي:
- وقت بدء الحادث (تم استرداده من سجلّ/سجلّات أوامر واجهة سطر الأوامر).
- السبب الجذري (سياسة NetworkPolicy التي تحظر الوصول)
- الإجراءات المتّخذة للحدّ من تأثيرها
- سيكتب ملف Markdown جديدًا باسم
postmortem.mdفي مساحة عملك. - افتح
postmortem.mdلمراجعة التفاصيل. ستظهر لك أقسام مثل:- ملخّص الحادث
- الجدول الزمني للأحداث
- تحليل السبب الجذري (RCA)
- الإجراءات المطلوبة / التدابير الوقائية
8. الخطوة 5: إضافة رسومات بيانية للمقاييس المستندة إلى بيانات واقعية
لإعداد تقرير احترافي عن الحادثة، نحتاج إلى دليل مرئي على وقوعها. سنستخدم مهارة monitoring-graphs لجلب بيانات السلسلة الزمنية من Google Cloud Monitoring (GCM) وإنشاء رسم بياني بتنسيق PNG يعرض الارتفاع المفاجئ في عدد الأخطاء.
- اطلب من أداة CLI المساعدة إنشاء الرسم البياني وإضافته إلى تقرير ما بعد الوفاة:
Query GCM for frontend HTTP request error rates over the last 1 hour, generate a line chart, and embed it into postmortem.md. - نظرة من الداخل:
- يستدعي الوكيل نص
monitoring-graphsPython البرمجي لطلب البحث في Cloud Monitoring. - يستردّ هذا الإجراء المقاييس (مثل
kubernetes.io/container/restart_countأوloadbalancing.googleapis.com/https/request_count). - يرسم الرسم البياني باستخدام
matplotlibويحفظه باسمincident_metrics.png. - يعدّل هذا الإجراء ملف
postmortem.mdمن خلال إدراج رابط صورة:
- يستدعي الوكيل نص
- افتح ملف
incident_metrics.pngالذي تم إنشاؤه للاطّلاع على الرسم البياني الذي يوضّح اللحظات الدقيقة التي توقفت فيها المجموعة عن العمل والوقت الذي عادت فيه الزيارات إلى معدّلها الطبيعي.
9- الخطوة 6: التنظيف
لضمان عدم تحمّل حسابك على Google Cloud رسومًا غير ضرورية، لننظّف البنية الأساسية التي تم نشرها.
- انتقِل إلى مجلد Terraform:
cd ../../microservices-demo/terraform
- نفِّذ أمر الإلغاء:
terraform destroy -auto-approve
- تأكَّد من حذف جميع موارد Google Cloud Platform GKE بنجاح.
10. تهانينا!
لقد أكملت Codelab حول التحقيق في حالات تعذُّر توفّر مجموعة GKE وتعطّلها.
المواضيع التي تم تناولها:
- تم نشر العرض التوضيحي لخدمة Online Boutique المصغّرة المكوّنة من 10 مستويات على GKE.
- محاكاة ثلاث حالات انقطاع لخدمة SRE في العالم الحقيقي (رفض سياسة الشبكة، وطرح إصدار تجريبي غير مستقر، ورفض قاعدة جدار الحماية في شبكة VPC)
- استخدمت "إضافة هندسة موثوقية الموقع" (SRE) في Antigravity CLI لاكتشاف حالات الانقطاع وتشخيصها.
- استخدام نمط Safe Executor لمراجعة أوامر الإصلاح وتنفيذها
- أنشأتُ تقريرًا احترافيًا بعد الوفاة بتنسيق Markdown.
- تم الاستعلام عن مقاييس Cloud Monitoring لإنشاء رسم بياني للحادثة مستند إلى بيانات واقعية وتضمينه تلقائيًا.
لمزيد من التفاصيل حول توسيع نطاق وكيل واجهة سطر الأوامر، يُرجى الاطّلاع على صفحة SRE Extension على GitHub.