במאמר הזה מוסבר על הכללים שבהם משתמשת Google Cloud Observability כדי לקבוע את סוג המשאב המפוקח של Logging עבור נתוני יומנים שמוזנים על ידי Telemetry API. המשאב במעקב מתאר את המקור של נתוני היומן, וב-LogEntry הוא מיוצג באמצעות תוויות. Google Cloud Observability קובע את הערכים של התוויות האלה באמצעות מאפייני המשאב של OTLP.
המבנה הכללי של נתוני יומן בפורמט OTLP
כשנתוני יומן נשלחים אל Google Cloud באמצעות Telemetry API, הנתונים האלה צריכים להיות בפורמט שתואם ל-OTLP. המבנה הכללי של הנתונים האלה מוצג כאן:
"resourceLogs": [
{
"resource": {
"attributes": [...]
},
"scopeLogs": [
{
"logRecords": [...]
}
]
}
]
שימו לב ש-OpenTelemetry מאגדת קבוצות של יומנים נפרדים, שכל אחד מהם מיוצג על ידי מבנה logRecord, עם מידע על המקור של היומנים האלה, שמיוצג על ידי מבנה resource.
כש-Google Cloud Observability מקבל אובייקט resourceLogs, הוא יוצר LogEntry אחד לכל logRecord. בניגוד ל-OTLP שבו מידע המקור נאסף באצווה עם אוסף של יומנים נפרדים, כל מבנה LogEntry מכיל מידע על המקור של היומן ועל היומן עצמו.
מידע נוסף על המבנה של נתוני יומן בפורמט OTLP זמין בlogs.proto של OpenTelemetry.
הגדרת מאפייני משאבים של OTLP באמצעות Google Cloud resource detector
כדי להגדיר מאפייני משאבים של OTLP בנתוני היומן של OTLP, צריך להשתמש בGoogle Cloud גלאי משאבים. הגלאים האלה מצרפים לטלמטריה את מאפייני המשאב של OTLP שמתארים את המקור של הטלמטריה:
כדי לייצא נתונים באמצעות כלי איסוף, צריך להגדיר את זיהוי המשאבים כחלק מהמעבדים של כלי האיסוף. לדוגמה, יכול להיות שרכיב האיסוף יציין שני גלאי משאבים:
resourcedetection: detectors: ["env", "gcp"]בדוגמאות הבאות מופיעים אוספי נתונים שמייצאים מדדים או נתוני מעקב:
- פריסה ושימוש בכלי לאיסוף נתונים: במאמר הזה מוסבר איך לשלוח נתוני מדדים אל Telemetry API.
- פריסת Google-Built OpenTelemetry Collector ב-Google Kubernetes Engine: מאמר שמסביר איך לאסוף נתוני יומן, מדדים ונתוני מעקב כשמפעילים את Google Kubernetes Engine. הכלי לאיסוף נתונים שולח נתוני מעקב אל Telemetry API ונתוני מדדים אל כלי לייצוא נתונים של Prometheus.
אם אתם משתמשים ביצוא ישיר, אתם צריכים להשתמש בכלי המתאים Google Cloud לזיהוי משאבים בשפה שלכם:
איך מגדירים תוויות של משאבים
כל רשומה ביומן מכילה קבוצה של תוויות שמזהות את המקור של הרשומה ביומן, שנקרא גם משאב למעקב ב-Logging. האיור הבא מציג את התוויות של Google Kubernetes Engine.
resource: {
labels: {
cluster_name: "my-cluster"
container_name: "server"
location: "us-central1"
namespace_name: "default"
pod_name: "my-pod"
project_id: "my-project"
}
type: "k8s_container"
}
כפי שמוצג, למשאב שבמעקב יש שדה type וערך אחד או יותר של labels.
לכל הפחות, התוויות של משאב בפיקוח כוללות את project_id או את resource_container.
בטבלה הבאה מפורטים הכללים שבהם משתמשת Google Cloud Observability כדי למפות מאפייני משאב של OTLP למשאב שבמעקב. הטבלה מסודרת. כלומר, אם מאפייני המשאב כוללים את cloud.platform והערך הוא gcp_compute_engine, אז סוג המשאב שבמעקב מוגדר כ-gce_instance. כדי לקבוע את הערך של תווית של משאב במעקב, Google Cloud Observability משתמש ברשימה מתועדפת של מאפייני משאב.
הערך של תווית הוא מחרוזת ריקה אם אף אחד ממאפייני המשאב לא זמין.
| מאפיין OTLP וערך שמצורפים לרשומת יומן |
סוג המשאב במעקב ב-Cloud Logging |
ערכי תוויות של משאבים במעקב כפי שנקבעו ממאפייני משאבים של OTLP, לפי סדר עדיפות |
|---|---|---|
cloud.platformhas value gcp_compute_engine |
gce_instance |
|
cloud.platformhas value gcp_app_engine |
gae_app |
|
cloud.platformhas value aws_ec2 |
aws_ec2_instance |
|
cloud.platformhas value gcp_bare_metal_solution |
baremetal instance |
|
השדות service.name ו-service.instance.idלא ריקים |
generic_task |
|
השדות faas.name ו-faas.instanceלא ריקים |
generic_task |
|
השדות k8s.cluster.name ו-k8s.container.nameלא ריקים |
k8s_container |
|
השדות k8s.cluster.name ו-k8s.pod.nameלא ריקים |
k8s_pod |
|
השדות k8s.cluster.name ו-k8s.node.nameלא ריקים |
k8s_node |
|
k8s.cluster.nameלא ריק |
k8s_cluster |
|
| אין תוויות אחרות שתואמות | generic_node |
|
הסקת ערך התווית של מזהה מאגר משאבים או פרויקט
לכל סוגי המשאבים במעקב ב-Logging יש תווית project_id או תווית resource_container.
המערכת מחפשת את הערכים של התוויות האלה במאפיינים הבאים, לפי הסדר:
project_idgcp.project.idgcp.project_idgcp.dest_project_idgcp.resource.containerresource_containercloud.account.idcloud.account_id