נתוני הגדרות
בטבלה הבאה מוגדרים נתוני התצורה שנמצאים במשתני הסביבה.
| שדות | Spec |
|---|---|
project_id |
מחרוזת המזהה של הפרויקט שאליו נשלחים נתוני יכולת הצפייה. אם השדה ריק, התוסף gRPC observability ינסה לאחזר את מזהה הפרויקט ממשתני הסביבה או מפרטי ברירת המחדל. אם הפונקציות לא נמצאות, הן מחזירות שגיאה. |
cloud_logging |
אובייקט האפשרויות לרישום ביומן מסווגות בטבלה הזו. אם הערך לא מופיע, הרישום ביומן מושבת. |
cloud_logging.client_rpc_events[] |
רשימה רשימה של client_rpc_events הגדרות, שמייצגות את ההגדרה של
קריאות לשירות מרוחק (RPC) יוצאות מהקובץ הבינארי.ההגדרות של client_rpc_events נבדקות לפי הסדר שבו הן מופיעות בטקסט, ונעשה שימוש בהגדרה הראשונה שתואמת. אם בקשת RPC לא תואמת לרשומה, המערכת תמשיך לרשומה הבאה ברשימה. |
cloud_logging.client_rpc_events[].methods[] |
רשימה [מחרוזת] רשימה של מזהי שיטות. כברירת מחדל, הרשימה ריקה ולא תואמת לאף שיטה. הערך של השיטה הוא בפורמט [service]/[method]. * מתקבל כתו כללי לחיפוש עבור:
אם מציינים את שם השירות, הוא חייב להיות שם השירות המוגדר במלואו, כולל שם החבילה. דוגמאות:
|
cloud_logging.client_rpc_events[].exclude |
Bool האם צריך להחריג את השיטות שמסומנות ב- client_rpc_events[].methods[] מהרישום ביומן.ערך ברירת המחדל הוא false, כלומר השיטות שמסומנות על ידי התג client_rpc_events[].methods[] נכללות ברשומה ביומן.אם הערך הוא true, אי אפשר להשתמש בתו הכללי לחיפוש (*) כערך מלא ב- client_rpc_events[].methods[]. |
cloud_logging.client_rpc_events[].max_metadata_bytes |
Int המספר המקסימלי של בייטים של מטא-נתונים לרישום ביומן. אם גודל המטא-נתונים גדול מהמגבלה שהוגדרה, זוגות של מפתח/ערך שחורגים מהמגבלה לא נרשמים ביומן. ערך ברירת המחדל הוא 0, כלומר לא מתבצעת רישום של מטא-נתונים. |
cloud_logging.client_rpc_events[].max_message_bytes |
Int המספר המקסימלי של בייטים בכל הודעה שיירשמו ביומן. אם גודל ההודעה גדול מהמגבלה שהוגדרה, התוכן שחורג מהמגבלה ייחתך. ערך ברירת המחדל הוא 0, כלומר לא מתבצע רישום של מטען ייעודי (payload) של הודעות. |
cloud_logging.server_rpc_events[] |
רשימה רשימה של הגדרות server_rpc_events, שמייצגת את ההגדרה של קריאות לשירות מרוחק (RPC) נכנסות לקובץ הבינארי.ההגדרות של server_rpc_events נבדקות לפי הסדר שבו הן מופיעות בטקסט, ונעשה שימוש בהגדרה הראשונה שתואמת. אם אין התאמה בין בקשת RPC לבין רשומה, המערכת ממשיכה לרשומה הבאה ברשימה. |
cloud_logging.server_rpc_events[].methods[] |
רשימה [מחרוזת] רשימה של מחרוזות שאפשר לבחור באמצעותן קבוצה של שיטות. כברירת מחדל, הרשימה ריקה ולא תואמת לאף שיטה. הערך של השיטה הוא בפורמט [service]/[method]. * מתקבל כתו כללי לחיפוש עבור:
אם מציינים את שם השירות, הוא חייב להיות שם השירות המוגדר במלואו, כולל שם החבילה. דוגמאות:
|
cloud_logging.server_rpc_events[].exclude |
Bool האם צריך להחריג את השיטות שמסומנות ב- server_rpc_events[].methods[] מהרישום ביומן.ערך ברירת המחדל הוא false, כלומר השיטות שמסומנות על ידי התג server_rpc_events[].methods[] נרשמות ביומן.אם הערך הוא true, אי אפשר להשתמש בתו הכללי (*) כערך מלא באף רשומה של server_rpc_events[].methods[]. |
cloud_logging.server_rpc_events[].max_metadata_bytes |
Int המספר המקסימלי של בייטים של מטא-נתונים לרישום ביומן. אם גודל המטא-נתונים גדול מהמגבלה שהוגדרה, זוגות של מפתח/ערך שחורגים מהמגבלה לא נרשמים ביומן. ערך ברירת המחדל הוא 0, כלומר לא מתבצעת רישום של מטא-נתונים. |
cloud_logging.server_rpc_events[].max_message_bytes |
Int המספר המקסימלי של בייטים בכל הודעה שיירשמו ביומן. אם גודל ההודעה גדול מהמגבלה שהוגדרה, התוכן שחורג מהמגבלה ייחתך. ערך ברירת המחדל הוא 0, כלומר לא מתבצע רישום של מטען ייעודי (payload) של הודעות. |
cloud_monitoring |
Object הפעלה של Cloud Monitoring. אין אפשרויות הגדרה. אם מספקים התנגדות להגדרה ריקה, המעקב מופעל. אם לא תספקו אובייקט הגדרה, המעקב יושבת. לדוגמה, אם לא מציינים אפשרויות אחרות, קטע הגדרה ריק מאפשר מעקב.
export GRPC_GCP_OBSERVABILITY_CONFIG='{
"project_id": "your-project-here",
"cloud_monitoring": {
}
}'
|
cloud_trace |
אובייקט קטע הגדרה ריק מאפשר מעקב עם אפשרויות ההגדרה שמוגדרות כברירת מחדל. אם לא מספקים אובייקט הגדרה, המעקב מושבת. לדוגמה, קטע הגדרה ריק מאפשר מעקב עם אפשרויות ברירת מחדל של הגדרות.
export GRPC_GCP_OBSERVABILITY_CONFIG='{
"project_id": "your-project-here",
"cloud_trace": {
}
}'
כשהמעקב מופעל, גם אם שיעור הדגימה הוא 0, ההחלטה לדגום מעקב מסוים מועברת. |
cloud_trace.sampling_rate |
מספר ההגדרה הגלובלית ששולטת בהסתברות למעקב אחר RPC. לדוגמה:
ערך ברירת המחדל של sampling_rate הוא 0.התוסף מתחשב בהחלטה לגבי הדגימה שמתקבלת מהמקור. אם בוחרים ב-RPC לדגימה במעלה הזרם, התוסף אוסף טווחים ומעלה את הנתונים אל העורף, ללא קשר להגדרת קצב הדגימה של התוסף. |
labels |
אובייקט אובייקט JSON שמכיל קבוצה של צמדי מפתח/ערך. המפתח והערך הם מחרוזות. התוויות מוחלות על Cloud Logging, Cloud Monitoring ו-Cloud Trace ביחד. |
הגדרות מעקב
בקטע הזה מפורט מידע על מעקב.
העברת הקשר של מעקב
כדי שהמעקב בין שירותים יפעל, בעל השירות צריך לתמוך בהעברה של הקשר של המעקב שהתקבל מהשירות במעלה הזרם (או שהתחיל בעצמו) לשירות במורד הזרם. הקשר של המעקב מועבר בין השירותים באמצעות מטא-נתונים של gRPC. חשוב לוודא שהפעלתם את ממשקי Cloud Monitoring, Cloud Logging, Cloud Trace ואת ממשקי ה-API של המיקרו-שירותים, כדי שהשירותים בהגדרה הזו יוכלו לדווח על נתוני הטלמטריה שלהם לשירות המתאים.
בלי תמיכה בהפצה, שירותים במורד הזרם לא יכולים ליצור טווחים למעקב. השינוי לא ישפיע על טווחי תאריכים קיימים. תוספי המיקרו-שירותים (microservices) לתצפית תומכים בפורמט הבינארי של OpenCensus לקידוד ולהצפנת הקשר של המעקב.
תגי Span
הפורמט של שם הטווח הוא:
| סוג | ערך לדוגמה | Usage |
|---|---|---|
| טווח RPC |
[Sent|Recv].helloworld.Greeter.SayHello
|
שם הטווח הוא השם המלא של השיטה, שמחובר באמצעות נקודות, ללא קו נטוי בתחילת השם. לשמות של Span מתווסף הקידומת Sent. עבור Span של לקוח RPC
ו-Recv. עבור Span של שרת RPC לפני שם השיטה המלא. |
| משך הניסיון |
Attempt.helloworld.Greeter.SayHello
|
צירוף הקידומת Attempt. לפני השם המלא של השיטה
|
תוויות של טווחים
השילובים מספקים תוויות שונות של טווחים.
במקרה של טווחים של ניסיונות, מצורפים שני מאפיינים נוספים שקשורים לניסיון חוזר (תוויות של טווחים):
| תווית | ערך לדוגמה | שימוש |
|---|---|---|
| previous-rpc-attempts | 0 |
מספר הניסיונות החוזרים לפני ה-RPC הזה. |
| transparent-retry | True/False
|
האם ה-RPC הזה מופעל על ידי ניסיון חוזר שקוף. |
הגדרות של המדדים
המדדים הבאים זמינים ומוצגים בלוח בקרה בשם Microservices (gRPC) Monitoring (מעקב אחרי מיקרו-שירותים (gRPC)) עבור תרחישי שימוש נפוצים.
אלה מדדים מצד הלקוח של gRPC:
| שם המדד | תיאור | סוג, יחידה | תוויות |
|---|---|---|---|
custom.googleapis.com/opencensus/grpc.io/client/started_rpcs |
מספר הניסיונות של RPCs של לקוחות שהתחילו, כולל אלה שלא הושלמו. | מצטבר, Int64, 1 | grpc_client_method |
custom.googleapis.com/opencensus/grpc.io/client/completed_rpcs |
המספר של קריאות ה-RPC של הלקוח שהושלמו, לדוגמה, כשמתקבלת תגובה מהשרת או נשלחת תגובה מהשרת. | מצטבר, Int64, 1 | grpc_client_method, grpc_client_status |
custom.googleapis.com/opencensus/grpc.io/client/roundtrip_latency |
הזמן הכולל שנדרש להשלמת ניסיון RPC, כולל הזמן שנדרש לבחירת ערוץ משנה. | מצטבר, התפלגות, אלפיות השנייה | grpc_client_method |
custom.googleapis.com/opencensus/grpc.io/client/api_latency |
הזמן הכולל שלוקח לספריית gRPC להשלים RPC מנקודת המבט של האפליקציה. | מצטבר, התפלגות, אלפיות השנייה | grpc_client_method, grpc_client_status |
custom.googleapis.com/opencensus/grpc.io/client/sent_compressed_message_bytes_per_rpc |
מספר הבייטים הכולל (דחוסים, לא מוצפנים) שנשלחו בכל הודעות הבקשה לכל ניסיון RPC. | מצטבר, התפלגות, לפי | grpc_client_method, grpc_client_status |
custom.googleapis.com/opencensus/grpc.io/client/received_compressed_message_bytes_per_rpc |
המספר הכולל של בייטים (דחוסים, לא מוצפנים) שהתקבלו בכל הודעות התגובה לכל ניסיון RPC. | מצטבר, התפלגות, לפי | grpc_client_method, grpc_client_status |
אלה המדדים שזמינים בצד השרת של gRPC:
| שם המדד | תיאור | סוג, יחידה | תוויות |
|---|---|---|---|
custom.googleapis.com/opencensus/grpc.io/server/started_rpcs |
המספר של קריאות ה-RPC שהתקבלו בשרת, כולל קריאות RPC שלא הושלמו. |
מצטבר, Int64, 1 | grpc_server_method |
custom.googleapis.com/opencensus/grpc.io/server/completed_rpcs |
המספר הכולל של קריאות RPC שהושלמו, למשל, כששרת שולח תגובה. |
מצטבר, Int64, 1 | grpc_server_method, grpc_server_status |
custom.googleapis.com/opencensus/grpc.io/server/sent_compressed_message_bytes_per_rpc |
מספר הבייטים הכולל (לא דחוסים ולא מוצפנים) שנשלחו בכל הודעות התגובה לכל RPC. |
מצטבר, התפלגות, לפי | grpc_server_method, grpc_server_status |
custom.googleapis.com/opencensus/grpc.io/server/received_compressed_message_bytes_per_rpc |
המספר הכולל של בייטים (לא דחוסים ולא מוצפנים) שהתקבלו בכל הודעות הבקשה לכל RPC. |
מצטבר, התפלגות, לפי | grpc_server_method, grpc_server_status |
custom.googleapis.com/opencensus/grpc.io/server/server_latency
|
הזמן הכולל שנדרש ל-RPC מנקודת המבט של העברת הנתונים מהשרת (HTTP2 / inproc / cronet). |
מצטבר, התפלגות, אלפיות השנייה | grpc_server_method |
כל התפלגות בטבלה שלמעלה מכילה היסטוגרמה עם קטגוריות באופן הבא:
הגודל בבייטים: 0, 1024, 2048, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 67108864, 268435456, 1073741824, 4294967296
זמן האחזור באלפיות השנייה: 0, 0.01, 0.05, 0.1, 0.3, 0.6, 0.8, 1, 2, 3, 4, 5, 6, 8, 10, 13, 16, 20, 25, 30, 40, 50, 65, 80, 100, 130, 160, 200, 250, 300, 400, 500, 650, 800, 1000, 2000, 5000, 10000, 20000, 50000, 100000
תיאור התג:
-
grpc_client_method: שם השיטה המלא של gRPC, כולל החבילה, השירות והשיטה, לדוגמה,google.bigtable.v2.Bigtable/CheckAndMutateRow -
grpc_client_status: קוד סטטוס של שרת gRPC שהתקבל, לדוגמה,OK,CANCELLED,DEADLINE_EXCEEDED -
grpc_server_method: השם המלא של שיטת gRPC, כולל החבילה, השירות והשיטה, לדוגמה,com.exampleapi.v4.BookshelfService/Checkout -
grpc_server_status: קוד הסטטוס של שרת gRPC שהוחזר, לדוגמהOK,CANCELLED,DEADLINE_EXCEEDED
הגדרות של רשומות ביומן
יומני הנראות של המיקרו-שירותים מועלים ל-Cloud Logging באמצעות שם היומן (PROJECT_ID הוא ה-placeholder למחרוזת שמייצגת את הפרויקט):
logName=projects/[PROJECT_ID]/logs/microservices.googleapis.com%2Fobservability%2Fgrpc
הנה ייצוג JSON של רשומת היומן שנוצרה:
{
"authority": string,
"callId": string,
"type": string,
"logger": string,
"serviceName": string,
"methodName": string,
"peer": {
"type": string,
"address": string,
"ipPort": int
},
"payload": {
"timeout": string,
"metadata":
{
string: string,
string: string
},
"statusCode": string,
"statusMessage": string,
"statusDetails": string,
"message": string,
"messageLength": int,
},
"sequenceId": int
}
בטבלה הבאה מתוארים השדות ברשומה ביומן:
| שדות | Spec |
|---|---|
| רשות | מחרוזת אפשר להשתמש בתהליך יחיד כדי להפעיל כמה שרתים וירטואליים עם זהויות שונות. הסמכות היא השם של זהות שרת כזו. בדרך כלל זה חלק מה-URI בצורה של host או host:port. |
| callId | מחרוזת מזהה באופן ייחודי קריאה [ללקוח/לשרת] שהיא UUID. כל שיחה יכולה לכלול כמה רשומות ביומן. לכולם יש את אותו callId. |
| סוג | מחרוזת סוג האירוע ביומן. סוגי האירועים הם: EVENT_TYPE_UNKNOWNCLIENT_HEADERSERVER_HEADERCLIENT_MESSAGESERVER_MESSAGECLIENT_HALF_CLOSESERVER_TRAILERCANCEL |
| כלי לרישום ביומן | מחרוזת סוג הכלי לרישום אירועים. סוגי יומני האירועים הם: LOGGER_UNKNOWN, CLIENT, SERVER |
| serviceName | מחרוזת השם של השירות. |
| methodName | מחרוזת השם של ה-method של ה-RPC. |
| אפליקציה להשוואה | אובייקט פרטי כתובת של עמית. בצד הלקוח, ה-peer נרשם ביומן באירועים של כותרת השרת ובאירועים של הטריילר. בצד השרת, ה-peer תמיד נרשם ביומן באירוע של כותרת הלקוח. |
| peer.type | מחרוזת סוג הכתובת, אם היא IPv4, IPv6 או UNIX. |
| peer.address | מחרוזת תוכן הכתובת. |
| peer.ip_port | Int מספר היציאה של הכתובת. האפשרות הזו זמינה רק לכתובות IPv4 ו-IPv6. |
| מטען ייעודי (payload) | אובייקט המטען הייעודי יכול לכלול שילוב של מטא-נתונים, זמן קצוב לתפוגה, הודעה ומצב, בהתאם לאירוע.
|
| payload.timeout | מחרוזת מחרוזת שמייצגת את google.protobuf.Duration, כמו "1.2 s".הערך של הזמן הקצוב לתפוגת RPC. |
| payload.metadata | Mapping[String, String] משמש לאירוע כותרת או לאירוע טריילר. |
| payload.message | מחרוזת (בייטים) המטען הייעודי של ההודעה. |
| payload.messageLength | Int גודל ההודעה, בלי קשר לשאלה אם ההודעה המלאה מתועדת (לדוגמה, יכול להיות שהיא קוצצה או הושמטה). |
| payload.statusCode | מחרוזת קוד הסטטוס של gRPC. |
| payload.statusMessage | מחרוזת הודעת הסטטוס של gRPC. |
| payload.statusDetails | מחרוזת הערך של מפתח המטא-נתונים grpc-status-details-bin, אם יש כזה. ההודעה תמיד מקודדת google.rpc.Status
|
| payloadTruncated | Bool הערך הוא True אם ההודעה או שדה המטא-נתונים נחתכו או הושמטו בגלל אפשרויות ההגדרה. |
| sequenceId | Int מזהה רצף ההודעות של השיחה הזו. ההודעה הראשונה מקבלת ערך של 1, כדי להבדיל אותה מערך לא מוגדר. המטרה של השדה הזה היא לזהות רשומות חסרות בסביבות שבהן אין עמידות או סדר מובטח. |
תוויות משאבים
תוויות משאבים מזהות את המקור שמייצר נתוני יכולת צפייה. כל תווית משאב היא צמד מפתח/ערך, כאשר המפתחות הם ערכים מוגדרים מראש שספציפיים לסביבת המקור (לדוגמה, GKE או Compute Engine).
בפריסות של GKE, התוויות של המשאבים מאוכלסות כברירת מחדל, למעט שם הקונטיינר ושם מרחב השמות. אפשר לאכלס את הערכים החסרים באמצעות Downward API.
אלה המפתחות של משתני הסביבה:
- CONTAINER_NAME
- NAMESPACE
לדוגמה, הקטע env בדוגמה הבאה כולל שתי תוויות משאבים:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: app1
name: app1
spec:
replicas: 2
selector:
matchLabels:
run: app1
template:
metadata:
labels:
run: app1
spec:
containers:
- image: 'o11y-examples:1.00'
name: container1
ports:
- protocol: TCP
containerPort: 50051
env:
- name: CONTAINER_NAME
value: container1
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
תוויות מותאמות אישית
תוויות מותאמות אישית מייצגות מידע נוסף שהמשתמשים סיפקו בנתוני הנראות. תוויות מורכבות ממפתח ומערך. צמד המפתח/ערך מצורף לנתוני מעקב כתוויות של טווחים, לנתוני מדדים כתוויות של מדדים ולנתוני רישום ביומן כתוויות של רשומות ביומן. כל התוויות המותאמות אישית הן מסוג STRING.
אפשר לספק תוויות בהתאמה אישית בהגדרה על ידי ציון רשימה של צמדי מפתח-ערך עבור labels. ההטמעה קוראת את ההגדרה ויוצרת תווית נפרדת לכל צמד מפתח/ערך, ואז מצרפת את התווית לנתוני יכולת הצפייה. לדוגמה:
"labels": {
"DATACENTER": "SAN_JOSE_DC",
"APP_ID": "24512"
}
כל רשומה ביומן מכילה את התוויות הנוספות הבאות:
{
"DATACENTER": "SAN_JOSE_DC"
"APP_ID": "24512"
}
המאמרים הבאים
- מידע על סוגי מדדים זמין במאמר סוגי ערכים וסוגי מדדים.
- מידע על הפצות זמין בדף ההפצות.
- מידע על יצירת תרשימים של מדדי הפצה זמין במאמר בנושא מדדי הפצה.
- מידע על יחידות (כמו
1,msו-By) זמין בשדה היחידה במאמר בנושאMetricDescriptor.