توجيه تنبيهات مراقبة Datadog إلى Google Cloud باستخدام Eventarc (الجزء 2)

1. مقدمة

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png 1c05e3d0c2bd2b45.png

تسهِّل شركة 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. الإعداد والمتطلبات

إعداد بيئة ذاتية

  1. سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

بدء Cloud Shell

مع أنّه يمكن إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي Google Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في السحابة الإلكترونية.

من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 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:

8399d528ccbd4c20.png

يجب أن تكون حالة القناة 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:

cf1ffa6547fba3e4.png

حرك مؤشر الماوس فوق Google Cloud Platform للانتقال إلى صفحة Install:

31b365a31bc50cc8.png

ثبِّت عملية الدمج من خلال تحميل مفتاح حساب الخدمة في قسم Upload Private Key File ثم النقر على Install Integration:

92e475e4da7f826.png

بعد إكمال عملية الدمج، تنشئ Datadog تلقائيًا عددًا من لوحات البيانات ذات الصلة بخدمة Google Cloud ضمن Dashboards:

66fdf2d26e4710d.png

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:

78a51374c1d0c11e.png

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، أنشئ شاشة تحتوي على ما يلي:

  1. اختَر طريقة الرصد: Threshold.
  2. حدِّد المقياس: gcp.gce.instance.is_running من (كل مكان) sum by (كل العناصر)
  3. إعداد شروط التنبيه:
  4. يتم تفعيله عندما يكون المقياس below الحدّ الأدنى at least once خلال آخر 5 minutes
  5. الحد الأدنى للتنبيه: < 2
  6. إعلام فريقك: @eventarc_<your-project-id>_<your-region>_<your-channel-name>
  7. مثال على اسم أداة التتبُّع: 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:

50f93d560b6c1973.png

بعد تفعيل تنبيهات أداة Datadog، من المفترض أن يظهر لك هذا التنبيه ينقل إلى Workflows من خلال Eventarc. إذا راجعت سجلات سير العمل، من المفترَض أن ترى أنّ Workflows يتحقّق من الفرق بين عدد المثيلات الحالية والعدد المتوقّع للمثيلات:

2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1

وتستجيب لهذا التنبيه من خلال إنشاء مثيل جهاز افتراضي (VM) جديد باستخدام البادئة datadog-instance-##.

في النهاية، سيظل لديك جهازان افتراضيان في مشروعك، أحدهما أنشأته في البداية والآخر تم إنشاؤه من خلال Workflows بعد تنبيه Datadog.

11e42028e7142690.png

10. تهانينا

تهانينا، لقد أنهيت الدرس التطبيقي حول الترميز.

المواضيع التي تناولناها

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