במסמך הזה מתוארת המבנה של דוגמאות האינסטרומנטציה שזמינות לשפות Go, Java, Node.js ו-Python. בדוגמאות האלה מוסבר איך להטמיע באפליקציה את OpenTelemetry SDK ואת OpenTelemetry Collector.
האינסטרומנטציה בדוגמאות האלה, שכוללת שימוש ב-OpenTelemetry SDK ובכלי לייצוא OTLP של ה-SDK בתוך התהליך, היא ניטרלית לספק. ה-exporter של התהליך שולח טלמטריה אל OpenTelemetry Collector, שמקבל את הנתונים האלה ואז שולח אותם אל פרויקט Google Cloud . המאסף מכיל את הקישור אל Google Cloud. בדוגמאות האלה נעשה שימוש ב Google Cloud כלי ייצוא כדי לשלוח נתוני יומן ומדדים לפרויקט. עם זאת, הם שולחים נתוני מעקב לפרויקט שלכם באמצעות Telemetry API.
אולי יעניינו אותך דוגמאות אחרות שממחישות הגדרות שונות:
במאמר העברה מ-Trace exporter לנקודת הקצה OTLP מוסבר איך להשתמש בשדרוג המידע ממעקבים בתהליך כדי לשלוח נתוני מעקב ישירות ל Google Cloud פרויקט.
מומלץ להשתמש ב-OpenTelemetry Collector כדי לייצא את נתוני הטלמטריה אם הסביבה שלכם תומכת בשימוש ב-Collector. אם אין לכם אפשרות להשתמש במאסף, אתם צריכים להשתמש בכלי ייצוא שפועל בתהליך ושולח נתונים ישירות לפרויקט Google Cloud .
במאמר הצגת קורלציה בין מדדים ועקבות באמצעות נתונים מייצגים מוסבר איך להגדיר אפליקציית Go כדי ליצור נתונים מייצגים. דוגמה היא נקודת נתונים לדוגמה שמצורפת לנקודת נתונים של מדד. אפשר להשתמש בנתוני exemplars כדי ליצור קורלציה בין נתוני העקבות לבין נתוני המדדים.
שימוש בסוכן תפעול ובפרוטוקול OpenTelemetry (OTLP) מתאר איך אפשר להגדיר את סוכן התפעול ואת מקלט OTLP כדי לאסוף מדדים ועקבות מאפליקציה.
איך הדוגמאות פועלות
הדוגמאות ל-Go, Java, Node.js ו-Python משתמשות בפרוטוקול OpenTelemetry כדי לאסוף נתוני מעקב ומדדים.
בדוגמאות מוגדרת מסגרת רישום כדי לכתוב יומנים מובנים, ואוסף OpenTelemetry מוגדר לקרוא מזרם stdout של האפליקציה. המלצות לגבי מסגרות זמינות במאמר בחירת גישה להטמעה.
האפליקציות נבנות ונפרסות באמצעות Docker. לא חייבים להשתמש ב-Docker כשמשדרגים אפליקציה באמצעות OpenTelemetry.
אפשר להריץ את הדוגמאות ב-Cloud Shell, במשאבים של Google Cloudאו בסביבת פיתוח מקומית.
ירידה לפרטים
בדוגמאות נעשה שימוש ב-OpenTelemetry Collector כ-sidecar כדי לקבל את נתוני הטלמטריה של האפליקציה ולהוסיף להם מידע. לאחר מכן, מודול ייצוא שולח את הנתונים האלה לפרויקט Google Cloud . אפליקציות לדוגמה שולחות נתונים של מדדים ועקבות לפרויקט שלכם באמצעות Telemetry API, שתומך בפורמט OTLP.
בדוגמאות אפשר לראות איך:
מגדירים את OpenTelemetry לאיסוף מדדים ועקבות באמצעות OpenTelemetry Collector.
מורכבות השלב הזה תלויה בשפה. לדוגמה, ב-Go, השלב הזה מגדיר את הפונקציה
mainכך שתפעיל פונקציה שמגדירה את איסוף המדדים והמעקבים. ב-Go, גם שרת ה-HTTP והלקוח מעודכנים.מגדירים מסגרת רישום ביומן כדי לכתוב יומנים מובנים.
מומלץ שהאפליקציות שלכם יכתבו יומנים מובְנים, שבהם מטען הנתונים של היומן מעוצב כאובייקט JSON. ביומנים האלה, אפשר ליצור שאילתות שמחפשות נתיבי JSON ספציפיים, ואפשר להוסיף לאינדקס שדות ספציפיים במטען הייעודי (payload) של היומן.
בחלק מהשירותים, כמו Google Kubernetes Engine, יש סוכנים מובנים שמגרדים יומנים מובנים ושולחים אותם לפרויקט Google Cloud . בשירותים אחרים, כמו Compute Engine, צריך להתקין סוכן שמגרד ושולח את היומנים. מידע על סוכנים שמתקינים זמין במאמר סקירה כללית על Ops Agent.
לא צריך להתקין סוכנים כדי להשתמש בדוגמאות האלה.
מגדירים קובצי Docker. כל הדוגמאות מכילות את קובצי ה-YAML הבאים:
docker-compose.yaml: מגדיר את השירותים לאפליקציה, ל-OpenTelemetry collector ולמחולל עומסים. לדוגמה, בשירות של OpenTelemetry Collector,otelcol, מצוינים קובץ אימג', נפח ומשתני סביבה. נקודת הקצה של OpenTelemetry Collector מוגדרת על ידי משתנה הסביבהOTEL_EXPORTER_OTLP_ENDPOINT, שמוגדר בשירותapp.
otel-collector-config.yaml: הגדרת OpenTelemetry:בדוגמאות נעשה שימוש ב-
otlpreceiver לנתוני מדדים ומעקב, וב-filelogreceiver לנתוני יומן.בדוגמאות נעשה שימוש ב-
otlphttpexporter לנתוני מדדים ונתוני מעקב, וב- Google Cloud exporter לנתוני יומנים.כלי הייצוא של
otlphttpשולח נתונים לפרויקט שלכם באמצעות Telemetry API, שתומך ב-OTLP. הכלי Google Cloud exporter ממיר את נתוני היומן לפורמט שתואם ל-Cloud Logging API, ואז שולח את הנתונים שעברו המרה לGoogle Cloud פרויקט באמצעות פקודת API.
docker-compose.creds.yaml: הקובץ הזה יכול לכלול הרכבה של קובץ פרטי כניסה בתוך קונטיינרotelcol. Google Cloudאתם צריכים את הקובץ הזה כשאתם מריצים דוגמה במחשב מקומי שבו Application Default Credentials (ADC) זמינים רק כקובץ.
ההרשאות הנדרשות
-
כדי לקבל את ההרשאות שדרושות כדי שאפליקציות לדוגמה יוכלו לכתוב נתוני יומן, מדדים ומעקב, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- כתיבה ביומן (
roles/logging.logWriter) בפרויקט - כותב מדדים של Monitoring (
roles/monitoring.metricWriter) בפרויקט - Cloud Telemetry Traces Writer (
roles/telemetry.tracesWriter) בפרויקט שלכם - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) on your quota project
ההרשאות האלה מספיקות אם מריצים את הדוגמה ב-Cloud Shell, במשאבים או בסביבת פיתוח מקומית. Google Cloud במאמר הגדרת פרויקט לצורכי מכסה מוסבר איך מגדירים פרויקט לצורכי מכסה.
- כתיבה ביומן (
-
כדי לקבל את ההרשאות שדרושות להצגת נתוני היומן, המדדים והמעקב, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- כלי הצפייה ביומנים (
roles/logging.viewer) - צפייה ב-Monitoring (
roles/monitoring.viewer) - משתמש Cloud Trace (
roles/cloudtrace.user)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- כלי הצפייה ביומנים (
ממשקי API נדרשים
מפעילים את ממשקי ה-API של Cloud Logging, Cloud Monitoring, Cloud Trace וטלמטריה:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של שימוש בשירות' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים
gcloud services enable logging.googleapis.commonitoring.googleapis.com cloudtrace.googleapis.com telemetry.googleapis.com
המאמרים הבאים
מידע נוסף על קולקטורים זמין במאמר בנושא Google-Built OpenTelemetry Collector.
אפשר לעיין בדוגמאות שבהן נעשה שימוש בייצוא מבוסס-איסוף.