במסמך הזה מוסבר איך לשלוח מדדים ישירות מאפליקציות לנקודת הקצה של OTLP באמצעות SDK והמייצא של gRPC, שהוא המייצא המומלץ לשימוש עם ערכות SDK.
נקודת הקצה של OTLP תומכת בכל הפרוטוקולים של OTLP, כולל http/proto, http/json ו-grpc. מידע נוסף מופיע במאמר תמיכה בפרוטוקולים.
כששולחים מדדי אפליקציות ישירות לנקודת הקצה של OTLP, OpenTelemetry Collector לא מטפל באימות, בזיהוי משאבים או באצווה בשבילכם. כשמשתמשים בערכות SDK כדי לשלוח מדדים מאפליקציות, צריך לבצע את הפעולות הבאות:
- מגדירים את פרטי הכניסה של מייצא ה-gRPC של OTLP כך שישתמש ב-Application Default Credentials של Google, כמו שמתואר במאמר קבלת פרטי כניסה לאימות.
- זיהוי משאבים של Google Cloud ומשאבים ב-Kubernetes מהאפליקציה. האופן שבו עושים את זה תלוי באפליקציה שאתם מריצים.
- מגדירים גודל אצווה מקסימלי של 200 נקודות נתונים של מדדים לייצוא, כדי שהבקשות לא יחרגו ממכסת בקשות Telemetry API של 200 נקודות נתונים לכל בקשה.
לפני שמתחילים
כדי להריץ את הדוגמאות, צריך להפעיל את ממשקי ה-API הנדרשים ולקבל פרטי כניסה לאימות.
הפעלת ממשקי ה-API
מפעילים את Cloud Monitoring API ואת Telemetry API בפרויקט ב-Google Cloud באמצעות הפקודה הבאה:
gcloud services enable monitoring.googleapis.com telemetry.googleapis.com
קבלת פרטי כניסה לאימות
מריצים את הפקודה הבאה כדי להגדיר את פרטי הכניסה של מייצא ה-gRPC של OTLP, כך שישתמש בApplication Default Credentials של Google:
gcloud auth application-default login
דוגמאות ספציפיות לשפות
בקטע הזה יש דוגמאות בשפות שונות ליצירה ולכתיבה של מדד מונה. כדי לקבל מידע על הרצת הדוגמה ולראות את הקוד, בוחרים כרטיסייה.
המשך
כדי להבין איך מגדירים ומריצים את הדוגמה הזו, קראו את הקובץ README של הדוגמה ב-Go.
Java
למידע על הגדרה והרצה של הדוגמה הזו, עיינו בקובץ README של הדוגמה ב-Java.
NodeJS
כדי לקבל מידע על הגדרה והפעלה של הדוגמה הזו, עיינו בקובץ README של הדוגמה ב-NodeJS.
Python
כדי להריץ את הדוגמה הזו, עיינו בקובץ README של הדוגמה ב-Python.
שימוש ב-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.
- למידע על מעבר למייצא
otlphttpממייצא אחר, קראו את המאמר מעבר למייצא OTLP. - סקירה כללית על Telemetry (OTLP) API