במאמר הזה מוסבר איך להגדיר מעקב מבוזר למאזני עומסים של אפליקציות באמצעות Cloud Trace. אתם יוצרים מדיניות טלמטריה שמטרגטת את כלל ההעברה של מאזן העומסים, ואז צופים בתוצאות המעקב ב-Cloud Trace.
הדוגמאות במסמך הזה מתבססות על אפליקציה למסחר אלקטרוני עם הארכיטקטורה הבאה:
- מאזן עומסים גלובלי חיצוני של אפליקציות (ALB) שמקבל תנועת לקוחות לחנות אינטרנטית.
- מאזן עומסים פנימי אזורי של אפליקציות (ALB) שמנתב בקשות לתשלום מהחנות לשירותים פנימיים של עגלת קניות, מלאי ותשלומים.
במאמר סקירה כללית של מעקב מבוזר מוסבר איך פועל מעקב מבוזר, כולל מצבי דגימה וטיפול בכותרת של הקשר המעקב.
לפני שמתחילים
מפעילים בפרויקט את Cloud Trace API ואת Network Services API:
gcloud services enable \ cloudtrace.googleapis.com \ networkservices.googleapis.comמוודאים שפרסתם מאזן עומסים נתמך. למידע נוסף, קראו את המאמרים הבאים:
שימו לב לשם ולהיקף של כלל ההעברה של מאזן העומסים. ההיקף של כלל ההעברה תלוי בסוג של מאזן העומסים:
- כלל העברה גלובלי: משמש במאזני עומסים חיצוניים גלובליים של אפליקציות ובמאזני עומסים פנימיים של אפליקציות בכמה אזורים.
- כלל העברה אזורי: משמש במאזני עומסים חיצוניים אזוריים של אפליקציות ובמאזני עומסים פנימיים אזוריים של אפליקציות.
כדי להציג את רשימת כללי ההעברה בפרויקט, משתמשים בפקודה
gcloud compute forwarding-rules list:gcloud compute forwarding-rules list
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות להגדרת כללי מדיניות טלמטריה ולצפייה במעקבים, בקשו מהאדמין להקצות לכם את התפקידים הבאים של ניהול זהויות והרשאות גישה (IAM) בפרויקט:
- כדי ליצור, לעדכן או למחוק כללי מדיניות טלמטריה:
אדמין של רשת Compute
(
roles/compute.networkAdmin) או אדמין של Compute (roles/compute.admin) - כדי לצפות במעקבים במסוף Google Cloud :
משתמש ב-Cloud Trace
(
roles/cloudtrace.user)
כדי לאפשר למאזן העומסים לכתוב קטעי מעקב ב-Cloud Trace, צריך לתת את התפקיד "סוכן Cloud Trace" (roles/cloudtrace.agent) בפרויקט לחשבונות השירות הבאים:
- סוכן השירות של Compute Engine:
service-PROJECT_NUMBER@compute-system. - סוכן השירות של אבטחת הרשת:
service-PROJECT_NUMBER@gcp-sa-networksecurity. - חשבונות השירות של עומסי העבודה בקצה העורפי, אם הקצוות העורפיים מייצאים את הטווחים שלהם ל-Cloud Trace. בלי התפקיד הזה, ב-Cloud Trace יוצג רק הטווח של מאזן העומסים, והמעקב לא יכלול טווחים של קצה עורפי.
מחליפים את PROJECT_NUMBER במספר הפרויקט ב-Google Cloud .
כדי לקרוא הסבר על מתן תפקידים, קראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
הגדרת מדיניות טלמטריה
מגדירים מדיניות טלמטריה בקובץ YAML בפורמט הבא:
name: "projects/PROJECT_ID/locations/LOCATION/telemetryPolicies/POLICY_NAME"
displayName: "DISPLAY_NAME"
telemetryTarget:
resources:
- "FORWARDING_RULE_URI"
tracingConfiguration:
samplingRate: SAMPLING_RATE
parentBasedSampling:
enabled: ENABLE_PARENT_BASED_SAMPLING
samplingRate: PARENT_BASED_SAMPLING_RATE
בטבלה הבאה מתוארים השדות במדיניות טלמטריה:
| שדה | תיאור |
|---|---|
name |
שם המשאב של מדיניות הטלמטריה. מחליפים את מה שכתוב בשדות הבאים:
|
displayName |
זה שינוי אופציונלי. שם קריא לאנשים (DISPLAY_NAME) של מדיניות הטלמטריה. |
telemetryTarget.resources |
רשימה של שמות המשאבים המלאים (
|
tracingConfiguration.samplingRate |
שיעור הבקשות למעקב (SAMPLING_RATE), שצוין כערך מ-0.0 (0%) עד 1.0 (100%). לדוגמה,
0.01 דוגם 1% מהבקשות. ערך ברירת המחדל הוא 0.0. |
tracingConfiguration.parentBasedSampling.enabled |
זה שינוי אופציונלי. האם מאזן העומסים מכבד את הדגל שנדגם בכותרת traceparent הנכנסת של W3C (ENABLE_PARENT_BASED_SAMPLING) הוא true או false. ערך ברירת המחדל הוא false. נתמך רק במאזני עומסים פנימיים של אפליקציות (ALB). |
tracingConfiguration.parentBasedSampling.samplingRate |
זה שינוי אופציונלי. החלק היחסי של הבקשות שנדגמו במעלה הזרם למעקב (PARENT_BASED_SAMPLING_RATE), שצוין כערך מ-0.0 עד 1.0. לדוגמה, 1.0 עוקב אחרי כל הבקשות שלקוח או שירות במעלה הזרם כבר דגמו. |
הגדרת מעקב במאזן עומסים חיצוני
בדוגמה הזו, דגימה הסתברותית מוגדרת בכלל ההעברה של מאזן עומסים גלובלי חיצוני של אפליקציות (ALB) לחנות מסחר אלקטרוני. תדירות דגימה של 0.01 עוקבת אחרי 1% מהבקשות, וכך מתעדת את זמן האחזור והשגיאות בקצוות, תוך שמירה על עלויות הטמעה צפויות ב-Cloud Trace בזמן תנועה גבוהה.
יוצרים קובץ YAML בשם
storefront-tracing-policy.yaml:cat <<EOF > storefront-tracing-policy.yaml name: "projects/PROJECT_ID/locations/global/telemetryPolicies/storefront-tracing-policy" displayName: "Tracing policy for the storefront load balancer" telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/FORWARDING_RULE_NAME" tracingConfiguration: samplingRate: 0.01 EOFמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב-Google Cloud -
FORWARDING_RULE_NAME: השם של כלל ההעברה הגלובלי של מאזן העומסים
במאזן עומסים חיצוני אזורי של אפליקציות, מחליפים את
globalבשם המדיניות באזור של כלל ההעברה, ומשתמשים בפורמט של כלל ההעברה האזורי.-
מייבאים את מדיניות הטלמטריה באמצעות הפקודה
gcloud beta network-services telemetry-policies import:gcloud beta network-services telemetry-policies import storefront-tracing-policy \ --source=storefront-tracing-policy.yaml \ --location=global
הגדרת מעקב במאזן עומסים פנימי
בדוגמה הזו מוגדר מאזן עומסים פנימי אזורי של אפליקציות (ALB) לשירותי תשלום וקופה פנימיים. המדיניות משתמשת בהגדרות הדגימה הבאות:
- ערך בסיס
samplingRateשל0.01(1%) לבקשות שלא כוללות החלטת דגימה במעלה הזרם. - דגימה מבוססת-הורה עם
samplingRateשל1.0(100%), כך שכל בקשת תשלום שכבר נדגמה בחנות או על ידי שירות במעלה הזרם, נבדקת במאזן העומסים הפנימי.
כדי להגדיר את המדיניות:
יוצרים קובץ YAML בשם
checkout-tracing-policy.yaml:cat <<EOF > checkout-tracing-policy.yaml name: "projects/PROJECT_ID/locations/REGION/telemetryPolicies/checkout-tracing-policy" displayName: "Tracing policy for the internal checkout load balancer" telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/regions/REGION/forwardingRules/FORWARDING_RULE_NAME" tracingConfiguration: samplingRate: 0.01 parentBasedSampling: enabled: true samplingRate: 1.0 EOFמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב-Google Cloud -
REGION: האזור של כלל ההעברה, למשלus-central1 -
FORWARDING_RULE_NAME: השם של כלל ההעברה האזורי של מאזן העומסים
במאזן עומסים פנימי של אפליקציות באזורים שונים, משתמשים ב-
globalבתור המיקום בשם המדיניות, ובפורמט של כלל העברה גלובלי.-
מייבאים את מדיניות הטלמטריה:
gcloud beta network-services telemetry-policies import checkout-tracing-policy \ --source=checkout-tracing-policy.yaml \ --location=REGION
אימות מדיניות הטלמטריה
כדי לוודא שמדיניות הטלמטריה קיימת ומטרגטת את כללי ההעברה הנכונים, משתמשים בפקודה gcloud beta network-services telemetry-policies describe:
gcloud beta network-services telemetry-policies describe POLICY_NAME \
--location=LOCATION
מחליפים את מה שכתוב בשדות הבאים:
-
POLICY_NAME: שם מדיניות הטלמטריה -
LOCATION:globalאו האזור של מדיניות הטלמטריה
כדי להציג את כל כללי מדיניות הטלמטריה במיקום מסוים, משתמשים בפקודה gcloud beta network-services telemetry-policies list:
gcloud beta network-services telemetry-policies list \
--location=LOCATION
עדכון של מדיניות טלמטריה
כדי לשנות את הגדרות הדגימה או להחיל את אותה מדיניות על כללי העברה נוספים:
עורכים את קובץ ה-YAML של המדיניות. לדוגמה, כדי להחיל את מדיניות החנות על כמה כללי העברה גלובליים, מוסיפים כל כלל העברה לרשימה
telemetryTarget.resources:telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/storefront-https-fr" - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/cart-https-fr"מייבאים את המדיניות המעודכנת:
gcloud beta network-services telemetry-policies import POLICY_NAME \ --source=POLICY_FILE \ --location=LOCATIONמחליפים את הערך של
POLICY_FILEבנתיב לקובץ ה-YAML של המדיניות.
הצגת המעקבים
אחרי שמגדירים את המעקב ושולחים תנועה דרך מאזן העומסים, אפשר לראות את המעקבים במסוף Google Cloud :
נכנסים לדף Trace Explorer במסוף Google Cloud .
בוחרים את הפרויקט ב- Google Cloud .
בשדה Filter, מזינים מסנן כדי למצוא את המעקבים שרוצים לבדוק. לדוגמה, מזהה מאפיין או סף זמן אחזור.
אם רוצים לחקור מעקב ספציפי, עוברים לסרגל הכלים, לוחצים על Trace ID ומזינים את מזהה המעקב.
לוחצים על מעקב כדי לראות את הטווחים שלו בתצוגות של ציר הזמן והתרשים.
בודקים את ה-span של מאזן העומסים כדי לראות פרטים כמו משך הזמן הכולל וה-backend שטיפל בבקשה.
מידע נוסף על השימוש ב-Trace Explorer זמין במאמר חיפוש ועיון במעקבים.
התאמה בין נתוני מעקב לבין יומנים ומדדים
כדי לבודד את מקור זמן האחזור או השגיאות, אתם יכולים לקשר בין קטעי המעקב של מאזן העומסים לבין יומני הבקשות והמדדים.
קישור בין נתוני מעקב ליומנים
אם מפעילים רישום ביומן בשירות לקצה העורפי, מאזן העומסים מוסיף שדה trace לכל רשומת יומן של בקשה שנדגמה. השדה הוא בפורמט הבא:
projects/PROJECT_ID/traces/TRACE_ID
הצגת מעקב מרשומת יומן של מאזן עומסים
נכנסים לדף Logs Explorer במסוף Google Cloud .
מרחיבים רשומת יומן של מאזן עומסים.
בסיכום של רשומת היומן, לוחצים על סמל המעקב.
לוחצים על הצגת פרטי המעקב.
המעקב נפתח בדף Trace Explorer.
הצגת יומנים של מאזן עומסים ממעקב
נכנסים לדף Trace Explorer במסוף Google Cloud .
לוחצים על מעקב כדי לפתוח את החלונית Details.
לוחצים על View Logs.
רשומות היומן של מאזן העומסים לבקשה יופיעו.
התאמה בין נתוני מעקב למדדים
השוו בין קפיצות חדות בזמן האחזור במדדים של מאזן העומסים לבין פירוט של טווחי המעקב, כדי לקבוע אם מקור זמן האחזור הוא במאזן העומסים או בקצה העורפי. אפשר להציג את המדדים האלה ולשלוח אליהם שאילתות ב-Metrics Explorer ב-Cloud Monitoring. משתמשים במדדים הבאים:
- מאזן עומסים גלובלי חיצוני של אפליקציות (ALB):
loadbalancing.googleapis.com/https/total_latenciesו-loadbalancing.googleapis.com/https/backend_latencies - מאזן עומסים חיצוני אזורי של אפליקציות (ALB):
loadbalancing.googleapis.com/https/external/regional/total_latencies - מאזן עומסים פנימי של אפליקציות (ALB):
loadbalancing.googleapis.com/https/internal/total_latencies
השבתת המעקב
כדי להפסיק את המעקב אחרי בקשות של מאזן עומסים, מבצעים אחת מהפעולות הבאות:
- מסירים את כלל ההעברה מהרשימה
telemetryTarget.resourcesשל המדיניות, ואז מייבאים את המדיניות המעודכנת. מוחקים את מדיניות הטלמטריה באמצעות הפקודה
gcloud beta network-services telemetry-policies delete:gcloud beta network-services telemetry-policies delete POLICY_NAME \ --location=LOCATION
שיטות מומלצות
כשמגדירים מעקב מבוזר, כדאי לפעול לפי השיטות המומלצות הבאות:
- התאמת תדירות הדגימה לנפח התנועה: בעומסי עבודה בסביבת הייצור עם נפח תנועה גבוה, כדאי להשתמש ב-
samplingRateשל0.01(1%) או0.001(0.1%) כדי לאזן בין יכולת התצפית לבין עלויות הטמעת הנתונים ב-Cloud Trace. - שימוש בדגימה מבוססת-הורה בארכיטקטורות מרובות שכבות: במאזני עומסים פנימיים של אפליקציות (ALB), מפעילים דגימה מבוססת-הורה כדי שהבקשות שנדגמו במעלה הזרם יתועדו בכל קפיצה פנימית.
- הוספת כלים לקצוות העורפיים: משתמשים ב-OpenTelemetry SDK עם מפיץ ההקשר של W3C Trace Context בשירותים לקצה העורפי, כדי שהטווחים של הקצה העורפי יצטרפו למעקב שמאזן העומסים מתחיל.
פתרון בעיות
בקטע הזה מתוארות בעיות נפוצות והפתרונות שלהן.
המעקבים לא מופיעים ב-Cloud Trace
אם המעקבים לא מופיעים ב-Cloud Trace, בצעו את הפעולות הבאות:
מוודאים ש-Cloud Trace API מופעל בפרויקט:
gcloud services enable cloudtrace.googleapis.com \ --project=PROJECT_IDמוודאים שהתפקיד "סוכן Cloud Trace" (
roles/cloudtrace.agent) מוקצה לחשבונות השירות שמפורטים בקטע התפקידים הנדרשים.מוודאים שמדיניות הטלמטריה קיימת במיקום הנכון ושהיא מטרגטת את כלל ההעברה הנכון. מידע נוסף זמין במאמר אימות מדיניות הטלמטריה.
צריך לבדוק את ה-
samplingRateשהוגדר. אם נפח התעבורה או תדירות הדגימה נמוכים, יכול להיות שמאזן העומסים לא יתעד את יומני המעקב באופן מיידי. כדי לוודא שהמעקב פועל, מגדירים באופן זמני אתsamplingRateל-1.0, ואז משחזרים את קצב הייצור בסיום הבדיקה.
הטווחים של המעקב מנותקים או לא מלאים
אם ה-spans של מאזן העומסים מופיעים כמעקבים נפרדים ברמה הבסיסית (root) במקום כחלק מהמעקבים של האפליקציה, בצעו את הפעולות הבאות:
במאזני עומסים פנימיים של אפליקציות (ALB), צריך לוודא שדגימה מבוססת-הורה מופעלת (
parentBasedSampling.enabled: true) במדיניות הטלמטריה.מוודאים שלחשבונות השירות של עומסי העבודה של הלקוח ושל הקצה העורפי יש את התפקיד "סוכן Cloud Trace" (
roles/cloudtrace.agent), כדי שאפשר יהיה לייצא את הטווחים שלהם ל-Cloud Trace.מוודאים שהאפליקציות משתמשות ב-OpenTelemetry SDK עם הפצה מופעלת של הקשר יומן מעקב של W3C, כדי שהכותרת
traceparentתופץ בין גבולות השירות. מידע נוסף זמין במסמכי התיעוד של OpenTelemetry בנושא הפצת הקשר.
המאמרים הבאים
- סקירה כללית על מעקב מבוזר
- חיפוש ועיון בנתוני מעקב
- רישום נתונים ביומן ומעקב אחרי הביצועים של מאזן עומסים גלובלי חיצוני של אפליקציות (ALB)
- רישום נתונים ביומן ומעקב אחרי הביצועים של מאזן עומסים אזורי חיצוני של אפליקציות (ALB)
- רישום נתונים ביומן ומעקב אחרי הביצועים של מאזן עומסים פנימי של אפליקציות (ALB)