במסמך הזה מוסבר איך אפשר לשלוח מדדים ישירות מאפליקציות לנקודת הקצה של OTLP באמצעות SDK ו-gRPC exporter, שהוא ה-exporter המומלץ לשימוש עם SDK.
נקודת הקצה של OTLP תומכת בכל פרוטוקולי OTLP, כולל http/proto, http/json ו-grpc. מידע נוסף זמין במאמר בנושא תמיכה בפרוטוקולים.
כששולחים מדדי אפליקציה ישירות לנקודת הקצה של OTLP, OpenTelemetry Collector לא מטפל באימות ובשיפור בשבילכם. כשמשתמשים בערכות SDK כדי לשלוח מדדים מאפליקציות, צריך לבצע את הפעולות הבאות:
- מגדירים את פרטי הכניסה של OTLP gRPC exporter כך שישתמש ב-Application Default Credentials של Google, כמו שמתואר במאמר קבלת פרטי אימות.
- זיהוי Google Cloud משאבי Kubernetes מהאפליקציה. האופן שבו עושים את זה תלוי באפליקציה שמריצים.
לפני שמתחילים
כדי להפעיל את הדוגמאות, צריך להפעיל את ממשקי ה-API הנדרשים ולקבל פרטי אימות.
הפעלת ממשקי ה-API
מפעילים את Cloud Monitoring API ואת Telemetry API בפרויקטGoogle Cloud באמצעות הפקודה הבאה:
gcloud services enable monitoring.googleapis.com telemetry.googleapis.com
קבלת פרטי אימות
כדי להגדיר את פרטי הכניסה של כלי הייצוא OTLP gRPC כך שישתמש בApplication Default Credentials של Google, מריצים את הפקודה הבאה:
gcloud auth application-default login
דוגמאות ספציפיות לשפות
בקטע הזה מוצגים מבחר של דוגמאות ספציפיות לשפה שיוצרות מדד של מונה וכותבות אותו. בוחרים כרטיסייה כדי לקבל מידע על הרצת הדוגמה ולראות את הקוד.
Go
מידע על הגדרה והפעלה של הדוגמה הזו זמין בקובץ README של הדוגמה של Go.
Java
מידע על הגדרה והפעלה של הדוגמה הזו זמין בקובץ README של הדוגמה של Java.
NodeJS
מידע על הגדרה והפעלה של הדוגמה הזו זמין בקובץ README של הדוגמה של NodeJS.
Python
מידע על הרצת הדוגמה הזו מופיע בקובץ README של הדוגמה של Python.README
שימוש ב-Downward API באפליקציות שפועלות כ-Pods
אם אתם מריצים את האפליקציה כ-pod ב-Kubernetes ולא שולחים דרך OpenTelemetry Collector, הקפידו להשתמש ב-downward API כדי להגדיר מאפייני משאבים של Kubernetes:
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: NAMESPACE_NAME
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: CONTAINER_NAME
value: my-container-name
- name: OTEL_RESOURCE_ATTRIBUTES
value: k8s.pod.name=$(POD_NAME),k8s.namespace.name=$(NAMESPACE_NAME),k8s.container.name=$(CONTAINER_NAME)
המאמרים הבאים
- מידע על שימוש ב-OpenTelemetry Collector וב-Telemetry API עם OpenTelemetry zero-code instrumentation זמין במאמר שימוש ב-OpenTelemetry zero-code instrumentation עבור Java.
- מידע על מעבר ל
otlphttpexporter מ-exporter אחר זמין במאמר מעבר ל-OTLP exporter. - מידע נוסף על Telemetry API זמין בסקירה הכללית על Telemetry (OTLP) API.