בעזרת מעקב ב-OpenTelemetry אפשר לזהות את זמן האחזור של פעולות שונות בספריית הלקוח של Pub/Sub ולעקוב אחריהן, כמו פעולות של אגירת נתונים, ניהול חכירה ובקרה על זרימת נתונים. איסוף המידע הזה יכול לעזור לכם לנפות באגים בספריית הלקוח.
אלה כמה תרחישי שימוש אפשריים במעקב OpenTelemetry:
- זמן האחזור של הפרסום בשירות ארוך מהרגיל.
- מספר המסירות מחדש של ההודעות גבוה.
- שינוי בפונקציית הקריאה החוזרת של לקוח המנוי גורם לעיבוד להימשך זמן רב מהרגיל.
לפני שמתחילים
לפני שמגדירים את OpenTelemetry, צריך לבצע את המשימות הבאות:
- מגדירים את Pub/Sub באמצעות אחת מספריות הלקוח.
- מתקינים את OpenTelemetry SDK ומגדירים כלי לייצוא נתוני מעקב וספק של כלי מעקב.
- מפעילים את Cloud Trace API.
- הסבר על קריאת עקבות ב-Cloud Observability
התפקידים הנדרשים
כדי לוודא שלחשבון השירות יש את ההרשאות הנדרשות לייצוא נתוני מעקב ל-Cloud Trace, צריך לבקש מהאדמין להקצות לחשבון השירות את תפקידי ה-IAM הבאים בפרויקט:
-
הכל:
Cloud Trace Agent (
roles/cloudtrace.agent)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות לייצוא עקבות ל-Cloud Trace. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לייצא עקבות ל-Cloud Trace, נדרשות ההרשאות הבאות:
-
הכול:
cloudtrace.traces.patch
יכול להיות שהאדמין יוכל גם להעניק לחשבון השירות את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
תהליך העבודה של OpenTelemetry tracing
כדי להגדיר מעקב באמצעות OpenTelemetry, משתמשים בספריות הלקוח של Pub/Sub וב-OpenTelemetry SDK. כדי להתחבר לספריות Pub/Sub, צריך להגדיר באמצעות ה-SDK יצואן של נתוני מעקב וספק של נתוני מעקב. בספריות מסוימות, הגדרת ספק של כלי מעקב היא אופציונלית.
Trace exporter. ערכת OpenTelemetry SDK משתמשת ב-trace exporter כדי לקבוע לאן לשלוח מעקבים.
ספק Tracer. ספריות הלקוח של Pub/Sub משתמשות בספק של כלי המעקב כדי ליצור מעקבים.
כך מגדירים מעקב:
- יוצרים מופע של Cloud Trace OpenTelemetry exporter.
- אם נדרש, יוצרים מופע של Tracer Provider ורושמים אותו באמצעות OpenTelemetry SDK.
- מגדירים את הלקוח עם האפשרות להפעלת מעקב OpenTelemetry.
- משתמשים בספריות הלקוח של Pub/Sub כדי לפרסם הודעה.
איך פועל המעקב
לכל הודעה שמתפרסמת, ספריית הלקוח יוצרת מעקב חדש. המעקב הזה מייצג את כל מחזור החיים של ההודעה, מהרגע שבו מפרסמים הודעה ועד לרגע שבו מתקבל אישור על ההודעה. ה-trace כולל מידע כמו משך הפעולות, טווחי צאצאים וטווחי אב וטווחי צאצאים מקושרים.
טראס מורכב מטווח בסיסי ומטווחים משניים תואמים. הטווחים האלה מייצגים את העבודה שספריית הלקוח מבצעת כשמעבדת הודעה. כל מעקב אחר הודעות מכיל את הפרטים הבאים:
- לפרסום. בקרה על זרימת נתונים, תזמון של מפתח ההזמנה, עיבוד באצווה ואורך של RPC לפרסום.
- למינויים. בקרת בו-זמניות, תזמון של מפתחות להזמנה וניהול של חוזי שכירות.
כדי להעביר מידע מהצד של הפרסום לצד של ההרשמה, ספריות הלקוח מוסיפות מאפיין ספציפי למעקב בצד של הפרסום. מנגנון העברת ההקשר מופעל רק כשמעקב מופעל, והוא מתווסף עם הקידומת googclient_.
פרסום הודעות עם מעקב
בדוגמת הקוד הבאה אפשר לראות איך להפעיל מעקב באמצעות ספריית הלקוח של Pub/Sub ו-OpenTelemetry SDK. בדוגמה הזו, תוצאות המעקב מיוצאות אל Cloud Trace.
לתשומת ליבכם
כשיוצרים מופע של ספק ה-tracer, מגדירים יחס דגימה באמצעות OpenTelemetry SDK. היחס הזה קובע כמה עקבות ה-SDK צריך לדגום. שיעור דגימה נמוך יותר יכול לעזור להפחית את עלויות החיוב ולמנוע חריגה של השירות שלכם מהמכסת הטווח של Cloud Trace.
המשך
C++
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במאמר תחילת העבודה המהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של ה-API בשפת Python של Pub/Sub.
TypeScript
Node.js
Java
קבלת הודעות עם מעקב
המשך
C++
Python
TypeScript
Node.js
Java
ניתוח נתוני מעקב
בקטעים הבאים מוסבר בפירוט איך לעקוב אחרי טרייס ולנתח אותו במסוף Google Cloud .
לתשומת ליבכם
- כשמפרסמים קבוצה של הודעות, הטווח של ה-RPC של הפרסום נרשם במעקב נפרד.
- ל-RPC של פרסום יש כמה טווחי מקור, כי כמה קריאות ליצירה יכולות להוביל ל-RPC של פרסום כשהן מועברות יחד.
ל-Spans ב-OpenTelemetry יכולים להיות אפס או Span הורה אחד.
אי אפשר לייצג טווחי זמן שמייצגים פעולות באצווה, כמו פרסום אצווה (שבאופן הגיוני אמורות להיות להן כמה הורים) באמצעות טווחי זמן הורה עם אפס או עם הורה אחד.
מעקב אחר טווחי זמן שנוצרו במהלך מחזור החיים של ההודעה
בתמונה הבאה מוצגת דוגמה לטווחים שנוצרים במעקב יחיד עבור הודעה יחידה.

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

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

פתרון בעיות נפוצות
הבעיות הבאות עלולות לגרום לבעיות במעקב:
- לחשבון השירות שבו אתם משתמשים לייצוא עקבות אין את התפקיד הנדרש
roles/cloudtrace.agent. - הגעתם למכסה של המספר המקסימלי של טווחי נתונים שהמערכת מעכלת ב-Cloud Trace.
- האפליקציה שלך מסתיימת בלי לקרוא לפונקציית ה-flush המתאימה.