במאמר הזה מוסבר איך לאבחן ולפתור בעיות ב-distributed tracing כשמשתמשים ב-Cloud Trace ובמדיניות טלמטריה עם Secure Web Proxy.
העקבות לא מופיעים ב-Trace
אם טווחי המעקב שנוצרו על ידי Secure Web Proxy לא מופיעים בכלי לבדיקת מעקב, כדאי לבדוק את הפריטים הבאים:
מוודאים ש-Cloud Trace API מופעל: מוודאים ש-Trace API (
cloudtrace.googleapis.com) מופעל בGoogle Cloud פרויקט שמארח את שער Secure Web Proxy.<pre class="devsite-click-to-copy"> gcloud services enable cloudtrace.googleapis.com </pre>מוודאים שמדיניות הטלמטריה קיימת ופעילה: משתמשים בפקודה
gcloud beta network-services telemetry-policies describeכדי לבדוק שמדיניות הטלמטריה קיימת באזור הנכון ושהיא מפנה לשער המתאים של Secure Web Proxy:gcloud beta network-services telemetry-policies describe POLICY_NAME \ --location=REGIONמחליפים את מה שכתוב בשדות הבאים:
-
POLICY_NAME: השם של מדיניות הטלמטריה, למשלmy-swp-tracing-policy -
REGION: האזור שבו מדיניות הטלמטריה שלכם נפרסת, למשלus-central1
-
בודקים את קצב הדגימה: אם הערך של
samplingRateבמדיניות נמוך (לדוגמה,0.01ל-1% או0.001ל-0.1%), יכול להיות שבקשות בדיקה ידניות לא יידגמו. כדי לוודא שהמעקב פועל, צריך לעדכן באופן זמני את המדיניות לשימוש ב-100% דגימה (samplingRate: 1.00) ואז לשחזר את קצב הייצור.אימות ה-URI של משאב שער היעד: מוודאים שבשדה
telemetryTarget.resourcesבמדיניות הטלמטריה מצוין ה-URL המדויק של המשאב או השם הקצר של שער Secure Web Proxy.//networkservices.googleapis.com/projects/PROJECT_ID/locations/REGION/gateways/GATEWAY_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
REGION: האזור שבו שער Secure Web Proxy פרוס, למשלus-central1 -
GATEWAY_NAME: השם של מופע שער Secure Web Proxy
אם יש אי התאמה במזהה הפרויקט, באזור או בשם השער, ה-proxy לא יקבל את הגדרות המדיניות.
-
בדיקת ההרשאות לניהול זהויות וגישה (IAM):
- כדי להציג טווחים במסוף Google Cloud , צריך לוודא שחשבון המשתמש או חשבון השירות קיבלו את התפקיד Cloud Trace User (
roles/cloudtrace.user). - מוודאים שהענקתם את התפקיד Cloud Trace Agent (
roles/cloudtrace.agent) לחשבונות השירות הבאים:service-PROJECT_NUMBER@compute-system.service-PROJECT_NUMBER@gcp-sa-networksecurity.- חשבונות שירות של מכונות וירטואליות (VM) של לקוחות, אם אפליקציות לקוח יוצרות או מעבירות טווחים
- כדי להציג טווחים במסוף Google Cloud , צריך לוודא שחשבון המשתמש או חשבון השירות קיבלו את התפקיד Cloud Trace User (
חסרים טווחי זמן של ילדים או תרשימי מעקב שבורים
אם טווח ה-proxy של Secure Web Proxy מופיע כשורשים עצמאיים או מנותקים במקום כטווחים צאצאים של בקשות האפליקציה, צריך לבצע את הפעולות הבאות:
הפעלת דגימה מבוססת-הורה: בקובץ ה-YAML של מדיניות הטלמטריה, מוודאים שהערך של
parentBasedSampling.enabledמוגדר ל-true.tracingConfiguration: samplingRate: 0.01 parentBasedSampling: enabled: trueכשדגימה שמבוססת על הורה מושבתת, יכול להיות ש-Secure Web Proxy ישמיט עקבות שנדגמו במעלה הזרם אם הן לא תואמות ל-
samplingRateהמקומי.בדיקת המכשור של OpenTelemetry: מוודאים שהאפליקציה משתמשת ב-SDK של OpenTelemetry שבו מופעלת העברת הקשר של מעקב מבוזר. מידע נוסף זמין במסמכי התיעוד בנושא OpenTelemetry TraceContext propagator.
נפח גבוה באופן לא צפוי של נתוני מעקב
אם אתם רואים ב-Trace נפח או עלויות של נתוני מעקב שגבוהים מהצפוי, אתם יכולים לבצע את הפעולות הבאות:
- הקטנת קצב הדגימה של בסיס הנתונים: בסביבות ייצור עם תנועת גולשים גבוהה, מגדירים את
samplingRateלשבר קטן יותר, כמו0.01(1%) או0.001(0.1%). - להסתמך על דגימה שמבוססת על הורה: חשוב לשמור על ערך הבסיס של השער
samplingRateנמוך ולהפעיל אתparentBasedSampling. השילוב הזה עוזר לוודא שה-proxy דוגם רק את הבקשות שאפליקציות במעלה הזרם בוחרות באופן ספציפי. - הסרת מדיניות זמנית לניפוי באגים: אם הפעלתם דגימה של 100% (
samplingRate: 1.00) במהלך פתרון בעיות, עליכם להסיר את המדיניות או לחזור להגדרה הקודמת אחרי שתהליך ניפוי הבאגים יסתיים.