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 באמצעות Workflows. באופן ספציפי יותר, תוכלו ליצור 2 מכונות וירטואליות של Compute Engine ולעקוב אחריהן באמצעות מוניטור של Datadog. אחרי שאחת מהמכונות הווירטואליות תימחק, תקבלו התראה מ-Datadog ל-Workflows דרך Eventarc. לאחר מכן, Workflows ייצור מחדש את המכונה הווירטואלית שנמחקה כדי להחזיר את מספר המכונות הווירטואליות ל-2.
מה תלמדו
- איך מפעילים את השילוב של Datadog עם Google Cloud.
- איך ליצור תהליך עבודה כדי לבדוק וליצור מכונות וירטואליות של Compute Engine.
- איך לקשר התראות של מעקב ב-Datadog ל-Workflows עם Eventarc.
- איך ליצור מעקב של Datadog והתראות לגבי מחיקות VM.
2. הגדרה ודרישות
הגדרת סביבה בקצב עצמאי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- Project name הוא השם המוצג של המשתתפים בפרויקט. זו מחרוזת תווים שלא נעשה בה שימוש ב-Google APIs, ואפשר לעדכן אותה בכל שלב.
- Project ID חייב להיות ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי; בדרך כלל לא מעניין אותך מה זה. ברוב ה-Codelabs תצטרכו להפנות אל מזהה הפרויקט (ובדרך כלל הוא מזוהה כ-
PROJECT_ID
), כך שאם הוא לא מוצא חן בעיניכם, תוכלו ליצור פרויקט אקראי אחר או לנסות בעצמכם ולבדוק אם הוא זמין. ואז המכשיר 'קפוא' לאחר יצירת הפרויקט. - יש ערך שלישי, Project Number, שחלק מממשקי ה-API משתמשים בו. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או בממשקי API של Cloud. מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. כדי להשבית את המשאבים ולא לצבור חיובים מעבר למדריך הזה, פועלים לפי ההנחיות לניקוי בסוף ה-Codelab. משתמשים חדשים ב-Google Cloud זכאים להצטרף לתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
הפעלת Cloud Shell
אומנם אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה משתמשים ב-Google Cloud Shell, סביבת שורת הפקודה שפועלת ב-Cloud.
במסוף 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
בשלב הבא, יוצרים מכונות וירטואליות (VMs) של 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 ל-Workflows עם Eventarc.
- איך ליצור מעקב של Datadog והתראות לגבי מחיקות VM.