דגימת נתוני מעקב

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

דגימה שונה מהעברת הקשר. הדגימה קובעת אם רכיב מסוים יתעד נתונים של טווח. לעומת זאת, בהעברת הקשר, מזהי מעקב מועברים בין רכיבים כדי שאפשר יהיה לקשר בין טווחי זמן שנדגמו.

אסטרטגיות דגימה

ההחלטות לגבי הדגימה יכולות להתבסס על תחילת הנתונים או על סוף הנתונים. בדגימה מבוססת-כותרת, ההחלטה לגבי הדגימה מתקבלת כשהבקשה מתקבלת על ידי הרכיב שמבצע את העיבוד של הטווח. בדגימה מבוססת-זנב, ההחלטה לגבי הדגימה מתקבלת רק אחרי שהמעקב כולו זמין.

יכול להיות שתיתקלו בביטוי '100% דגימה' במסמכים של מערכות מעקב מבוזר. הביטוי הזה יכול להתייחס למעקב או לרכיב. כשמחילים את המאפיין הזה על מעקב, המשמעות היא שכל הטווחים נדגמו, או באופן שווה ערך, שהמעקב הושלם. כשמחילים את ההגדרה על רכיב, המשמעות היא שהרכיב דוגם כל span שהוא מעבד.

דגימה לפי ראש

בדרך כלל, דוגמים שמבוססים על ראש מוגדרים לדגום תמיד טווחים או להשתמש באסטרטגיית דגימה הסתברותית:

  • בהגדרות always sample, רכיבים שמעבדים וכותבים נתוני מעקב דוגמים כל span. מומלץ שכל העקבות יהיו מלאים, ולכן יהיה לכם את המידע הדרוש לפתרון בעיות. עם זאת, הגדרה של דגימה תמידית עלולה לגרום לחריגה ממכסות או ממגבלות על עלויות האחסון.

  • בדגימה הסתברותית, לא כל הטווחים נדגמים. ההתנהגות בפועל של הגישה הזו תלויה בהטמעה של הרכיב. ביישומים מסוימים, לכל הטווחים יש הסתברות זהה להידגם. במקרים אחרים, ההחלטה לגבי הדגימה של ה-parent משפיעה על הדגימה של ה-span.

יכול להיות שמעקב לא יכלול כל span. אם אתם משתמשים בדגימה הסתברותית, חורגים מהמכסה או משתמשים ברכיבים שמבצעים עיבוד אבל לא דגימה של טווחים, צפויים להיות עקבות לא מלאים.

דגימה מבוססת-זנב

‫Cloud Trace לא תומך בדגימה מבוססת-זנב. החלטות לגבי דגימה צריכות להתקבל ברכיבים ששולחים נתונים ל-Cloud Trace.

אם משתמשים בדגימה מבוססת-זנב, אפשר גם להשתמש בשרת ביניים כדי לקבל נתוני מעקב, להעריך החלטות דגימה ולהעביר טווחי זמן שנדגמו אל Trace. לדוגמה, אפשר להשתמש ב-OpenTelemetry Collector עם Tail Sampling Processor כדי לקבל החלטה לגבי דגימה באיחור.

אם אתם מתכננים להשתמש בדגימה של הזנב, כדאי לשקול את הנקודות הבאות:

  • צריך לאחסן את כל הטווחים במעקב לפני שמחליטים על דגימה. לכן, יכול להיות שתצטרכו נפח אחסון זמני גדול או שתחויבו בעלויות נוספות.
  • באופן כללי, כל הרכיבים שיכולים ליצור טווחים למעקב צריכים לתאם ביניהם. בדרך כלל, מפתחים שמשתמשים ב-OpenTelemetry מעבירים את כל הטווחים לאותו אוסף של אותו מזהה מעקב.

רכיבים מקבלים החלטות לגבי דגימה

כל רכיב מקבל החלטה משלו לגבי הדגימה של הטווח שהוא מעבד. עם זאת, החלטת הדגימה של ההורה, שעשויה להיות זמינה לרכיב דרך הקשר של המעקב, יכולה להשפיע על ההחלטה של הרכיב. אפליקציות שמשתמשות בכותרת traceparent יכולות להעביר את החלטת הדגימה של ההורה באמצעות הסימון sampled.

לדוגמה, נניח שלכל רכיב יש כלל שאומר: "אם טווח האב נדגם, צריך לדגום את הטווח הנוכחי; אחרת, צריך לדגום 50% מהטווחים". בתרחיש הזה, הדברים הבאים נכונים:

  • ה-root span קובע אם כל ה-spans ב-trace נדגמים.
  • כשמבצעים דגימה של ה-span הבסיסי, מתבצעת דגימה של כל ה-spans ב-trace. לכן, המעקב הושלם.

דגימה ושירותים Google Cloud

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

כשדגימה נתמכת על ידי שירות Google Cloud , בדרך כלל השירות הזה מטמיע את הפעולות הבאות:

  • תדירות דגימה שמוגדרת כברירת מחדל.
  • מנגנון שמאפשר להשתמש בהחלטת ההורה לגבי דגימה כרמז לגבי דגימת הטווח.
  • תדירות הדגימה המקסימלית.

כדי לבקש ששירות Google Cloud מסוים יתמוך בדגימה, צריך להשתמש בIssue Tracker של Google.

המאמרים הבאים