במאמר הזה מוסבר איך להוסיף קוד של יכולת ניטור לאפליקציה באמצעות OpenTelemetry. OpenTelemetry מספקת ספריות של מכשור שמייצרות טלמטריה למסגרות פופולריות. אפשר להוסיף לטלמטריה שנוצרת על ידי הספרייה מכשירים מותאמים אישית שמודדים את ההתנהגות הספציפית של האפליקציה.
העקרונות והמושגים שמתוארים במסמך הזה רלוונטיים לאפליקציות שנכתבו בכל השפות שנתמכות על ידי OpenTelemetry. מידע נוסף על מכשור זמין במסמכים הבאים:
קוד לדוגמה, שהוא אותה אפליקציית Go שמתוארת בדוגמה למכשיר Go, זמין ב-GitHub. כדי לראות את הדוגמה המלאה, בסרגל הכלים של הדוגמה, לוחצים על הלוגו של GitHub.
לפני שמתחילים
מפעילים את Cloud Logging API, Cloud Monitoring API ו-Cloud Trace API, אם אחד מהם עדיין לא מופעל.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
יצירת עקבות בהתאמה אישית
כדי ליצור מעקבים מותאמים אישית מהאפליקציה, מוסיפים קוד אינסטרומנטציה שיוצר טווחים של OpenTelemetry. ב-OpenTelemetry, spans הם אבני הבניין של עקבות.
כדי ליצור טווח:
עליך לבצע שינויים באפליקציה כדי לקבל
Tracerשל OpenTelemetry. ב-OpenTelemetry, tracer הוא יוצר של span. אפשר להשיג אובייקט Tracer כמו בדוגמה הבאה:שם ה-tracer, שמיוצג על ידי
scopeName, מזהה את היקף המכשור של העקבות שנוצרו.משתמשים במופע
tracerכדי ליצור טווחים. בדוגמת הקוד הבאה, הפונקציהcomputeSubrequestsיוצרת span בכל פעם שהיא נקראת:בדוגמת הקוד הקודמת, ה-span שנוצר מהפונקציה
computeSubrequestsמייצג את העבודה שבוצעה על ידי הפונקציה כולה. הסיבה לכך היא שהשלב הראשון של הפונקציה הוא להתחיל טווח חדש באמצעותtracer.Startומילת המפתחdeferלפניspan.End(), כדי לוודא שהטווח מסתיים רגע לפני שהפונקציה יוצאת.
יצירת מדדים מותאמים אישית
כדי ליצור מדדים מהאפליקציה, מוסיפים קוד מדידה שמתעד את המדידות שבוצעו במהלך ההפעלה של האפליקציה.
כדי ליצור מדדים:
עליך לבצע שינויים באפליקציה כדי לקבל
Meterשל OpenTelemetry. ב-OpenTelemetry, אובייקט Meter מספק גישה לכלי מדידה לצורך תיעוד מדדים. אפשר להשיג מדד כמו בדוגמה הבאה:שם המדד, שמיוצג על ידי
scopeName, מזהה את היקף המדידה של המדדים שנוצרו.משתמשים במופע
meterכדי ליצור מכשירים שיכולים לתעד מדדים. לדוגמה, בקוד הבא אנחנו משתמשים ב-meterכדי ליצור OpenTelemetry Histogram:הקוד הקודם יוצר היסטוגרמה בשם
sleepHistogram.משתמשים במופע
sleepHistogramכדי לתעד את זמן השינה, שנקבע כשמפעילים את הפונקציהrandomSleep:המדדים שתועדו מהמכשירים האלה מיוצאים מהאפליקציה שלכם על סמך ההגדרה של כלי הייצוא OpenTelemetry.
המאמרים הבאים
- הצגת קורלציה בין מדדים ועקבות באמצעות דוגמאות מייצגות
- OpenTelemetry
- OpenTelemetry Instrumentation
- מודל נתונים של מדדים ב-OpenTelemetry