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

כדי לשמור על קוד האפליקציה שלכם ניטרלי לספק בזמן איסוף ושליחה של נתוני טלמטריה אל 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. מגדירים מסגרת רישום ביומן כדי לכתוב יומנים מובנים.

    מומלץ שהאפליקציות שלכם יכתבו יומנים מובְנים, שבהם המטען הייעודי של היומן מעוצב כאובייקט 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 נדרשים

מפעילים את Cloud Logging,‏ Cloud Monitoring,‏ Cloud Trace ו-Telemetry APIs, אם אחד מהם עדיין לא מופעל:

תפקידים שנדרשים להפעלת ממשקי 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. אם אין לכם אפשרות להשתמש ב-collector, אתם צריכים להשתמש בכלי ייצוא שפועל בתהליך ושולח נתונים ישירות אל פרויקט Google Cloud .

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

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

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

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

מעיינים בדוגמאות שמשתמשות בייצוא מבוסס-איסוף.