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. وبالتالي، ستعيد "مهام سير العمل" إنشاء الجهاز الظاهري المحذوف لإعادة عدد الأجهزة الظاهرية قيد التشغيل إلى 2.
أهداف الدورة التعليمية
- كيفية تفعيل عملية الدمج بين Datadog وGoogle Cloud
- كيفية إنشاء سير عمل للتحقّق من أجهزة 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. تفعيل عملية الدمج بين Datadog وGoogle Cloud
لاستخدام Datadog في مراقبة مشروع، عليك تفعيل واجهات برمجة التطبيقات اللازمة لـ Datadog وإنشاء حساب خدمة وربط حساب الخدمة بـ Datadog.
تفعيل واجهات برمجة التطبيقات لـ Datadog
gcloud services enable compute.googleapis.com \ cloudasset.googleapis.com \ monitoring.googleapis.com
إنشاء حساب خدمة
يستخدم تكامل Datadog مع Google Cloud حساب خدمة لإجراء طلبات إلى 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 الافتراضية
بعد ذلك، أنشِئ بعض الأجهزة الافتراضية (VM) في Compute Engine. ستراقب هذه الأجهزة الافتراضية باستخدام أداة مراقبة 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. إنشاء سير عمل
بعد تشغيل آلتين افتراضيتين، أنشئ سير عمل يستجيب للتنبيهات من أداة مراقبة 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 بـ "مهام سير العمل" باستخدام مشغّل 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. إذا تحقّقت من سجلّات "سير العمل"، من المفترض أن تلاحظ أنّ "سير العمل" يتحقّق لمعرفة الفرق بين عدد المثيلات الحالي وعدد المثيلات المتوقّع:
2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1
ويستجيب لهذا التنبيه من خلال إنشاء مثيل جهاز افتراضي جديد بالبادئة datadog-instance-##.
في النهاية، سيظل لديك جهازا VM في مشروعك، أحدهما أنشأته في البداية والآخر أنشأته Workflows بعد تنبيه Datadog.

10. تهانينا
تهانينا، لقد أكملت درس البرمجة.
المواضيع التي تناولناها
- كيفية تفعيل عملية الدمج بين Datadog وGoogle Cloud
- كيفية إنشاء سير عمل للتحقّق من أجهزة Compute Engine الافتراضية وإنشائها
- كيفية ربط تنبيهات المراقبة في Datadog بـ Workflows باستخدام Eventarc
- كيفية إنشاء عملية مراقبة وتنبيه في Datadog بشأن عمليات حذف الأجهزة الافتراضية