1. מבוא

Eventarc מאפשר לחבר בקלות שירותי Google Cloud לאירועים ממגוון מקורות. הוא מאפשר לכם לבנות ארכיטקטורות מבוססות-אירועים שבהן מיקרו-שירותים (microservices) מצומדים בצורה חלשה ומפוזרים. השירות גם מטפל בהעברה, באספקה, באבטחה, בהרשאה ובטיפול בשגיאות של אירועים, וכך משפר את הגמישות של המפתחים ואת עמידות האפליקציה.
Datadog היא פלטפורמה למעקב ולאבטחה של אפליקציות בענן. הוא מאגד עקבות מקצה לקצה, מדדים ויומנים כדי לאפשר לכם לראות את האפליקציות, התשתית והשירותים של צד שלישי.
Workflows היא פלטפורמת תזמור שמנוהלת במלואה, ומבצעת שירותים בסדר שאתם מגדירים, שנקרא תהליך עבודה. תהליכי העבודה האלה יכולים לשלב שירותים שמתארחים ב-Cloud Run או ב-Cloud Functions, שירותי Google Cloud כמו Cloud Vision AI ו-BigQuery, וכל API מבוסס-HTTP.
ב-codelab הראשון למדתם איך להעביר התראות ממעקב של Datadog ל-Google Cloud באמצעות Eventarc. בשיעור השני של Codelab תלמדו איך להגיב להתראות של Datadog Monitoring באמצעות Workflows. באופן ספציפי, תיצרו 2 מכונות וירטואליות של Compute Engine ותעקבו אחריהן באמצעות כלי מעקב של Datadog. אחרי שאחת מהמכונות הווירטואליות תימחק, תקבלו התראה מ-Datadog ל-Workflows דרך Eventarc. בתגובה, Workflows ייצור מחדש את ה-VM שנמחק כדי שמספר מכונות ה-VM הפועלות יחזור ל-2.
מה תלמדו
- איך מפעילים את השילוב של Datadog עם Google Cloud.
- איך יוצרים תהליך עבודה לבדיקה וליצירה של מכונות וירטואליות ב-Compute Engine.
- איך מקשרים התראות מ-Datadog Monitoring לזרימות עבודה באמצעות Eventarc.
- איך יוצרים התראה ומעקב ב-Datadog על מחיקות של מכונות וירטואליות.
2. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים ל-מסוף Google Cloud ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.



- שם הפרויקט הוא השם המוצג של הפרויקט הזה למשתתפים. זו מחרוזת של תווים שלא נמצאת בשימוש ב-Google APIs, ואפשר לעדכן אותה בכל שלב.
- מזהה הפרויקט חייב להיות ייחודי בכל הפרויקטים ב-Google Cloud, והוא קבוע (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית. בדרך כלל לא צריך להתייחס אליה. ברוב סדנאות ה-Codelab, צריך להפנות למזהה הפרויקט (ובדרך כלל הוא מזוהה כ-
PROJECT_ID), אז אם לא מוצא חן בעיניכם, אפשר ליצור מזהה אקראי אחר, או לנסות מזהה משלכם ולבדוק אם הוא זמין. אחרי שהפרויקט נוצר, הוא 'קפוא'. - יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. במאמרי העזרה מפורט מידע נוסף על שלושת הערכים האלה.
- בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבי Cloud או בממשקי API. העלות של התרגול הזה לא אמורה להיות גבוהה, ואולי אפילו לא תצטרכו לשלם בכלל. כדי לכבות את המשאבים ולא לחייב אתכם מעבר למה שמוסבר במדריך הזה, צריך לפעול לפי ההוראות לניקוי שמופיעות בסוף ה-Codelab. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
מפעילים את Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-codelab הזה תשתמשו ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.
ב-מסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

יחלפו כמה רגעים עד שההקצאה והחיבור לסביבת העבודה יושלמו. בסיום התהליך, אמור להופיע משהו כזה:

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את כל העבודה ב-Lab הזה רק באמצעות דפדפן.
הגדרת gcloud
ב-Cloud Shell, מגדירים את מזהה הפרויקט ושומרים אותו כמשתנה PROJECT_ID.
בנוסף, מגדירים את המשתנה REGION לערך us-central1. זה האזור שבו תיצרו משאבים בהמשך.
PROJECT_ID=[YOUR-PROJECT-ID] REGION=us-central1 gcloud config set core/project $PROJECT_ID
הפעלת ממשקי ה-API
מפעילים את כל השירותים הנדרשים:
gcloud services enable \ workflows.googleapis.com \ workflowexecutions.googleapis.com
3. אימות הערוץ של Datadog
מוודאים שהערוץ Datadog שיצרתם ב-codelab הראשון פעיל. ב-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:

מצב הערוץ צריך להיות ACTIVE. אם לא, צריך לחזור אל ה-codelab הראשון ולבצע את השלבים ליצירה ולהפעלה של ערוץ באמצעות Datadog.
4. הפעלת השילוב של Datadog עם Google Cloud
כדי להשתמש ב-Datadog לניטור פרויקט, צריך להפעיל את ממשקי ה-API שנדרשים ל-Datadog, ליצור חשבון שירות ולחבר את חשבון השירות ל-Datadog.
הפעלת ממשקי API עבור 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 לאסוף מדדים, תגים, אירועים ותוויות משתמשים, צריך להעניק לו את התפקידים הבאים ב-IAM:
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.
יוצרים 2 מכונות וירטואליות ב-Compute Engine:
gcloud compute instances create instance-1 instance-2 --zone us-central1-a
אחרי דקה בערך, במסוף Cloud אמורות להופיע מכונות וירטואליות שנוצרו ופועלות. אחרי זמן מה (בדרך כלל 10 דקות), מכונות וירטואליות אלה אמורות להופיע גם ב-Datadog בGoogle Compute Engine לוח הבקרה בקטע Dashboards:

6. יצירת תהליך עבודה
עכשיו, אחרי שיש לכם 2 מכונות וירטואליות שפועלות, אתם יכולים ליצור תהליך עבודה שיגיב להתראות ממוניטור של Datadog. אפשר ליצור תהליך עבודה מורכב ככל שרוצים, אבל במקרה הזה, תהליך העבודה יבדוק את מספר המכונות הווירטואליות שפועלות. אם המספר יהיה קטן מ-2, התהליך ייצור מכונות וירטואליות חדשות כדי לוודא ש-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. תשתמשו בערוץ ובחשבון השירות שהגדרתם ב-codelab הראשון.
יוצרים טריגר עם ערוץ 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.
יכול להיות שיהיה עיכוב קל עד שהשינוי הזה יופיע ב-Datadog. אחרי זמן מה (בדרך כלל 10 דקות), אמור להופיע ב-Datadog מוניטור שיזהה את הבעיה וישלח התראה בקטע Manage Monitors:

אחרי שההתראה של Datadog מופעלת, היא אמורה להגיע ל-Workflows דרך Eventarc. אם בודקים את היומנים של Workflows, אפשר לראות ש-Workflows בודק את ההבדל בין מספר המופעים הנוכחי לבין מספר המופעים הצפוי:
2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1
הוא מגיב להתראה הזו על ידי יצירת מכונה וירטואלית חדשה עם התחילית datadog-instance-##.
בסופו של דבר, עדיין יהיו לכם 2 מכונות וירטואליות בפרויקט: אחת שיצרתם בהתחלה והשנייה שנוצרה על ידי Workflows אחרי ההתראה של Datadog.

10. מזל טוב
כל הכבוד, סיימתם את ה-Codelab!
מה נכלל
- איך מפעילים את השילוב של Datadog עם Google Cloud.
- איך יוצרים תהליך עבודה לבדיקה וליצירה של מכונות וירטואליות ב-Compute Engine.
- איך מקשרים התראות מ-Datadog Monitoring לזרימות עבודה באמצעות Eventarc.
- איך יוצרים התראה ומעקב ב-Datadog על מחיקות של מכונות וירטואליות.