התראות: בדיקות זמני פעילות לנושאי Pub/Sub

התראות:
בדיקות זמני פעילות לנושאי Pub/Sub

מידע על Codelab זה

subjectהעדכון האחרון: יולי 7, 2023
account_circleנכתב על ידי Aron Eidelman

1.‏ מבוא

העדכון האחרון:21 ביוני 2023

שליחת התראה לגבי בדיקות זמני פעילות כדי להיות זמינות

שליחת התראות על בדיקות זמני פעילות מאפשרת לכם לזהות ולפתור במהירות בעיות שייתכן שמשפיעות על השירותים שלכם. קבלת התראות על הפסקות זמניות בשירות מאפשרת לכם לצמצם את ההשפעה על המשתמשים והלקוחות שלכם.

בדיקות זמני פעילות מבוצעות במרווחי זמן, והקצר מביניהם הוא 60 שניות. אם אתם צריכים רמת פירוט של יותר מ-60 שניות, כדאי גם לעקוב אחרי קודי שגיאה כאירועים דינמיים באמצעות התראות מבוססות-יומן כאינדיקטור נוסף של חוסר זמינות. אם אתם יכולים להשתמש במרווח של 60 שניות או יותר, בדיקות זמני הפעילות הן דרך קלה למדוד את השירות באמצעות מעט הגדרות נוספות.

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

למידע נוסף על המקרים שבהם משתמשים בבדיקות זמני פעילות, אפשר לעיין במאמר בדיקת זמני הפעילות של המשאבים ב-Google Cloud.

נושאי Pub/Sub כערוץ התראות עבור התראות

נושא Pub/Sub יכול לשמש כערוץ התראות של Google Cloud Monitoring לשליחת התראות למינוי Pub/Sub. כך ניתן לשלב את ההתראות של Cloud Monitoring עם מערכות אחרות, כולל שירותי התראות של צד שלישי.

כדי להשתמש בנושא Pub/Sub כערוץ התראות, קודם צריך ליצור נושא Pub/Sub ומינוי Pub/Sub. לאחר מכן צריך ליצור ערוץ התראות ב-Cloud Monitoring שהיעד שלו הוא Pub/Sub.

כשהתראה מופעלת, Cloud Monitoring שולח הודעה לנושא Pub/Sub. לאחר מכן, המנוי של המינוי ל-Pub/Sub יוכל לעבד את ההודעה ולבצע את הפעולה המתאימה.

מה תפַתחו

ב-Codelab הזה, אתם מתכוונים לפרוס אפליקציה, ליצור נושא Pub/Sub וליצור התראה לגבי בדיקת זמני פעילות לאפליקציה שמשתמשת בנושא Pub/Sub כערוץ התראות.

מה תלמדו

  • איך יוצרים נושא Pub/Sub
  • איך יוצרים בדיקת זמני פעילות והתראה

המטרה של ה-Codelab הזו היא ליצור התראה לבדיקת זמני פעילות. מונחים וקודים של אפליקציות שאינם רלוונטיים מודגשים בצורה מבריקה, וניתן רק להעתיק ולהדביק אותם.

מה צריך להכין

  • חשבון Google Cloud עם הרשאות:
  • פריסת אפליקציות של Cloud Run
  • יצירת נושאי Pub/Sub
  • יצירת בדיקות זמני פעילות
  • יצירת התראות

2.‏ בתהליך ההגדרה

בחירה או יצירה של פרויקט ב-Google Cloud

כדי לבחור פרויקט קיים, משתמשים בתפריט הנפתח:

b35bf95b8bf3d5d8.png

כדי ליצור פרויקט חדש ב-Google Cloud, אפשר לפעול לפי השלבים הבאים:

  1. נכנסים אל מסוף Google Cloud Platform.
  2. לוחצים על הלחצן Create Project.
  3. נותנים שם לפרויקט.
  4. בוחרים חשבון לחיוב לפרויקט.
  5. לוחצים על הלחצן Create.

הפרויקט ייווצר ותועברו למרכז הבקרה של הפרויקט. משם תוכלו להתחיל להשתמש בשירותי Google Cloud.

ריכזנו כאן כמה פרטים נוספים לגבי כל שלב:

  • שם: שם הפרויקט חייב להיות ייחודי בארגון.
  • חשבון לחיוב: אפשר להשתמש בחשבון קיים לחיוב או ליצור חשבון חדש.
  • יצירה: אחרי שמזינים את כל המידע הנדרש, לוחצים על הלחצן Create כדי ליצור את הפרויקט.

למידע נוסף, תוכלו לעיין במסמכי התיעוד של Google Cloud בנושא יצירת פרויקטים.

3.‏ פורסים את אפליקציית ה-API

במה עוסק האפליקציה או ה-API לדוגמה?

האפליקציה שלנו היא אפליקציה פשוטה של Inventory API שחושפת נקודת קצה ל-API ל-REST עם כמה פעולות כדי להציג את רשימת הפריטים במלאי ולקבל ספירת מלאי ספציפית של פריטים.

אחרי שאנחנו פורסים את ה-API ובהנחה שהוא מתארח ב-https://<somehost>, אנחנו יכולים לגשת לנקודות הקצה ל-API באופן הבא:

https://<somehost>/inventory

כך תצוין רשימה של כל פריטי המוצר עם רמות המלאי הזמינות.

https://<somehost>/inventory/{productid}

תהיה לכם רשומה אחת עם מאפיין מזהה המוצר (productid) וברמת המלאי של המוצר הרלוונטי.

נתוני התגובה שמוחזרים הם בפורמט JSON.

הערה: האפליקציה הזו ל-API מיועדת למטרות הדגמה בלבד ולא מייצגת הטמעת API מאובטחת ואיתנה. היא נועדה לאפשר לנו להשתמש באפליקציה מהירה, כדי לבחון את המטרה העיקרית של שיעור ה-Lab, כלומר הפעילות של Google Cloud.

נתונים לדוגמה ובקשה/תגובה של API

האפליקציה לא מופעלת על ידי מסד נתונים בקצה העורפי כדי לפשט את הדברים. בדוח מופיעים 3 מזהי מוצרים לדוגמה ואת רמות המלאי במלאי שטחי הפרסום לדוגמה.

קוד זיהוי מוצר

רמת המלאי הזמינים

I-1

10

I-2

20

I-3

30

בקשה ותגובה לדוגמה מה-API מוצגים בהמשך:

בקשת API

תגובת API

https://&lt;somehost&gt;/inventory

[ { &quot;I-1&quot;: 10, &quot;I-2&quot;: 20, &quot;I-3&quot;: 30 }]

https://&lt;somehost&gt;/inventory/I-1

{ &quot;productid&quot;: &quot;I-1&quot;, &quot;qty&quot;: 10}

https://&lt;somehost&gt;/inventory/I-2

{ &quot;productid&quot;: &quot;I-2&quot;, &quot;qty&quot;: 20}

https://&lt;somehost&gt;/inventory/I-200

{ &quot;productid&quot;: I-200, &quot;qty&quot;: -1}

שכפול המאגר

אומנם אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה משתמשים ב-Google Cloud Shell, סביבת שורת הפקודה שפועלת ב-Cloud.

ממסוף GCP, לוחצים על הסמל של Cloud Shell בסרגל הכלים שבפינה השמאלית העליונה:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

במכונה הווירטואלית הזו משולבת כל כלי הפיתוח שדרושים לכם. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. כל העבודה בשיעור ה-Lab הזה יכולה להתבצע באמצעות דפדפן בלבד.

הגדרת gcloud

ב-Cloud Shell, מגדירים את מזהה הפרויקט ושומרים אותו כמשתנה PROJECT_ID.

PROJECT_ID=[YOUR-PROJECT-ID]

gcloud config set project $PROJECT_ID

עכשיו, מריצים את הפקודה הבאה:

$ git clone https://github.com/rominirani/cloud-code-sample-repository.git

הפעולה הזו תיצור תיקייה בשם cloud-code-sample-repository, בתיקייה הזו.

(אופציונלי) מריצים את האפליקציה ב-Cloud Shell

אפשר להריץ את האפליקציה באופן מקומי באמצעות השלבים הבאים:

  1. בטרמינל, עוברים לגרסת Python של ה-API באמצעות הפקודה הבאה:

$ cd cloud-code-sample-repository

$ cd python-flask-api

  1. בטרמינל, שולחים את הפקודה הבאה (בזמן הכתיבה ב-Cloud Shell מותקנת גרסת Python 3.9.x ואנחנו נשתמש בגרסת ברירת המחדל. אם אתם מתכננים להריץ אותו באופן מקומי במחשב הנייד, תוכלו להשתמש ב-Python 3.8 ומעלה:

$ python app.py

  1. אפשר להריץ את הפקודה הבאה כדי להפעיל את שרת Python באופן מקומי.

1f798fbddfdc2c8e.png 46edf454cc70c5a6.png

לוחצים על Preview ביציאה 8080. 5. פעולה זו תפתח חלון דפדפן. תופיע שגיאה 404, וזה בסדר. משנים את כתובת ה-URL ומשנים אותה כך שיופיע רק /מלאי אחרי שם המארח.

לדוגמה: במחשב שלי, הוא נראה כך:

https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory

תוצג רשימה של הפריטים במלאי, כפי שהוסבר קודם:

709d57ee2f0137e4.png

  1. אפשר לעצור את השרת עכשיו על ידי מעבר לטרמינל ולחיצה על Ctrl-C

פורסים את האפליקציה

עכשיו נפרוס את אפליקציית ה-API הזו ל-Cloud Run. התהליך כולל שימוש בלקוח שורת הפקודה של Google Cloud כדי להריץ את הפקודה לפריסת הקוד ב-Cloud Run.

מהטרמינל, מזינים את הפקודה הבאה של gcloud:

$ gcloud run deploy --source .

יוצגו לכם כמה שאלות, וחלק מהנקודות יצוינו בהמשך:

  1. שם השירות (python-flask-api): בוחרים באפשרות ברירת המחדל הזו או בוחרים בשם כמו my-inventory-api
  2. ה-API [run.googleapis.com] לא מופעל בפרויקט [613162942481]. רוצה להפעיל ולנסות שוב (הפעולה תימשך כמה דקות)? (y/N)? Y
  3. יש לציין אזור: יש לבחור 31 (us-west-1)
  4. ה-API [artifactregistry.googleapis.com] לא מופעל בפרויקט [613162942481]. רוצה להפעיל ולנסות שוב (הפעולה תימשך כמה דקות)? (y/N)? Y
  5. פריסה מקוד המקור דורשת מאגר Docker של Artifact Registry לאחסון קונטיינרים שנוצרו. המערכת תיצור מאגר בשם [cloud-run-source-deploy] באזור [us-west1].
  6. רוצה להמשיך (Y/n)? Y
  7. לאפשר הפעלות לא מאומתות ל-[my-inventory-api] (y/N)? Y

בסופו של דבר, התהליך הזה יאפשר לקחת את קוד המקור, ליצור אותו בקונטיינרים, לדחוף אותו ל-Artifact Registry ואז לפרוס את השירות Cloud Run ואת הגרסה הקודמת. תודה על הסבלנות במהלך התהליך (התהליך עשוי להימשך 3-4 דקות), והתהליך אמור להסתיים בכתובת ה-URL של השירות.

כך מוצגת הרצה לדוגמה:

87ba8dbf88e8cfa4.png

בדיקת האפליקציה

עכשיו, לאחר שפרסנו את האפליקציה ב-Cloud Run, אתם יכולים לגשת לאפליקציית ה-API באופן הבא:

  1. שימו לב לכתובת ה-URL של השירות מהשלב הקודם. לדוגמה, בהגדרה שלי, הוא מוצג בתור https://my-inventory-api-bt2r5243dq-uw.a.run.app. זה המקום לקרוא לזה <SERVICE_URL>.
  2. פותחים דפדפן ונכנסים ל-3 כתובות ה-URL הבאות של נקודות הקצה ל-API:
  3. <SERVICE_URL>/inventory
  4. <SERVICE_URL>/inventory/I-1
  5. <SERVICE_URL>/inventory/I-100

הן צריכות להתאים למפרט שציינו בסעיף קודם עם דוגמת בקשה ותגובה של API.

קבלת פרטי שירות מ-Cloud Run

פרסנו את שירות ה-API שלנו ב-Cloud Run, סביבת מחשוב ללא שרת (serverless). אנחנו יכולים להיכנס לשירות Cloud Run דרך מסוף Google Cloud בכל שלב.

מהתפריט הראשי, עוברים אל Cloud Run. פעולה זו תציג את רשימת השירותים שאתם מפעילים ב-Cloud Run. אתם אמורים לראות את השירות שפרסתם עכשיו. בהתאם לשם שבחרתם, אתם אמורים לראות משהו כזה:

2633965c4bc957cc.png

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

33042ae64322ce07.png

שימו לב לכתובת ה-URL, שהיא רק כתובת ה-URL של השירות שניתן להזין לדפדפן ולגשת ל-Inventory API שפרסנו כרגע. אפשר לעיין ב'מדדים' ובפרטים אחרים.

נתחיל עם חבילת התפעול של Google Cloud.

4.‏ יצירת נושא Pub/Sub כדי לקבל את ההתראה

כדי ליצור נושא Pub/Sub, אפשר לבצע את השלבים הבאים במסוף Google Cloud:

  1. מחפשים את האפשרות Pub/Sub בתיבת החיפוש ומנווטים אל Pub/Sub. 935028bd8f6328ef.png
  2. אם אתם לא נמצאים עדיין בכרטיסייה נושאים, לוחצים עליה. 7fd8bf91386a88fd.png
  3. לוחצים על הלחצן יצירת נושא. cd9d197f9023c41b.png
  4. נותנים שם לנושא.

173f313b4a3c4934.png

  1. לוחצים על הלחצן Create. ca9a02477da21a44.png
  2. מעתיקים את שם הנושא באמצעות הלחצן של סמל ההעתקה. צריך אותה בקטע הבא.

20848252ee83df93.png

5.‏ יצירת בדיקה של זמני פעילות

כדי ליצור בדיקת זמני פעילות לאפליקציית Google Cloud Run:

  1. נכנסים אל מסוף Google Cloud Platform.
  2. לוחצים על הכרטיסייה Monitoring.
  3. לוחצים על הכרטיסייה Uptime Checks.
  4. ליד החלק העליון של הדף, לוחצים על הלחצן Create Uptime Check.

96561799ca500777.png

  1. משתמשים בערכים הבאים:
  2. פרוטוקול : HTTPS
  3. סוג המשאב : כתובת URL
  4. שם המארח : מזינים את כתובת ה-URL של Cloud Run Service ללא ה-https. במסך שלמטה מוצגת דוגמה. אם אתם לא בטוחים מהי כתובת ה-URL של השירות, תוכלו להיכנס ל-Cloud Run ממסוף Google Cloud הראשי ולעבור לפרטים של שירות Cloud Run, כמו שהוסבר קודם, כדי למצוא את כתובת ה-URL של השירות.
  5. נתיב : בריאות
  6. תדירות בדיקה: דקה אחת

342865c6d921ff41.png

  1. לוחצים על המשך.
  2. מפעילים את האפשרות התאמת תוכן מופעלת.
  3. מזינים 'כל איז וול' בקטע Response Content (תוכן התגובה), המחרוזת הזו כבר נמצאת באפליקציה כשהיא שולחת תשובות מלאות.
  4. Keep

6c9ad336b5479478.png

  1. משאירים את ההגדרה Acceptable HTTP Response Code (קוד תגובה מקובל של HTTP) מוגדר לסיווגי קוד תגובה, ו-2xx בתור המחלקה היחידה של קוד התגובה. כך, רק קודי תגובה עם הערך 2xx יעברו הערכה למחרוזת, וכל דבר אחר ייספר אוטומטית כבדיקה שנכשלה. 5a75d8a9e8a11dd4.png
  2. לוחצים על המשך.
  3. בוחרים בנושא Cloud Pub/Sub כערוץ ההתראות ולוחצים על אישור.

d00db9f6ac56d07c.png

  1. לוחצים על המשך.
  2. צריך להוסיף שם פריט שהמערכת יכולה לזהות d639135da780cce3.png
  3. לוחצים על הלחצן בדיקה.

968753a66ed43a75.png

  1. בודקים ולוחצים על הלחצן יצירה כשהכול מוכן 72e5e2081a36d902.png

המערכת תיצור בדיקת זמני פעילות ותתחיל לעקוב אחר האפליקציה שלכם ב-Cloud Run. אפשר לראות את הסטטוס של בדיקת זמני הפעילות בכרטיסייה Uptime Checks.

3fd026b0c07ef4ec.png

6.‏ מזל טוב

כל הכבוד! הגדרת בהצלחה את בדיקת זמני הפעילות לשליחת התראות אל Pub/Sub!