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

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

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

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

רכיבים יכולים להעביר את החלטת הדגימה שלהם לרכיב הצאצא באמצעות הקשר. לדוגמה, בכותרת traceparent של World Wide Web Consortium ‏ (W3C), הדגל sampled מאחסן את החלטת הדגימה של הרכיב העליון.

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

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

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

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

דגימה לפי מיקום הראש

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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