סקירה כללית של דוגמאות למכשירי מדידה שמבוססים על איסוף נתונים

כדי לשמור על קוד האפליקציה שלכם ניטרלי לספק בזמן איסוף ושליחה של נתוני טלמטריה אל Google Cloud, אתם יכולים להשתמש בדוגמאות של אינסטרומנטציה מבוססת-אספן OpenTelemetry עבור Go,‏ Java,‏ Node.js ו-Python.

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

איך הדוגמאות פועלות

הדוגמאות ל-Go,‏ Java,‏ Node.js ו-Python משתמשות בפרוטוקול OpenTelemetry כדי לאסוף נתוני מעקב ומדדים. בדוגמאות מוגדרת מסגרת רישום כדי לכתוב יומנים מובנים, ומוגדר רכיב OpenTelemetry Collector כדי לקרוא מזרם stdout של האפליקציה. המלצות לגבי מסגרות זמינות במאמר בחירת גישה להטמעה.

האפליקציות נבנות ונפרסות באמצעות Docker. לא חייבים להשתמש ב-Docker כשמשתמשים ב-OpenTelemetry כדי להוסיף לאפליקציה כלי מעקב.

אפשר להריץ את הדוגמאות ב-Cloud Shell, במשאבים של Google Cloudאו בסביבת פיתוח מקומית.

ירידה לפרטים

בדוגמאות נעשה שימוש ב-OpenTelemetry Collector כ-sidecar כדי לקבל את נתוני הטלמטריה של האפליקציה ולהוסיף להם מידע. לאחר מכן, מודול ייצוא שולח את הנתונים האלה לפרויקט Google Cloud . האפליקציות לדוגמה שולחות נתונים של מדדים ועקבות לפרויקט שלכם באמצעות Telemetry API, שתומך בפורמט OTLP.

בדוגמאות אפשר לראות איך:

  1. מגדירים את OpenTelemetry לאיסוף מדדים ומעקבים באמצעות OpenTelemetry Collector.

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

  2. מגדירים מסגרת רישום ביומן כדי לכתוב יומנים מובנים.

    מומלץ שהאפליקציות שלכם יכתבו יומנים מובְנים, שבהם מטען הייעודי (payload) של היומן מעוצב כאובייקט JSON. ביומנים האלה, אפשר ליצור שאילתות שמחפשות נתיבי JSON ספציפיים, ואפשר להוסיף לאינדקס שדות ספציפיים במטען הייעודי (payload) של היומן.

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

    כדי להשתמש בדוגמאות האלה, לא צריך להתקין סוכנים.

  3. מגדירים קובצי Docker. כל הדוגמאות מכילות את קובצי ה-YAML הבאים:

    • docker-compose.yaml: מגדיר את השירותים לאפליקציה, ל-OpenTelemetry collector ולמחולל עומסים. לדוגמה, בשירות של OpenTelemetry Collector,‏ otelcol, מצוינים אימג', נפח ומשתני סביבה. נקודת הקצה של OpenTelemetry Collector מוגדרת על ידי משתנה הסביבה OTEL_EXPORTER_OTLP_ENDPOINT, שמוגדר בשירות app.

    • otel-collector-config.yaml: הגדרת OpenTelemetry Collector:

      • בדוגמאות נעשה שימוש ב-otlp receiver לנתוני מדדים ומעקב, וב-filelog receiver לנתוני יומן.

      • בדוגמאות נעשה שימוש ב-otlphttp exporter לנתוני מדדים ונתוני מעקב, וב- Google Cloud exporter לנתוני יומנים.

        כלי הייצוא של otlphttp שולח נתונים לפרויקט באמצעות Telemetry API, שתומך ב-OTLP. הכלי Google Cloud exporter ממיר את נתוני היומנים לפורמט שתואם ל-Cloud Logging API, ואז שולח את הנתונים שעברו המרה אלGoogle Cloud הפרויקט שלכם.

    • docker-compose.creds.yaml: הקובץ הזה יכול לכלול הרכבה של Google Cloud קובץ פרטי כניסה בתוך קונטיינר otelcol. אתם צריכים את הקובץ הזה כשאתם מריצים דוגמה במחשב מקומי שבו Application Default Credentials ‏ (ADC) זמינים רק כקובץ.

ההרשאות הנדרשות

  • כדי לקבל את ההרשאות שדרושות כדי שאפליקציות לדוגמה יוכלו לכתוב נתוני יומן, מדדים ומעקב, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

    ההרשאות האלה מספיקות אם מריצים את הדוגמה ב-Cloud Shell, במשאבים Google Cloud , או בסביבת פיתוח מקומית. במאמר הגדרת פרויקט לצורכי מכסה מוסבר איך מגדירים פרויקט לצורכי מכסה.

ממשקי API נדרשים

מפעילים את ממשקי ה-API של Cloud Logging,‏ Cloud Monitoring,‏ Cloud Trace וטלמטריה:

תפקידים שנדרשים להפעלת ממשקי API

כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

gcloud services enable logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com telemetry.googleapis.com

גישות חלופיות למדידה

אולי יעניינו אותך דוגמאות אחרות שממחישות הגדרות שונות:

  • במאמר העברה מ-Trace exporter לנקודת הקצה OTLP מוסבר איך להשתמש במכשיר מדידה בתוך התהליך כדי לשלוח נתוני מעקב ישירות ל Google Cloud פרויקט.

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

  • במאמר הצגת קורלציה בין מדדים ועקבות באמצעות נתונים מייצגים מוסבר איך להגדיר אפליקציית Go כדי ליצור נתונים מייצגים. דוגמה היא נקודה על הגרף לדוגמה שמצורפת לנקודה על הגרף של מדד. אפשר להשתמש בנתוני exemplars כדי ליצור קורלציה בין נתוני העקבות והמדדים.

  • במאמר בנושא שימוש ב-סוכן תפעול וב-OpenTelemetry Protocol‏ (OTLP) מוסבר איך להגדיר את סוכן תפעול ואת מקלט OTLP כדי לאסוף מדדים ועקבות מאפליקציה.

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

מידע נוסף על קולקטורים זמין במאמר בנושא Google-Built OpenTelemetry Collector.

אפשר לעיין בדוגמאות שבהן נעשה שימוש בייצוא מבוסס-איסוף.