1. مقدمة
تسهِّل شركة Eventarc ربط خدمات Google Cloud بفعاليات من مصادر متنوعة. ويسمح لك ذلك بإنشاء بُنى تستند إلى الأحداث، حيث يتم إقران الخدمات المصغَّرة وتوزيعها بشكل غير محكم. ويعتني أيضًا بنقل الأحداث وتسليمها والأمان والتفويض ومعالجة الأخطاء نيابةً عنك، ما يحسِّن سرعة أداء المطوِّر ومرونة التطبيقات.
Datadog هي منصة مراقبة وأمان لتطبيقات السحابة الإلكترونية. وهو يجمع بين آثار الأنشطة الشاملة والمقاييس والسجلات لجعل التطبيقات والبنية الأساسية وخدمات الجهات الخارجية قابلة للملاحظة.
Workflows هي منصة تنسيق مُدارة بالكامل تنفّذ الخدمات بالترتيب الذي تحدِّده باسم "سير العمل". ويمكن أن تجمع مهام سير العمل هذه بين الخدمات المستضافة على Cloud Run أو Cloud Functions، وخدمات Google Cloud، مثل Cloud Vision AI وBigQuery، وأي واجهة برمجة تطبيقات مستنِدة إلى HTTP.
في الدرس التطبيقي الأول حول الترميز، تعلّمت كيفية توجيه تنبيهات مراقبة Datadog إلى Google Cloud باستخدام Eventarc. في هذا الدرس التطبيقي الثاني حول الترميز، ستتعلم كيفية الاستجابة لتنبيهات مراقبة Datadog باستخدام Workflows. وعلى وجه التحديد، ستنشئ جهازَين افتراضيَّين في Compute Engine وستراقبهما باستخدام أداة Datadog. بعد حذف جهاز واحد من الأجهزة الافتراضية، ستتلقّى تنبيهًا من Datadog إلى Workflows باستخدام Eventarc. وبالتالي، ستُعيد خدمة Workflows إنشاء الجهاز الافتراضي المحذوف لزيادة عدد الأجهزة الافتراضية قيد التشغيل إلى 2.
المُعطيات
- كيفية تفعيل دمج Google Cloud في Datadog.
- كيفية إنشاء سير عمل لفحص وإنشاء أجهزة افتراضية في Compute Engine
- كيفية ربط تنبيهات مراقبة Datadog بمنصّة Workflows باستخدام Eventarc
- كيفية إنشاء أداة مراقبة Datadog والتنبيه بشأن عمليات حذف الأجهزة الافتراضية
2. الإعداد والمتطلبات
إعداد بيئة ذاتية
- سجِّل الدخول إلى 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، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. يمكنك تنفيذ كل أعمالك في هذا التمرين من خلال متصفح.
إعداد gcloud
في Cloud Shell، اضبط رقم تعريف مشروعك واحفظه كمتغيّر PROJECT_ID
.
ويمكنك أيضًا ضبط متغيّر REGION
على us-central1
. هذه هي المنطقة التي ستنشئ فيها الموارد لاحقًا.
PROJECT_ID=[YOUR-PROJECT-ID] REGION=us-central1 gcloud config set core/project $PROJECT_ID
تفعيل واجهات برمجة التطبيقات
تفعيل جميع الخدمات اللازمة:
gcloud services enable \ workflows.googleapis.com \ workflowexecutions.googleapis.com
3- التحقق من قناة Datadog
تأكَّد من أنّ قناة Datadog التي أنشأتها في الدرس التطبيقي الأول حول الترميز نشطة. في Cloud Shell، شغِّل الأمر التالي لاسترداد تفاصيل القناة:
CHANNEL_NAME=datadog-channel gcloud eventarc channels describe $CHANNEL_NAME --location $REGION
يجب أن تكون النتيجة مشابهة لما يلي:
activationToken: so5g4Kdasda7y2MSasdaGn8njB2 createTime: '2022-03-09T09:53:42.428978603Z' name: projects/project-id/locations/us-central1/channels/datadog-channel provider: projects/project-id/locations/us-central1/providers/datadog pubsubTopic: projects/project-id/topics/eventarc-channel-us-central1-datadog-channel-077 state: ACTIVE uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e updateTime: '2022-03-09T09:53:48.290217299Z'
ويمكنك أيضًا الاطّلاع على حالة القناة في Google Cloud Console:
يجب أن تكون حالة القناة ACTIVE
. إذا لم يكن الأمر كذلك، عُد إلى أول درس تطبيقي حول الترميز واتّبِع الخطوات لإنشاء قناة وتفعيلها باستخدام Datadog.
4. تفعيل دمج Google Cloud في Datadog
لاستخدام Datadog لمراقبة مشروع، يجب تفعيل واجهات برمجة التطبيقات اللازمة لتطبيق Datadog، وإنشاء حساب خدمة، وربط حساب الخدمة بأداة Datadog.
تفعيل واجهات برمجة التطبيقات في Datadog
gcloud services enable compute.googleapis.com \ cloudasset.googleapis.com \ monitoring.googleapis.com
إنشاء حساب خدمة
إنّ عملية دمج Google Cloud في Datadog تستخدِم حساب خدمة لإجراء الاتصالات بواجهة Cloud Logging API لجمع المقاييس على مستوى العقدة من مثيلات Compute Engine.
إنشاء حساب خدمة لـ Datadog:
DATADOG_SA_NAME=datadog-service-account gcloud iam service-accounts create $DATADOG_SA_NAME \ --display-name "Datadog Service Account"
فعِّل حساب خدمة Datadog لجمع المقاييس والعلامات والأحداث وتصنيفات المستخدمين من خلال منح أدوار "إدارة الهوية وإمكانية الوصول" التالية:
DATADOG_SA_EMAIL=$DATADOG_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/cloudasset.viewer gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/compute.viewer gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/monitoring.viewer
أنشِئ مفتاح حساب الخدمة ونزِّله. تحتاج إلى ملف المفتاح لإكمال الدمج مع Datadog.
أنشئ ملف مفتاح حساب خدمة في الدليل الرئيسي في Cloud Shell:
gcloud iam service-accounts keys create ~/key.json \ --iam-account $DATADOG_SA_EMAIL
في Cloud Shell، انقر على More ⁝
ثم اختَر Download File
. في الحقل File path
، أدخل key.json
. لتنزيل ملف المفتاح، انقر على Download
.
ربط حساب الخدمة بتطبيق Datadog
في حسابك على Datadog، انتقِل إلى القسم Integrations
وابحث عن مربّع دمج Google Cloud
:
حرك مؤشر الماوس فوق Google Cloud Platform
للانتقال إلى صفحة Install
:
ثبِّت عملية الدمج من خلال تحميل مفتاح حساب الخدمة في قسم Upload Private Key File
ثم النقر على Install Integration
:
بعد إكمال عملية الدمج، تنشئ Datadog تلقائيًا عددًا من لوحات البيانات ذات الصلة بخدمة Google Cloud ضمن Dashboards
:
5- إنشاء أجهزة افتراضية في Compute Engine
بعد ذلك، يمكنك إنشاء بعض أجهزة Compute Engine الافتراضية (VMs). وستراقب هذه الأجهزة الافتراضية باستخدام أداة Datadog وستستجيب لتنبيهات Datadog من خلال سير عمل في Google Cloud.
إنشاء جهازيَين افتراضيَين في Compute Engine:
gcloud compute instances create instance-1 instance-2 --zone us-central1-a
من المفترض أن تظهر لك الأجهزة الافتراضية التي تم إنشاؤها وتشغيلها خلال دقيقة أو نحو ذلك في Cloud Console. بعد مرور بعض الوقت (عادةً 10 دقائق)، من المفترض أن تظهر لك هذه الأجهزة الافتراضية في Datadog في لوحة بيانات "Google Compute Engine
" ضمن Dashboards
:
6- إنشاء سير عمل
بعد تشغيل جهازَين افتراضيَين (VM)، يمكنك إنشاء سير عمل يستجيب للتنبيهات الواردة من أداة مراقبة Datadog. يمكن أن يكون سير العمل معقّدًا كما تريد، ولكن في هذه الحالة، سيتحقّق سير العمل من عدد مثيلات الأجهزة الافتراضية قيد التشغيل، وإذا كان أقل من 2، سيتم إنشاء مثيلات أجهزة افتراضية جديدة للتأكّد من توفّر جهازَين افتراضيَين في جميع الأوقات.
أنشئ ملف workflow-datadog2.yaml
يتضمّن المحتوى التالي:
main: params: [event] steps: - init: assign: - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")} - zone: "us-central1-a" - minInstanceCount: 2 - namePattern: "datadog-instance-##" - listInstances: call: googleapis.compute.v1.instances.list args: project: ${projectId} zone: ${zone} result: listResult - getInstanceCount: steps: - initInstanceCount: assign: - instanceCount: 0 - setInstanceCount: switch: - condition: ${"items" in listResult} steps: - stepA: assign: - instanceCount: ${len(listResult.items)} - findDiffInstanceCount: steps: - assignDiffInstanceCount: assign: - diffInstanceCount: ${minInstanceCount - instanceCount} - logDiffInstanceCount: call: sys.log args: data: ${"instanceCount->" + string(instanceCount) + " diffInstanceCount->" + string(diffInstanceCount)} - endEarlyIfNeeded: switch: - condition: ${diffInstanceCount < 1} next: returnResult - bulkInsert: call: googleapis.compute.v1.instances.bulkInsert args: project: ${projectId} zone: ${zone} body: count: ${diffInstanceCount} namePattern: ${namePattern} instanceProperties: machineType: "e2-micro" disks: - autoDelete: true boot: true initializeParams: sourceImage: projects/debian-cloud/global/images/debian-10-buster-v20220310 networkInterfaces: - network: "global/networks/default" result: bulkInsertResult - returnResult: return: ${bulkInsertResult}
تجدر الإشارة إلى أنّ سير العمل يتلقّى حدثًا كمَعلمة. ستأتي هذه الفعالية من مراقبة Datadog من خلال Eventarc. بعد تلقّي الحدث، يتحقّق سير العمل من عدد المثيلات قيد التشغيل وينشئ مثيلات أجهزة افتراضية جديدة، إذا لزم الأمر.
نشر سير العمل:
WORKFLOW_NAME=workflow-datadog2 gcloud workflows deploy $WORKFLOW_NAME \ --source workflow-datadog2.yaml \ --location $REGION
تم نشر سير العمل ولكنه لم يبدأ بعد. وسيتم تنفيذه من خلال مشغِّل Eventarc عند تلقّي تنبيه Datadog.
7. إنشاء مشغِّل Eventarc
أصبحت جاهزًا الآن لربط الأحداث من موفّر Datadog إلى Workflows باستخدام مشغِّل Eventarc. ستستخدم القناة وحساب الخدمة اللذَين أعددتهما في الدرس التطبيقي الأول حول الترميز.
إنشاء عامل تشغيل باستخدام قناة Datadog ونوع الحدث ووجهة سير العمل:
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)') gcloud eventarc triggers create datadog-trigger2 \ --location $REGION \ --destination-workflow $WORKFLOW_NAME \ --destination-workflow-location $REGION \ --channel $CHANNEL_NAME \ --event-filters type=datadog.v1.alert \ --service-account $PROJECT_NUMBER-compute@developer.gserviceaccount.com
يمكنك إدراج عوامل التشغيل للتأكّد من أنّ عامل التفعيل الذي تم إنشاؤه حديثًا نشط:
gcloud eventarc triggers list --location $REGION NAME: datadog-trigger2 TYPE: datadog.v1.alert DESTINATION: Workflows: workflow-datadog2 ACTIVE: Yes
8. إنشاء أداة مراقبة Datadog
ستقوم الآن بإنشاء أداة مراقبة Datadog وربطها بـ Eventarc.
ستتحقّق الأداة من عدد أجهزة Compute Engine الافتراضية قيد التشغيل وستنبّهك في حال انخفاضها إلى أقل من 2.
لإنشاء أداة مراقبة في Datadog، سجِّل الدخول إلى Datadog. حرك مؤشر الماوس فوق Monitors
في القائمة الرئيسية وانقر على New Monitor
في القائمة الفرعية. هناك العديد من أنواع الشاشات. اختَر نوع الشاشة "Metric
".
في صفحة New Monitor
، أنشئ شاشة تحتوي على ما يلي:
- اختَر طريقة الرصد:
Threshold
. - حدِّد المقياس:
gcp.gce.instance.is_running
من (كل مكان)sum by
(كل العناصر) - إعداد شروط التنبيه:
- يتم تفعيله عندما يكون المقياس
below
الحدّ الأدنىat least once
خلال آخر5 minutes
- الحد الأدنى للتنبيه:
< 2
- إعلام فريقك:
@eventarc_<your-project-id>_<your-region>_<your-channel-name>
- مثال على اسم أداة التتبُّع:
Compute Engine instances < 2
الآن، اضغط على Create
في أسفل الصفحة لإنشاء الشاشة.
9. اختبار المراقبة والمشغّل
لاختبار أداة مراقبة Datadog ومشغّل Eventarc وسير العمل في النهاية، ستحذف أحد الأجهزة الافتراضية:
gcloud compute instances delete instance-2 --zone us-central1-a
بعد بضع ثوانٍ، من المفترض أن ترى المثيل محذوفًا في Google Cloud Console.
هناك وقت استجابة بسيط كي يظهر هذا التغيير في Datadog. بعد مرور بعض الوقت (عادةً 10 دقائق)، من المفترض أن تظهر لك أداة المراقبة في Datadog لاكتشاف هذا وتنبيهه ضمن القسم Manage Monitors
:
بعد تفعيل تنبيهات أداة Datadog، من المفترض أن يظهر لك هذا التنبيه ينقل إلى Workflows من خلال Eventarc. إذا راجعت سجلات سير العمل، من المفترَض أن ترى أنّ Workflows يتحقّق من الفرق بين عدد المثيلات الحالية والعدد المتوقّع للمثيلات:
2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1
وتستجيب لهذا التنبيه من خلال إنشاء مثيل جهاز افتراضي (VM) جديد باستخدام البادئة datadog-instance-##
.
في النهاية، سيظل لديك جهازان افتراضيان في مشروعك، أحدهما أنشأته في البداية والآخر تم إنشاؤه من خلال Workflows بعد تنبيه Datadog.
10. تهانينا
تهانينا، لقد أنهيت الدرس التطبيقي حول الترميز.
المواضيع التي تناولناها
- كيفية تفعيل دمج Google Cloud في Datadog.
- كيفية إنشاء سير عمل لفحص وإنشاء أجهزة افتراضية في Compute Engine
- كيفية ربط تنبيهات مراقبة Datadog بمنصّة Workflows باستخدام Eventarc
- كيفية إنشاء أداة مراقبة Datadog والتنبيه بشأن عمليات حذف الأجهزة الافتراضية