צפייה בחביון של בקשות לאפליקציות
Cloud Trace מאפשר לכם לאסוף ולנתח נתוני זמן אחזור של בקשות מקצה לקצה, כדי שתוכלו לזהות צווארי בקבוק בביצועים של האפליקציות שלכם. במדריך הזה לתחילת העבודה, תשתמשו ב-Google Cloud CLI כדי ליצור אשכול Google Kubernetes Engine (GKE), לפרוס אפליקציה לדוגמה, לשלוח בקשת HTTP כדי ליצור מעקב ולבדוק את נתוני ההשהיה שמתקבלים במסוףGoogle Cloud .
לחצו על תראו לי איך כדי לקרוא הסבר מפורט על המשימה ישירות במסוף 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, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). 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, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). 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 רגיל. אם אתם משתמשים במצב אוטומטי ב-Google Kubernetes Engine או אם הפעלתם איחוד זהויות של עומסי עבודה ל-GKE, אתם צריכים להגדיר את האפליקציה כך שתשתמש באיחוד זהויות של עומסי עבודה ל-GKE.
בסרגל הכלים, לוחצים על terminal
הפעלת 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כמה פעמים. בתרשים מוצגים נתוני זמן אחזור מצטברים של טווחים, שמתארים פעולות משנה של מעקב.
כדי לראות יומן מעקב בפירוט, בוחרים יחידה לוגית למעקב בתרשים או שורה בטבלה.
תיבת הדו-שיח של פרטי העקבות נפתחת, כמו שמוצג בצילום המסך הבא:
תרשים גאנט מציג מידע על העקבות שנבחרו. השורה הראשונה בתרשים גאנט היא של ה-trace, וכל שורה שאחריה היא span בתוך ה-trace.
כדי לראות מידע מפורט על טווח, בוחרים את הטווח בתרשים גאנט.
מידע על האפליקציה
אפליקציית הדוגמה שבה נעשה שימוש במדריך הזה זמינה במאגר GitHub. המאגר הזה מכיל מידע על אופן השימוש באפליקציה בסביבות שאינן Cloud Shell. אפליקציית הדוגמה כתובה ב-Python, משתמשת ב-framework של Flask ובחבילות OpenTelemetry, ומופעלת באשכול GKE.
במדריך הזה יוצרים אשכול GKE רגיל. אם אתם משתמשים במצב אוטומטי ב-Google Kubernetes Engine או אם הפעלתם איחוד זהויות של עומסי עבודה ל-GKE, אתם צריכים להגדיר את האפליקציה כך שתשתמש באיחוד זהויות של עומסי עבודה ל-GKE.
אינסטרומנטציה
הקובץ app.py במאגר GitHub מכיל את הכלים שנדרשים כדי לתעד ולשלוח נתוני מעקב לפרויקט Google Cloud :
האפליקציה מייבאת כמה חבילות OpenTelemetry:
האפליקציה מנטרת בקשות אינטרנט עם הקשר של מעקב, ועוקבת באופן אוטומטי אחרי בקשות לטיפול ב-Flask ובקשות לשירותים אחרים:
האפליקציה מגדירה את כלי הייצוא של Cloud Trace כספק של נתוני מעקב, שמעביר את הקשר של המעקב בפורמט של Cloud Trace:
בקטע הקוד הבא מוצג איך לשלוח בקשות בפייתון. 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.