כדי לשמור על קוד האפליקציה שלכם ניטרלי לספק בזמן איסוף ושליחה של נתוני טלמטריה אל 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.
בדוגמאות אפשר לראות איך:
מגדירים את OpenTelemetry לאיסוף מדדים ועקבות באמצעות OpenTelemetry Collector.
מורכבות השלב הזה תלויה בשפה. לדוגמה, ב-Go, מעדכנים את הפונקציה
mainכדי לאתחל את איסוף הטלמטריה ולהגדיר את שרת ה-HTTP ואת הלקוח.מגדירים מסגרת רישום ביומן כדי לכתוב יומנים מובנים.
מומלץ שהאפליקציות שלכם יכתבו יומנים מובְנים, שבהם המטען הייעודי של היומן מעוצב כאובייקט JSON. ביומנים האלה, אפשר ליצור שאילתות שמחפשות נתיבי JSON ספציפיים, ואפשר להוסיף לאינדקס שדות ספציפיים במטען הייעודי (payload) של היומן.
בחלק מהשירותים, כמו Google Kubernetes Engine, יש סוכנים מובנים שמגרדים יומנים מובנים ושולחים אותם לפרויקט Google Cloud . שירותים אחרים, כמו Compute Engine, מחייבים התקנה של סוכן, שסורק ושולח את היומנים. מידע על סוכנים שמתקינים זמין במאמר סקירה כללית על סוכן התפעול.
כדי להשתמש בדוגמאות האלה, לא צריך להתקין סוכנים.
מגדירים קובצי Docker. כל הדוגמאות מכילות את קובצי ה-YAML הבאים:
docker-compose.yaml: מגדיר את השירותים לאפליקציה, ל-OpenTelemetry collector ולמחולל עומסים. לדוגמה, השירות של OpenTelemetry Collector,otelcol, מציין תמונה, נפח ומשתני סביבה. נקודת הקצה של OpenTelemetry Collector מוגדרת על ידי משתנה הסביבהOTEL_EXPORTER_OTLP_ENDPOINT, שמוגדר בשירותapp.
otel-collector-config.yaml: הגדרת OpenTelemetry Collector:בדוגמאות נעשה שימוש ב-
otlpreceiver לנתוני מדדים ומעקב, וב-filelogreceiver לנתוני יומנים.בדוגמאות נעשה שימוש ב-
otlphttpexporter לנתוני מדדים ומעקב, וב- 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 הבאים:
- כתיבה ביומן (
roles/logging.logWriter) בפרויקט - כותב מדדי מעקב (
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 נדרשים
מפעילים את 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.commonitoring.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.
מעיינים בדוגמאות שמשתמשות בייצוא מבוסס-איסוף.