Managed OpenTelemetry for GKE

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

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

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

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

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

איך פועל OpenTelemetry מנוהל ל-GKE

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

אוסף מנוהל

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

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

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

אפשר להפעיל את האוסף המנוהל עבור אשכול GKE באמצעות המסוף או gcloud CLI. הוראות מפורטות זמינות במאמר בנושא הפעלת Managed 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 מחדיר משתני סביבה למאגרי הנתונים של עומסי העבודה. משתני הסביבה האלה הם משתני 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, ברירת מחדל: 30,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, למדדים וליומנים כמאפייני משאב.
  • הנחיות ותשובות.
    • OTEL_INSTRUMENTATION_GENAI_UPLOAD_FORMAT='jsonl': הוראה ל-OpenTelemetry לעצב אובייקטים של Cloud Storage כ-JSON Lines. למשתנה הסביבה הזה יש ערך קבוע: jsonl.
    • OTEL_INSTRUMENTATION_GENAI_COMPLETION_HOOK='upload': הוראה ל-OpenTelemetry להעלות נתוני הנחיה ותגובה במקום להטמיע את התוכן הזה בטווחים של מעקב. הפניות לאובייקטים שהועלו נכללות ברשומה ביומן. למשתנה הסביבה הזה יש ערך קבוע: upload.
    • OTEL_SEMCONV_STABILITY_OPT_IN='gen_ai_latest_experimental': הוראה ל-OpenTelemetry להשתמש במוסכמות הסמנטיות העדכניות ביותר עבור AI גנרטיבי. למשתנה הסביבה הזה יש ערך קבוע: gen_ai_latest_experimental.
    • OTEL_INSTRUMENTATION_GENAI_UPLOAD_BASE_PATH: ציון הנתיב של האובייקטים. לדוגמה, gs://STORAGE_BUCKET_NAME/PATH.

הגדרה ידנית

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

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

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

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

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

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

אם עומס עבודה תומך בסוגים מסוימים של נתוני 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 ל-Prometheus, ראו תמחור של Google Cloud Observability.

מכסות

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

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