1. מבוא
ב-codelab הזה נראה איך משתמשים בתכונה עזרה בכתיבה כדי ליצור בדיקות של מעקב סינתטי לשירותים קיימים.
מה עושים...
- תפרסו API ב-Google Cloud Run, שישמש כבסיס לשירות שנבדוק.
- לאחר מכן תכתבו Synthetic Monitor, שהיא תכונה של Cloud Monitoring.
- תשתמשו בתכונה 'עזרה בכתיבה' כדי לכתוב את המוניטור הסינתטי.
מה תלמדו...
- מהו מעקב סינתטי.
- איך משתמשים בתכונה 'עזרה בכתיבה' של Gemini ב'מעקב סינתטי' כדי ליצור תרחישי בדיקה שיאמתו את הפונקציונליות העיקרית של השירות.
מה צריך...
- דפדפן האינטרנט Chrome
- חשבון Gmail
- פרויקט ב-Cloud עם חיוב מופעל
- Gemini Code Assist מופעל בפרויקט שלכם ב-Cloud
שיעור ה-Lab הזה מיועד למפתחים בכל הרמות, כולל מתחילים. אף על פי שאפליקציית הדוגמה כתובה בשפת Python, לא צריך להכיר את התכנות ב-Python כדי להבין מה קורה.
2. הגדרה
עכשיו נפעיל את Gemini for Cloud בפרויקט שלנו ב-Google Cloud. כך עושים את זה:
- נכנסים לכתובת https://console.cloud.google.com ומוודאים שבחרתם את הפרויקט ב-Google Cloud שבו אתם מתכננים לעבוד במעבדה הזו. לוחצים על הסמל של Gemini בפינה השמאלית העליונה.

- חלון הצ'אט של Gemini for Cloud ייפתח בצד שמאל של המסוף. לוחצים על הלחצן 'הפעלה' כמו שמוצג למטה. אם לא מופיע הלחצן הפעלה ומופיע במקומו ממשק של Chat, סביר להניח שכבר הפעלתם את Gemini for Cloud בפרויקט, ואתם יכולים לעבור ישירות לשלב הבא.

- אחרי שמפעילים אותו, אפשר לשאול את Gemini for Cloud שאילתה או שתיים כדי לבדוק אותו. מוצגות כמה שאילתות לדוגמה, אבל אפשר לנסות את השאילתה הבאה
What is Synthetic Monitoring?

Gemini for Cloud ייתן תשובה לשאלה שלכם. אפשר לעיין ברשימת מסמכי העזר שסיפקנו כדי ללמוד איך לכתוב בדיקות סינתטיות ב-Google Cloud.
כדי לסגור את חלון הצ'אט של Gemini for Cloud, לוחצים על הסמל
בפינה השמאלית העליונה.
3. פריסת דוגמה של Inventory API ב-Google Cloud Run
לפני שנתחיל לכתוב את הבדיקות, נצטרך API לדוגמה שנוכל לבדוק. לשם כך, נכתוב ממשק API פשוט למלאי, שנפרוס ב-Google Cloud Run.
אנחנו נשתמש ב-Cloud Shell IDE, סביבת פיתוח מנוהלת מלאה שמבוססת על Code OSS. הסביבה כוללת את התוסף Cloud Code IDE, שמאפשר לעבוד ביעילות עם שירותי Google Cloud. כך עושים את זה:
- עוברים אל ide.cloud.google.com. יכול להיות שיעבור זמן מה עד שסביבת הפיתוח המשולבת תופיע, אז כדאי לחכות בסבלנות.
- לוחצים על הלחצן Cloud Code - Sign in (קוד בענן – כניסה) בשורת הסטטוס התחתונה, כמו שמוצג. נותנים הרשאה לפלאגין לפי ההוראות. אם בשורת המצב מופיע הכיתוב Cloud Code - no project, בוחרים באפשרות הזו ואז בוחרים את הפרויקט הספציפי ב-Google Cloud שרוצים לעבוד איתו.

- לוחצים על הלחצן Gemini בפינה השמאלית התחתונה כמו שמוצג, ובוחרים בפעם האחרונה את פרויקט Google Cloud הנכון. אם תתבקשו להפעיל את Cloud AI Companion API, תצטרכו לעשות זאת כדי להמשיך.
- אחרי שבוחרים את פרויקט Google Cloud, מוודאים שהוא מופיע בהודעת הסטטוס של Cloud Code בסרגל הסטטוס, וגם ש-Code Assist מופעל בצד ימין בסרגל הסטטוס, כמו שמוצג כאן:

- לוחצים על שם הפרויקט ב-Google Cloud בסרגל הסטטוס שבתחתית המסך.

- תוצג רשימה של אפשרויות. לוחצים על New Application (אפליקציה חדשה) מהרשימה שלמטה.

- בוחרים באפשרות Cloud Run.
- בוחרים את תבנית האפליקציה Python (Flask): Cloud Run.
- שומרים את האפליקציה החדשה במיקום הרצוי.
- תוצג הודעה שמאשרת שהבקשה נוצרה, וייפתח חלון חדש עם הבקשה שנטענה, כמו שמוצג בהמשך. קובץ
README.mdייפתח. אפשר לסגור את התצוגה הזו עכשיו.

- ב-Explorer, עוברים לקובץ
app.pyומחליפים אותו בתוכן שמוצג בהמשך:
from flask import Flask, jsonify, request
app = Flask(__name__)
inventory = [
{
'id': 1,
'name': 'Item 1',
'quantity': 10
},
{
'id': 2,
'name': 'Item 2',
'quantity': 20
},
{
'id': 3,
'name': 'Item 3',
'quantity': 30
}
]
@app.route('/inventory', methods=['GET'])
def get_inventory():
return jsonify(inventory)
@app.route('/inventory/<int:id>', methods=['GET'])
def get_inventory_item(id):
for item in inventory:
if item['id'] == id:
return jsonify(item)
return jsonify({'error': 'Item not found'}), 404
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=8080)
- הגיע הזמן לפרוס את Inventory API ב-Cloud Run. צריך להפעיל סשן חדש של Terminal מ-Cloud Shell IDE דרך סמל התפריט בפינה הימנית העליונה. לוחצים על סמל התפריט ואז על Terminal → New Terminal כמו שמוצג למטה:

- בסשן של הטרמינל, מריצים את הפקודה הבאה:
gcloud run deploy --source .
- הפקודה שלמעלה תבקש לבחור
regionלפריסה, צריך לבחור באפשרותus-central1. תתבקשו לאשר אתunauthenticated invocations. כדי לאשר, תצטרכו לומרy. - אחרי שהשירות יופעל בהצלחה, תתקבל כתובת URL של השירות. רושמים את זה.
4. בדיקה של Inventory API
עכשיו אפשר לבדוק את Inventory API. לשם כך, מפעילים את הדפדפן ומזינים את נקודות הקצה הבאות:
SERVICE_URL/inventory
צריכים להיות 3 פריטים במלאי בהתאם לנתוני הדוגמה בשירות. דוגמה לתשובה:
[
{
"id": 1,
"name": "Item 1",
"quantity": 10
},
{
"id": 2,
"name": "Item 2",
"quantity": 20
},
{
"id": 3,
"name": "Item 3",
"quantity": 30
}
]
עכשיו אנחנו יכולים לאחזר פריט מלאי ספציפי באמצעות כתובת ה-URL שבהמשך. הפונקציה הזו אמורה להחזיר את פריט המלאי עם הערך 1 במאפיין id.
SERVICE_URL/inventory/1
התגובה אמורה להיות דומה לזו:
{
"id": 1,
"name": "Item 1",
"quantity": 10
}
לבסוף, אפשר לנסות לאחזר פריט מלאי שלא קיים.
SERVICE_URL/inventory/200
הפונקציה אמורה להחזיר הודעת שגיאה כי אין פריט מלאי עם הערך id של 200. התגובה אמורה להיות דומה לזו:
{
"error": "Item not found"
}
עכשיו אפשר לכתוב את הבדיקות של Synthetic Monitoring ב-Cloud Monitoring בעזרת Gemini.
5. Synthetic Monitoring in Google Cloud
כפי שמצוין במסמכי התיעוד, בדיקות סינתטיות מאפשרות להגדיר מה רוצים לבדוק ורצף של בדיקות. לדוגמה, אפשר לבדוק את דף הכניסה של האפליקציה, את תהליך התשלום בחנות המסחר האלקטרוני או את הקריאות ל-API שהאפליקציה מבצעת לשירותים של צד שלישי.
כשיוצרים בדיקה סינתטית, פורסים פונקציית Cloud Functions מדור שני שמבוססת על Cloud Run. הפונקציה צריכה להיכתב ב-Node.js ולהסתמך על מסגרת Synthetics SDK בקוד פתוח. Cloud Monitoring מפיץ את המסגרת הזו ומנהל אותה.
Cloud Monitoring תומך בסוגים הבאים של בדיקות סינתטיות:
- בדיקות סינתטיות מותאמות אישית או כאלה שמבוססות על Mocha מאפשרות לכם לפרוס פונקציית Cloud Functions למטרה יחידה שניתנת להגדרה מלאה.
- בודקי קישורים שבורים מאפשרים לציין אפשרויות כמו URI המקור, מספר הקישורים שנבדקו ומספר הניסיונות החוזרים, לפני שמפעילים Cloud Function שהוגדר מראש.
Cloud Monitoring מבצע הרבה פעולות כבדות בזמן ההרצה של הבדיקות הסינתטיות האלה. הוא אחראי על:
- הרצה תקופתית של פונקציה של Cloud Functions.
- איסוף ואחסון של תוצאות כל הרצה:
- מידע על הצלחה וכישלון, כמו הודעת השגיאה, סוג השגיאה ושורת הקוד
- זמן הביצוע
- יומנים
- מדדים
אנחנו נעזר ב-Gemini, ובמיוחד בתכונה Help Me Write שתספק לנו את הקוד הראשוני לבדיקות, כדי שנוכל להשתמש בו לבדיקה וגם כדי לבנות עליו תכונות נוספות. בואו נתחיל.
6. כתיבת הכלי Synthetic Monitor לתרחישי בדיקה של Inventory API
עכשיו נעבור אל מסוף Cloud כדי לכתוב את המוניטור הסינתטי.
נכנסים לדף Synthetic Monitoring במסוף Cloud. יוצג הדף שמופיע בהמשך:

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

הזנו שם s1, אבל אפשר לבחור שם אחר. שימו לב ללחצן HELP ME CODE (עזרה בכתיבת קוד) במסך שלמעלה. לוחצים על הפריט שמופיע.
יופיע חלון קופץ שבו תצטרכו להזין את ההנחיה שמתארת את תרחישי הבדיקה שאתם רוצים להריץ כדי לוודא שממשק Inventory API פועל בצורה תקינה.

בתיבת העריכה של ההנחיה, משתמשים בהנחיה כמו זו שמופיעה למטה:
Help me write Node.js based synthetic test script with the assert module that performs the following tests:
1. A GET operation on SERVICE_URL/inventory. The http response code returned should be 200.
2. A GET operation on SERVICE_URL/inventory/1. The http response code returned should be 200. The response data is JSON format. It should be a single object with attributes as follows: "id" value should be 1, "name" value should be "Item 1" and "quantity" value should be 10.
3. A GET operation on SERVICE_URL/inventory/200. The https response code returned should be 404. The response data is in JSON format. It should be a single object with attributes as follows: "error" value should be "Item not found".
שימו לב שסיפקנו 3 תרחישי בדיקה, ועליכם להחליף את הערך SERVICE_URL בשם השירות בפועל של Cloud Run עבור השירות שלכם.
אחרי שלוחצים על GENERATE (יצירה), Gemini ייצור את הקוד של חבילת הבדיקה וגם את הקובץ package.json, כמו שמוצג למטה. יכול להיות שהקוד שיווצר יהיה שונה מהקוד שמופיע בהמשך. מעיינים בקוד ובקבצים של יחסי התלות בקובץ package.json.

לוחצים על INSERT INTO CLOUD FUNCTION (הוספה ל-Cloud Function). יופיע טופס ליצירת פונקציה ב-Cloud Functions עם הערכים הנדרשים.

לוחצים על APPLY FUNCTION ואז על הלחצן CREATE. בדוגמה הזו לא בחרנו אף הגדרה של ערוץ התראות, אבל אתם יכולים לבחור הגדרה כזו.
תהליך היצירה של פונקציה של Cloud Functions יתחיל ברקע. הפעולה הזו עשויה להימשך כמה דקות, אז כדאי לחכות בסבלנות.

אחרי שפורסים בהצלחה את הפונקציה ב-Cloud Functions, Cloud Monitoring מתחיל להפעיל את ה-Synthetic Monitor בשבילכם.
בהתחלה לא יופיעו קריאות, כמו שרואים בתמונה הבאה:

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

אם לוחצים על השם של הכלי לניטור סינתטי (למשל s1), מוצגות ההרצות השונות כמו בדוגמה הבאה:

7. מעולה!
הצלחתם לפרוס API לדוגמה ב-Google Cloud Run ולכתוב בדיקות של ניטור סינתטי כדי לאמת את הפונקציונליות של השירות. במהלך התהליך, השתמשת ב-Gemini כדי ליצור את הקוד של חבילת הבדיקה.