במאמר הזה מוסבר איך לפרוס את OpenTelemetry Collector, להגדיר את ה-Collector לשימוש ב-exporter otlphttp וב-Telemetry (OTLP) API, ולהפעיל מחולל טלמטריה כדי לכתוב מדדים ל-Cloud Monitoring. אחר כך תוכלו לראות את המדדים האלה ב-Cloud Monitoring.
אם אתם משתמשים ב-Google Kubernetes Engine, אתם יכולים לפעול לפי ההוראות במאמר Managed OpenTelemetry for GKE במקום לפרוס ולהגדיר באופן ידני OpenTelemetry Collector שמשתמש ב-Telemetry API.
אם אתם משתמשים ב-SDK כדי לשלוח מדדים מאפליקציה ישירות אל Telemetry API, כדאי לעיין במאמר שימוש בערכות SDK לשליחת מדדים מאפליקציות לקבלת מידע נוסף ודוגמאות.
אפשר גם להשתמש ב-OpenTelemetry Collector וב-Telemetry API בשילוב עם OpenTelemetry zero-code instrumentation. מידע נוסף זמין במאמר בנושא שימוש ב-OpenTelemetry zero-code instrumentation ל-Java.
לפני שמתחילים
בקטע הזה מוסבר איך להגדיר את הסביבה לפריסה של כלי האיסוף ולשימוש בו.
בוחרים או יוצרים Google Cloud פרויקט
בוחרים פרויקט Google Cloud למדריך הזה. אם עדיין אין לכם Google Cloud פרויקט, אתם יכולים ליצור אחד:
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
התקנה של כלי שורת הפקודה
במסמך הזה אנחנו משתמשים בכלי שורת הפקודה הבאים:
gcloudkubectl
הכלים gcloud ו-kubectl הם חלק מ-Google Cloud CLI. מידע על התקנת הרכיבים מופיע במאמר ניהול רכיבי Google Cloud CLI. כדי לראות את הרכיבים של ה-CLI של gcloud שהתקנתם, מריצים את הפקודה הבאה:
gcloud components list
כדי להגדיר את ה-CLI של gcloud לשימוש, מריצים את הפקודות הבאות:
gcloud auth login gcloud config set project PROJECT_ID
הפעלת ממשקי ה-API
מפעילים את Cloud Monitoring API ואת Telemetry API בGoogle Cloud פרויקט. כדאי לשים לב במיוחד ל-Telemetry API, telemetry.googleapis.comיכול להיות שזו הפעם הראשונה שאתם נתקלים ב-API הזה.
מפעילים את ממשקי ה-API באמצעות הפקודות הבאות:
gcloud services enable monitoring.googleapis.com gcloud services enable telemetry.googleapis.com
יצירת אשכול
יוצרים אשכול GKE.
כדי ליצור אשכול Google Kubernetes Engine בשם
otlp-test, מריצים את הפקודה הבאה:gcloud container clusters create-auto --location CLUSTER_LOCATION otlp-test --project PROJECT_IDאחרי שיוצרים את האשכול, מתחברים אליו באמצעות הפקודה הבאה:
gcloud container clusters get-credentials otlp-test --region CLUSTER_LOCATION --project PROJECT_ID
אישור חשבון השירות של Kubernetes
הפקודות הבאות מקצות את התפקידים הנדרשים בניהול הזהויות והרשאות הגישה (IAM) לחשבון השירות של Kubernetes. הפקודות האלה מניחות שאתם משתמשים באיחוד זהויות של עומסי עבודה ל-GKE:
export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
gcloud projects add-iam-policy-binding projects/PROJECT_ID \
--role=roles/logging.logWriter \
--member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
--condition=None
gcloud projects add-iam-policy-binding projects/PROJECT_ID \
--role=roles/monitoring.metricWriter \
--member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
--condition=None
gcloud projects add-iam-policy-binding projects/PROJECT_ID \
--role=roles/telemetry.tracesWriter \
--member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
--condition=None
אם חשבון השירות שלכם הוא בפורמט אחר, אתם יכולים להשתמש בפקודה שמופיעה במסמכי התיעוד של השירות המנוהל של Google Cloud ל-Prometheus כדי לתת הרשאה לחשבון השירות, עם השינויים הבאים:
- מחליפים את שם חשבון השירות
gmp-test-saבחשבון השירות שלכם. - צריך להקצות את התפקידים שמוצגים בסדרת הפקודות הקודמת, ולא רק את התפקיד
roles/monitoring.metricWriter.
פריסת OpenTelemetry Collector
יוצרים את הגדרות האוסף על ידי העתקה של קובץ ה-YAML הבא והצבה שלו בקובץ בשם collector.yaml. אפשר גם למצוא את ההגדרה הבאה ב-GitHub במאגר otlp-k8s-ingest.
בנוסח שלכם, הקפידו להחליף את המופע של ${GOOGLE_CLOUD_PROJECT} במזהה הפרויקט שלכם, PROJECT_ID.
פרוטוקול OTLP למדדים של Prometheus פועל רק כשמשתמשים בגרסה 0.140.0 או בגרסה חדשה יותר של OpenTelemetry Collector.
הגדרת OpenTelemetry Collector שנפרס
מגדירים את פריסת האוסף על ידי יצירת משאבי Kubernetes.
כדי ליצור את מרחב השמות
opentelemetryוליצור את הגדרות האוסף במרחב השמות, מריצים את הפקודות הבאות:kubectl create namespace opentelemetry kubectl create configmap collector-config -n opentelemetry --from-file=collector.yamlכדי להגדיר את האוסף עם משאבי Kubernetes, מריצים את הפקודות הבאות:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/2_rbac.yaml kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/3_service.yaml kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/4_deployment.yaml kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/5_hpa.yamlמחכים עד שה-pods של כלי האיסוף יגיעו למצב 'פועל' ויהיו מוכנים עם 1/1 קונטיינרים. התהליך הזה נמשך כ-3 דקות ב-Autopilot, אם זו עומס העבודה הראשון שפורס. כדי לבדוק את ה-pods, משתמשים בפקודה הבאה:
kubectl get po -n opentelemetry -wכדי להפסיק את הצפייה בסטטוס של ה-Pod, מקישים על Ctrl+C כדי להפסיק את הפקודה.
אפשר גם לבדוק את היומנים של כלי האיסוף כדי לוודא שאין שגיאות ברורות:
kubectl logs -n opentelemetry deployment/opentelemetry-collector
פריסת מחולל הטלמטריה
אתם יכולים לבדוק את ההגדרה באמצעות הכלי telemetrygen בקוד פתוח. האפליקציה הזו יוצרת טלמטריה ושולחת אותה אל המרכז.
כדי לפרוס את אפליקציית
telemetrygenבמרחב השמותopentelemetry-demo, מריצים את הפקודה הבאה:kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/main/sample/app.yamlאחרי שיוצרים את הפריסה, יכול להיות שיעבור זמן מה עד שה-pods ייווצרו ויתחילו לפעול. כדי לבדוק את הסטטוס של הפודים, מריצים את הפקודה הבאה:
kubectl get po -n opentelemetry-demo -wכדי להפסיק את הצפייה בסטטוס של ה-Pod, מקישים על Ctrl+C כדי להפסיק את הפקודה.
שליחת שאילתה לגבי מדד באמצעות Metrics Explorer
הכלי telemetrygen כותב למדד שנקרא gen. אפשר להריץ שאילתה על המדד הזה גם בממשק של הכלי ליצירת שאילתות וגם בעורך השאילתות של PromQL ב-Metrics Explorer.
נכנסים לדף leaderboard Metrics explorer במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.
- אם משתמשים בממשק ליצירת שאילתות ב-Metrics Explorer, השם המלא של המדד הוא
prometheus.googleapis.com/gen/gauge. - אם משתמשים בכלי לעריכת שאילתות PromQL, אפשר לשלוח שאילתה על המדד באמצעות השם
gen.
התמונה הבאה מציגה תרשים של המדד gen ב-Metrics Explorer:
מחיקת האשכול
אחרי שמאמתים את הפריסה על ידי שליחת שאילתה למדד, אפשר למחוק את האשכול. כדי למחוק את האשכול, מריצים את הפקודה הבאה:
gcloud container clusters delete --location CLUSTER_LOCATION otlp-test --project PROJECT_ID
שימוש באמצעי איסוף אחרים שמבוססים על OpenTelemetry
יכול להיות שתוכלו להשתמש באמצעי איסוף אחרים שמבוססים על OpenTelemetry כדי לשלוח מדדים של OTLP אל Telemetry API, אבל Google Cloud לא מספקת תמיכה בלקוחות לגבי אמצעי איסוף לא סטנדרטיים שמבוססים על OpenTelemetry.
לדוגמה, אפשר לשלוח מדדים באמצעות Grafana Alloy בגרסה 1.16.0 ומעלה על ידי אימות באמצעות הרכיב otelcol.auth.google והגדרה שלו באופן דומה ל-OpenTelemetry Collector רגיל, לפי ההוראות במסמך הזה.
המאמרים הבאים
- מידע על שימוש ב-OpenTelemetry Collector וב-Telemetry API עם OpenTelemetry zero-code instrumentation זמין במאמר שימוש ב-OpenTelemetry zero-code instrumentation עבור Java.
- במאמר שימוש בערכות SDK לשליחת מדדים מאפליקציות מוסבר איך לשלוח מדדים מאפליקציות שמשתמשות בערכות SDK.
- מידע על מעבר ל
otlphttpexporter ממייצא אחר זמין במאמר מעבר ל-OTLP exporter. - מידע נוסף על Telemetry API זמין בסקירה הכללית על Telemetry (OTLP) API.