צפייה בחביון של בקשות לאפליקציות
איך אוספים נתונים של זמן אחזור מהאפליקציות ואיך צופים בהם:
יצירת אשכול Google Kubernetes Engine (GKE) באמצעות Google Cloud CLI.
מורידים ופורסים אפליקציה לדוגמה באשכול.
יוצרים מעקב על ידי שליחת בקשת HTTP לאפליקציית הדוגמה.
בודקים את נתוני זמן ההמתנה לתגובה של העקבות שיצרתם.
לפנות.
לחצו על תראו לי איך כדי לקרוא הסבר מפורט על המשימה ישירות במסוף Google Cloud :
לפני שמתחילים
-
יכול להיות שהגבלות אבטחה שהוגדרו בארגון שלכם ימנעו מכם להשלים את השלבים הבאים. מידע לפתרון בעיות זמין במאמר פיתוח אפליקציות בסביבה מוגבלת. Google Cloud
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Google Kubernetes Engine and Cloud Trace APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Google Kubernetes Engine and Cloud Trace APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירת אשכול Google Kubernetes Engine ולצפייה בטווחים של מעקב, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- אדמין ב-Kubernetes Engine (
roles/container.admin) - משתמש Cloud Trace (
roles/cloudtrace.user) - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) - אדמין Service Usage (
roles/serviceusage.serviceUsageAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירת אשכול GKE
במדריך הזה יוצרים אשכול GKE רגיל. אם אתם משתמשים במצב Autopilot ב-Google Kubernetes Engine או אם הפעלתם איחוד שירותי אימות הזהות של עומסי עבודה ב-GKE, אתם צריכים להגדיר את האפליקציה כך שתשתמש באיחוד שירותי אימות הזהויות של עומסי עבודה ב-GKE.
בסרגל הכלים, לוחצים על terminal
Activate Cloud Shell (הפעלת Cloud Shell), ואז מבצעים את השלבים הבאים ב-Cloud Shell.יצירת אשכול:
gcloud container clusters create cloud-trace-demo --zone us-central1-cהפקודה הקודמת, שייקח כמה דקות להשלים אותה, יוצרת אשכול רגיל בשם
cloud-trace-demoבאזורus-central1-c.מגדירים את
kubectlכך שפרטי הכניסה שלו יתעדכנו אוטומטית כדי להשתמש באותה זהות כמו ב-Google Cloud CLI:gcloud container clusters get-credentials cloud-trace-demo --zone us-central1-cמאמתים את הגישה לאשכול:
kubectl get nodesפלט לדוגמה של הפקודה הזו:
NAME STATUS ROLES AGE VERSION gke-cloud-trace-demo-default-pool-063c0416-113s Ready <none> 78s v1.22.12-gke.2300 gke-cloud-trace-demo-default-pool-063c0416-1n27 Ready <none> 79s v1.22.12-gke.2300 gke-cloud-trace-demo-default-pool-063c0416-frkd Ready <none> 78s v1.22.12-gke.2300
הורדה ופריסה של אפליקציה
מורידים ומפעילים אפליקציית Python, שמשתמשת ב-framework של Flask ובחבילת OpenTelemetry. תיאור האפליקציה מופיע בקטע מידע על האפליקציה בדף הזה.
ב-Cloud Shell, מבצעים את הפעולות הבאות:
שיבוט של אפליקציית Python מ-GitHub:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.gitמריצים את הפקודה הבאה כדי לפרוס את אפליקציית הדוגמה:
cd python-docs-samples/trace/cloud-trace-demo-app-opentelemetry && ./setup.shהסקריפט
setup.shיימשך כמה דקות.הסקריפט מגדיר שלושה שירותים באמצעות תמונה מוכנה מראש, ואז מחכה עד שכל המשאבים יוקצו. עומסי העבודה נקראים
cloud-trace-demo-a,cloud-trace-demo-bו-cloud-trace-demo-c.פלט לדוגמה של הפקודה הזו:
deployment.apps/cloud-trace-demo-a is created service/cloud-trace-demo-a is created deployment.apps/cloud-trace-demo-b is created service/cloud-trace-demo-b is created deployment.apps/cloud-trace-demo-c is created service/cloud-trace-demo-c is created Wait for load balancer initialization complete...... Completed.
יצירת נתוני מעקב
trace מתאר את הזמן שלוקח לאפליקציה להשלים פעולה אחת.
כדי ליצור trace, מריצים את הפקודה הבאה ב-Cloud Shell:
curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')
התגובה של הפקודה הקודמת אמורה להיראות כך:
Hello, I am service A
And I am service B
Hello, I am service C
אפשר להריץ את הפקודה curl כמה פעמים כדי ליצור כמה עקבות.
הצגת נתוני זמן האחזור
-
נכנסים לדף Trace explorer במסוף Google Cloud :
אפשר גם להשתמש בסרגל החיפוש כדי למצוא את הדף הזה.
בצילום המסך הבא מוצגת התוצאה של הרצת הפקודה
curlכמה פעמים. בתרשים מוצגים נתוני זמן אחזור מצטברים של טווחים, שמתארים פעולות משנה של מעקב.
כדי לראות יומן מעקב בפירוט, בוחרים יחידה לוגית למעקב בתרשים או שורה בטבלה.
תיבת הדו-שיח של פרטי העקבות נפתחת, כמו שמוצג בצילום המסך הבא:
תרשים גאנט מציג מידע על העקבות שנבחרו. השורה הראשונה בתרשים גאנט היא של העקבות, וכל שורה שאחריה היא של טווח בעקבות.
כדי לראות מידע מפורט על טווח, בוחרים את הטווח בתרשים גאנט.
מידע על האפליקציה
אפליקציית הדוגמה שבה נעשה שימוש במדריך הזה זמינה במאגר GitHub. במאגר הזה מפורט איך להשתמש באפליקציה בסביבות אחרות מלבד Cloud Shell. אפליקציית הדוגמה כתובה ב-Python, משתמשת ב-framework של Flask ובחבילות OpenTelemetry, ומופעלת באשכול GKE.
במדריך הזה יוצרים אשכול GKE רגיל. אם אתם משתמשים במצב Autopilot ב-Google Kubernetes Engine או אם הפעלתם איחוד שירותי אימות הזהות של עומסי עבודה ב-GKE, אתם צריכים להגדיר את האפליקציה כך שתשתמש באיחוד שירותי אימות הזהויות של עומסי עבודה ב-GKE.
אינסטרומנטציה
הקובץ app.py במאגר GitHub מכיל את הכלים שנדרשים כדי לתעד ולשלוח נתוני מעקב לפרויקט Google Cloud :
האפליקציה מייבאת כמה חבילות OpenTelemetry:
האפליקציה מודדת בקשות אינטרנט עם הקשר מעקב ומבצעת מעקב אוטומטי אחרי בקשות לטיפול ב-Flask ובקשות לשירותים אחרים:
האפליקציה מגדירה את Cloud Trace exporter כספק נתוני מעקב, שמעביר את הקשר של נתוני המעקב בפורמט של Cloud Trace:
בקטע הקוד הבא מוצג איך לשלוח בקשות ב-Python. OpenTelemetry מעביר באופן מרומז את הקשר של העקבות בשבילכם עם הבקשות היוצאות:
איך אנחנו מטפלים בבקשה
לשם הבהרה, בסעיף הזה, השם cloud-trace-demo לא מופיע בשמות השירותים. לדוגמה, השירות cloud-trace-demo-c מופיע כ-c.
האפליקציה הזו יוצרת שלושה שירותים בשמות a, b ו-c. השירות a מוגדר לקרוא לשירות b, והשירות b מוגדר לקרוא לשירות c.
פרטים על הגדרת השירותים מופיעים בקובצי ה-YAML במאגר GitHub.
כששלחתם בקשת HTTP לשירות a במדריך הזה, השתמשתם בפקודה curl הבאה:
curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')
הפקודה curl פועלת באופן הבא:
-
kubectlמאחזר את כתובת ה-IP של השירות שנקראcloud-trace-demo-a. - הפקודה
curlשולחת את בקשת ה-HTTP לשירותa. - שירות
aמקבל את בקשת ה-HTTP ושולח בקשה לשירותb. - שירות
bמקבל את בקשת ה-HTTP ושולח בקשה לשירותc. - שירות
cמקבל את בקשת ה-HTTP משירותbומחזיר את המחרוזתHello, I am service Cלשירותb. - שירות
bמקבל את התגובה משירותc, מוסיף אותה למחרוזתAnd I am service Bומחזיר את התוצאה לשירותa. - שירות
aמקבל את התגובה משירותbומצרף אותה למחרוזתHello, I am service A. - התשובה משירות
aמודפסת ב-Cloud Shell.
הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, פועלים לפי השלבים הבאים:
אם יצרתם פרויקט חדש ואתם כבר לא צריכים אותו, אתם יכולים למחוק את הפרויקט.
אם השתמשתם בפרויקט קיים, צריך לבצע את הפעולות הבאות:
כדי למחוק את האשכול, מריצים את הפקודה הבאה ב-Cloud Shell:
gcloud container clusters delete cloud-trace-demo --zone us-central1-c
המאמרים הבאים
- מידע על השפות והפלטפורמות הנתמכות זמין במאמר סקירה כללית על Cloud Trace.
לפרטים על הטמעה של כלי מדידה באפליקציות:
מידע נוסף על החלון Trace Explorer זמין במאמר איתור עקבות וצפייה בהם.
מידע נוסף על ניהול אשכולות GKE מופיע במאמר בנושא kubectl.