Managed OpenTelemetry for GKE

במאמר הזה מוסבר על OpenTelemetry מנוהל ל-Google Kubernetes Engine ‏ (GKE), שמאפשר לכם לשלוח עקבות, מדדים ויומנים של OpenTelemetry Protocol ‏ (OTLP) אל Google Cloud Observability מאפליקציות שפועלות ב-GKE. ‫Managed OpenTelemetry הוא הפתרון המנוהל היחיד של Google Cloud לאיסוף נתוני מעקב ב-GKE.

כדי להשתמש ב-Managed OpenTelemetry ב-Google Kubernetes Engine‏ (GKE), האפליקציות צריכות להיות כבר מוגדרות ליצירת אותות באמצעות פרוטוקול OpenTelemetry. פרטים נוספים זמינים במאמר בנושא עומסי עבודה נתמכים.

‫Managed OpenTelemetry for GKE כולל שני רכיבים:

  • אוסף מנוהל: האוסף המנוהל מספק נקודת קצה של פרוטוקול OpenTelemetry בתוך האשכול כיעד לעומסי עבודה לשליחת עקבות, מדדים ויומנים בפורמט OTLP, ללא צורך בניהול אוסף.
  • הגדרה אוטומטית: משאב מותאם אישית בשם Instrumentation מאפשר הגדרה אוטומטית של עומסי העבודה ב-GKE כדי ליצור ולעבד נתונים מתואמים של מעקב, מדדים ויומנים של OpenTelemetry. הגישה הזו תומכת בערכה לפיתוח סוכנים (ADK).

    אפשר להשתמש במשאב המותאם אישית Instrumentation עבור עומסי עבודה שמשתמשים ב-OpenTelemetry SDK ומוגדרים עם משתני סביבה רגילים של OpenTelemetry. Instrumentationהמשאב המותאם אישית הזה, instrumentations.telemetry.googleapis.com, הוא משאב שונה מהמשאב Instrumentation של OpenTelemetry Operator.

במאמר פריסת Managed OpenTelemetry ל-GKE מוסבר איך להשתמש ב-Managed OpenTelemetry ל-GKE.

בעזרת Managed OpenTelemetry for GKE אפשר לאסוף נתוני טלמטריה של OTLP בלי לנהל ולהפעיל OpenTelemetry Collector. הפעלת כלי איסוף משלכם עלולה לגרום לתקורה, כולל אימות, הגדרה, שדרוגים ומעקב. עם זאת, אם אתם צריכים סינון ובקרה ברמת האוסף, אתם יכולים להשתמש בGoogle-Built OpenTelemetry Collector במקום בשירות המנוהל הזה.

‫OpenTelemetry מספקת ממשקי API, ספריות וערכות SDK ליצירת עקבות מבוזרים, מדדים ויומנים לצורך מעקב אחר אפליקציות. מידע נוסף על OpenTelemetry זמין במאמרי העזרה בנושא OpenTelemetry ופרוטוקול OpenTelemetry‏ (OTLP). לפרטים נוספים על יצירה ואיסוף של נתוני התנהגות בזמן ריצה של האפליקציה, אפשר לעיין במאמר בנושא אינסטרומנטציה וניראות (observability).

איך פועל Managed OpenTelemetry for GKE

ל-Managed OpenTelemetry for GKE יש שני רכיבים: איסוף מנוהל והגדרה אוטומטית.

אוסף מנוהל

אוסף מנוהל מספק נקודת קצה (Endpoint) של OTLP בתוך האשכול על ידי פריסה של OpenTelemetry Collector מנוהל באשכול. נקודת הקצה הזו של OTLP בתוך האשכול מקבלת עקבות, מדדים ויומנים בפורמט OTLP. כדי לקבל נתונים מעומס עבודה, צריך להגדיר את עומס העבודה כך שישלח נתונים אל המרכז.

נקודת הקצה של המאסף המנוהל היא: http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318.

האיסוף המנוהל שולח את הנתונים שנאספו אל Google Cloud Observability. אחרי כן, הנתונים זמינים בשירותים הבאים:

אפשר להפעיל את האוסף המנוהל עבור אשכול GKE באמצעות המסוף או ה-CLI של gcloud. הוראות מפורטות זמינות במאמר בנושא הפעלת OpenTelemetry מנוהל ל-GKE באשכול.

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

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

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

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

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

הוראות להגדרת האפליקציה באמצעות ההגדרה האוטומטית זמינות במאמר הגדרת האפליקציה לשימוש ב-Managed OpenTelemetry Collector.

המשאב המותאם אישית Instrumentation

אפשר להשתמש במשאב המותאם אישית Instrumentation כדי:

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

פרטים על השימוש במשאב המותאם אישית Instrumentation זמינים במאמר שינוי ההגדרה.

הזרקה אוטומטית של משתני סביבה

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

אובייקט Instrumentation צריך להיות באשכול כשהאפליקציה נפרסת ונוצרים ה-Pods. אם פרסתם את האפליקציה לפני שיצרתם את אובייקט Instrumentation, תצטרכו להפעיל מחדש את הפודים של האפליקציה כדי להפעיל הוספה אוטומטית של משתני הסביבה.

משתני סביבה

כשפורסים עומס עבודה במרחב השמות שבו מופעלת הגדרה אוטומטית, ‏ GKE מחדיר משתני סביבה למאגרי הנתונים (containers) של עומסי העבודה. משתני הסביבה האלה הם משתני OpenTelemetry מההגדרה של OpenTelemetry SDK.

הרשימה הבאה מכילה את כל משתני הסביבה שאפשר להחדיר באמצעות Managed OpenTelemetry ל-GKE. משתני הסביבה הספציפיים שמוזרקים לקונטיינר תלויים בהגדרה של Instrumentation המשאב המותאם אישית.

משתני הסביבה שאפשר להחדיר אוטומטית לקונטיינרים הם:

  • נקודת הקצה (endpoint) של OpenTelemetry exporter.
    • OTEL_EXPORTER_OTLP_ENDPOINT: כתובת URL בסיסית של נקודת קצה לכל סוג של אות. נקודת הקצה הזו תמיד מצביעה על נקודת הקצה (endpoint) של HTTP של OpenTelemetry Collector לניהול בתוך האשכול, עבור יומנים, מדדים ועקבות. נקודת הקצה היא: http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318.
  • הגדרת יחס הדגימה של Trace.
    • OTEL_TRACES_SAMPLER: מגדיר את sampler שמשמש לדגימת עקבות על ידי ה-SDK לאחת מהאפשרויות הבאות:
      • parentbased_traceidratio כשדגימת הנתיבים מוגדרת במשאב המותאם אישית.
      • parentbased_always_on הוא ערך ברירת המחדל של משתנה הסביבה הזה. המשתנה הזה משמש אם משתנה הסביבה הזה לא מוגדר או אם הוא null במשאב המותאם אישית.
    • OTEL_TRACES_SAMPLER_ARG: מציין את יחס הדגימה של העקבות (בין 0.0 ל-1.0). אם לא מגדירים את המאפיין במשאב המותאם אישית, המערכת משתמשת בערך 1.0.
  • מרווח העיכוב בין ההתחלה של שני ייצואים עוקבים של מדדים.
    • OTEL_METRIC_EXPORT_INTERVAL: פרק הזמן (באלפיות השנייה) בין ההתחלה של שני ניסיונות ייצוא (מינימום: 5,000, מקסימום: 300,000, ברירת מחדל: 60,000).
  • השבתה של ייצוא טלמטריה של OTLP לפי סוג האות. ייצוא האותות מושבת אם הערכים tracer_provider, meter_provider או logger_provider מוגדרים כ-null בקובץ Instrumentation.
    • OTEL_TRACES_EXPORTER: השבתת ייצוא של עקבות כשמגדירים את הערך none. ערך ברירת המחדל: otlp.
    • OTEL_METRICS_EXPORTER: השבתה של ייצוא מדדים כשהערך הוא none. ערך ברירת המחדל: otlp.
    • OTEL_LOGS_EXPORTER: השבתת ייצוא היומנים כשהערך הוא none. ערך ברירת המחדל: otlp.
  • זיהוי של קבוצות Pod של hostNetwork לצורך שיוך המטא-נתונים באמצעות Kubernetes Attributes Processor של OpenTelemetry Collector.
    • K8S_POD_UID: ה-UID של ה-Pod של hostNetwork כדי לאכלס את ההגדרה k8s.pod.uid במשתנה הסביבה OTEL_RESOURCE_ATTRIBUTES.
    • OTEL_RESOURCE_ATTRIBUTES: הערך כולל k8s.pod.uid=$(K8S_POD_UID) כדי לאפשר למעבד של מאפייני Kubernetes לשייך מטא-נתונים, כמו k8s.namespace.name,‏ k8s.deployment.name ו-k8s.node.name, ל-Pods של hostNetwork. השיוך של מטא-נתונים ו-Pods של hostNetwork מאפשר להוסיף את המטא-נתונים שחולצו ל-spans, למדדים וליומנים כמאפייני משאב.

הגדרה ידנית

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

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

פרטים על הגדרה אוטומטית זמינים במאמר בנושא הגדרה אוטומטית.

עומסי עבודה נתמכים

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

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

אם עומס עבודה תומך בחלק מסוגי הנתונים של OTLP ולא באחרים, אז Managed OpenTelemetry for GKE אוסף את נתוני OTLP. לדוגמה, אם עומס עבודה משתמש ב-OpenTelemetry SDK כדי להטמיע מעקבים, אבל לא משתמש בו ליומנים או למדדים, אז נתוני היומנים והמדדים לא נאספים על ידי Managed OpenTelemetry for GKE. במאמר בחירת סוגי האותות לאיסוף מוסבר איך לשלוט בסוג הנתונים שייאספו.

החדרת הגדרות של OpenTelemetry לא נתמכת בעומסי עבודה עם הרשאות מיוחדות משותפי GKE Autopilot.

חיוב

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

למידע על העלויות שקשורות להוספה של נתונים מ-Google Cloud Managed Service for Prometheus, יומנים ועקבות, אפשר לעיין במאמר תמחור של Google Cloud Observability.

מכסות

כשמשתמשים ב-Managed OpenTelemetry for GKE, חלות המכסות של שירותי Google Cloud Observability. פרטים נוספים זמינים במאמרים הבאים:

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