במאמר הזה מוסבר איך להגדיר את הפלאגין Microservices observability, איך להוסיף מכשור לאפליקציות gRPC ואיך לקבל מידע מ-Cloud Monitoring, מ-Cloud Logging ומ-Cloud Trace.
לפני שמתחילים
התכונה 'יכולת צפייה במיקרו-שירותים' פועלת בכל פריסה שקיבלה הרשאה לגשת אל Cloud Monitoring, אל Cloud Logging ואל Cloud Trace באמצעות הפעלת Microservices API. במדריך הזה אנחנו מספקים דוגמה להגדרה של ניראות (observability) של מיקרו-שירותים באמצעות דוגמה של Compute Engine.
באופן כללי, השלבים הם:
- מפתחי שירותים יכולים להפעיל את התוסף Microservices observability ולשלוט בו.
- מפעיל שירות יכול לצרוך את הנתונים שנאספו בדרכים שונות.
מאגרי gRPC (C++, Go ו-Java) כוללים דוגמאות להדגמה של יכולת התבוננות במיקרו-שירותים.
לפני שמגדירים את יכולת התצפית, צריך לבצע את המשימות הבאות:
- סקירה כללית על יכולת התצפית (Observability) על מיקרו-שירותים
- מוודאים שיש לכם פרויקט קיים או יוצרים פרויקט חדש.
- מוודאים שיש לכם חשבון שירות קיים או יוצרים חשבון חדש.
- קוראים על שני משתני הסביבה הנתמכים, מחליטים באיזה מהם להשתמש ומגדירים את הערכים הנדרשים למשתנה הסביבה.
- מפעילים את Microservices API.
בחירת משתנה סביבה להגדרה
כשמצטרפים לפלאגין ניראות (observability) של מיקרו-שירותים (Microservices), שמתואר במאמר לבצע אינסטרומנטציה של האפליקציות לשימוש בפלאגין ניראות (observability), צריך לספק פרטי הגדרה באמצעות משתנה סביבה. כברירת מחדל, אף אחת מתכונות הניטור לא מופעלת. מגדירים את משתנה הסביבה במכונה הווירטואלית או בקונטיינר שבהם מורצים האפליקציה או עומס העבודה של gRPC.
אלה משתני הסביבה:
-
GRPC_GCP_OBSERVABILITY_CONFIG_FILE: הערך הוא נתיב שמצביע על קובץ הגדרות בקידוד JSON. -
GRPC_GCP_OBSERVABILITY_CONFIG: הערך הוא גוף ההגדרה שמקודד ב-JSON.
אם שני משתני הסביבה מוגדרים, GRPC_GCP_OBSERVABILITY_CONFIG_FILE מקבל עדיפות על פני GRPC_GCP_OBSERVABILITY_CONFIG.
כדי להחיל את ההגדרה, צריך להפעיל מחדש את אפליקציית gRPC. אי אפשר להגדיר או לראות את הערכים של משתני הסביבה במסוף Google Cloud .
בהגדרה, אפשר להגדיר פרויקט יעד שאליו יועלו נתוני רישום ביומן, מעקב ומדדים. מגדירים את מזהה הפרויקט בשדה project_id.
אם השדה הזה ריק, התוסף observability ממלא באופן אוטומטי את הערך של מזהה הפרויקט על סמך פרטי ברירת המחדל של האפליקציה.
אם אי אפשר לזהות את פרטי הכניסה שמוגדרים כברירת מחדל באפליקציה והשדה
project_idריק, השיטהINIT/STARTמעלה שגיאה או מחזירה שגיאה לאפליקציה. האפליקציה צריכה לטפל בשגיאה.
משתמשים במידע שבקטע נתוני הגדרה כדי להגדיר את הערכים במשתנה הסביבה שבוחרים.
הפעלת Microservices API
אפשר להשתמש ב-CLI של gcloud או במסוף Google Cloud כדי להפעיל את Microservices API בפרויקטים. הפעלת Microservices API מפעילה באופן אוטומטי את Cloud Logging API, Cloud Monitoring API ו-Cloud Trace API.
כדי להפעיל את ה-API:
gcloud services enable microservices.googleapis.com
הגדרת הרשאות לחשבון שירות
אם אתם משתמשים בחשבון שירות שאינו ברירת המחדל, צריך להעניק את ההרשאות הנדרשות לחשבון השירות. מגדירים את הערכים הבאים:
- PROJECT_ID: מחליפים את מזהה הפרויקט.
- SERVICE_ACCOUNT_NAME: מחליפים את השם של חשבון השירות בפרויקט.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/logging.logWriter
gcloud projects add-iam-policy-binding PROJECT_ID> \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/cloudtrace.agent
ביצוע אינסטרומנטציה באפליקציות עבור פלאגין ה-observability
כדי להוסיף לאפליקציות את האפשרות להשתמש בפלאגין Microservices observability, פועלים לפי ההוראות הבאות ל-C++, ל-Java ול-Go.
C++
אפשר להשתמש ב-C++ עם יכולת מעקב אחרי מיקרו-שירותים החל מ-gRPC C++ v1.54. מאגר לדוגמה נמצא ב-GitHub.
שינויים ב-Build
התמיכה ב-Observability זמינה רק דרך מערכת ה-build של Bazel. מוסיפים את יעד grpcpp_gcp_observability כתלות.
שינויים נדרשים בקוד
כדי להפעיל את התכונה 'יכולת צפייה במיקרו-שירותים', צריך להוסיף תלות (מודול יכולת צפייה) ולבצע את שינויי הקוד הבאים בלקוחות, בשרתים או בשניהם של gRPC:
#include <grpcpp/ext/gcp_observability.h>
int main(int argc, char** argv) {
auto observability = grpc::GcpObservability::Init();
assert(observability.ok());
…
// Observability data flushed when object goes out of scope
}
לפני כל פעולת gRPC, כולל יצירת ערוץ, שרת או פרטי כניסה, מפעילים את הפקודה הבאה:
grpc::GcpObservability::Init();
הפונקציה מחזירה את הערך absl::StatusOr<GcpObservability>, שצריך לשמור. הסטטוס עוזר לקבוע אם ההגדרה של יכולת הצפייה בוצעה בהצלחה. האובייקט GcpObservability שמצורף שולט במשך הזמן שבו אפשר לצפות בנתונים, והוא נסגר אוטומטית ומנקה את נתוני התצפית כשהוא יוצא מההקשר.
המשך
יש תמיכה בתוספים של יכולת צפייה במיקרו-שירותים בגרסאות gRPC Go v1.54.0 ומעלה.
מאגר הדוגמאות נמצא ב-GitHub.
כדי להפעיל את האפשרות 'שקיפות של מיקרו-שירותים' באמצעות מודול Go, צריך מודול שקיפות ואת הקוד הבא:
import "google.golang.org/grpc/gcp/observability"
func main() {
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
if err := observability.Start(ctx); err != nil {
log.Warning("Unable to start gRPC observability:", err)
}
defer observability.End()
…
}
הקריאה observability.Start מנתחת את ההגדרה ממשתני הסביבה, יוצרת בהתאם את רכיבי הייצוא ומזריקה לוגיקה של איסוף לחיבורי לקוח ולשרתים שנוצרו אחרי הקריאה. הקריאה המושעית observability.End
מנקה את המשאבים ומוודאת שהנתונים שנשמרו במאגר זמני נמחקים לפני שהאפליקציה נסגרת.
אחרי שמעדכנים את קוד האפליקציה, מריצים את הפקודה הבאה כדי לעדכן את הקובץ go.mod.
go mod tidy
Java
כדי להשתמש בניראות (observability) של מיקרו-שירותים באפליקציות Java, צריך לשנות את ה-build כך שיכלול את ארטיפקט grpc-gcp-observability. משתמשים בגרסה 1.54.1 ואילך של gRPC.
בקטעים בנושא יצירת קטעי קוד בכלי Gradle ובכלי Maven, הערך grpcVersion מוגדר ל-1.54.1.
מאגר הדוגמאות נמצא ב-GitHub.
שינויים נדרשים בקוד Java
כדי להטמיע בהצלחה את האפשרות למעקב אחרי מיקרו-שירותים באפליקציות Java, מוסיפים את הקוד הבא ל-main().
...
import io.grpc.gcp.observability.GcpObservability;
...
// Main application class
...
public static void main(String[] args) {
...
// call GcpObservability.grpcInit() to initialize & get observability
GcpObservability observability = GcpObservability.grpcInit();
...
// call close() on the observability instance to shutdown observability
observability.close();
...
}
שימו לב שצריך להפעיל את הפונקציה GcpObservability.grpcInit() לפני שיוצרים ערוצי gRPC או שרתים. הפונקציה GcpObservability.grpcInit() קוראת את ההגדרה של יכולת הצפייה במיקרו-שירותים ומשתמשת בה כדי להגדיר את המיירטים והעוקבים הגלובליים שנדרשים לרישום ביומן, למדדים ולפונקציונליות של מעקב בכל ערוץ ובכל שרת שנוצר. GcpObservability.grpcInit()
is thread safe and must be called exactly once. היא מחזירה מופע של GcpObservability שצריך לשמור כדי להפעיל את close() מאוחר יותר.
GcpObservability.close() מבטלת את ההקצאה של משאבים. ערוצים או שרתים שנוצרו אחרי כן לא יתועדו.
GcpObservability מטמיע את java.lang.AutoCloseable, שנסגר אוטומטית אם משתמשים ב-try-with-resource באופן הבא:
...
import io.grpc.gcp.observability.GcpObservability;
...
// Main application class
...
public static void main(String[] args) {
...
// call GcpObservability.grpcInit() to initialize & get observability
try (GcpObservability observability = GcpObservability.grpcInit()) {
...
} // observability.close() called implicitly
...
}
שימוש בכלי Gradle לבנייה
אם אתם משתמשים בכלי Gradle build, אתם צריכים לכלול את הקוד הבא:
def grpcVersion = '1.54.1'
...
dependencies {
...
implementation "io.grpc:grpc-gcp-observability:${grpcVersion}"
...
}
שימוש בכלי Maven לבנייה (pom.xml)
אם משתמשים בכלי Maven build, צריך לכלול את הקוד הבא:
<properties>
...
<grpc.version>1.54.1</grpc.version>
...
</properties>
...
<dependencies>
...
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-gcp-observability</artifactId>
<version>${grpc.version}</version>
</dependency>
...
</dependencies>
הפעלה של איסוף מדדים, מעקב ונתוני רישום
בקטעים הבאים מוסבר איך להפעיל את איסוף הנתונים בהגדרה שלכם, ומוצגת דוגמה שבה פרטי ההגדרה מופיעים במשתנה סביבתי.
הפעלת מדדים
כדי להפעיל מדדים, מוסיפים את האובייקט cloud_monitoring להגדרה ומגדירים את הערך שלו ל-{}.
מידע נוסף על מדדים זמין במאמר הגדרות של מדדים.
הפעלת מעקב
אם אתם מתכננים להפעיל מעקב בשירותים שונים, ודאו שהשירותים תומכים בהעברה של הקשר של המעקב שהתקבל ממעלה הזרם (או שהתחיל בעצמו) למורד הזרם.
כדי להפעיל את האפשרות 'מעקב':
- מוסיפים את האובייקט
cloud_traceלהגדרה. - מגדירים את
cloud_trace.sampling_rateלהסתברות שרוצים שאפליקציית המעקב תתחיל מעקבים חדשים.- לדוגמה,
1.0פירושו מעקב אחרי כל RPC. -
0.0פירושו לא להתחיל מעקבים חדשים. -
0.5פירושו ש-50% מה-RPC נסרקים באופן אקראי.
- לדוגמה,
אם מתקבלת החלטת דגימה חיובית במעלה הזרם, השירותים שלכם מעלים טווחי זמן ללא קשר להגדרת קצב הדגימה.
מידע נוסף על מעקב זמין במאמר הגדרות מעקב.
הפעלת רישום ביומן
כדי להפעיל את הרישום ביומן:
- מוסיפים את האובייקט
cloud_loggingלהגדרה. - מוסיפים תבנית ל-
client_rpc_eventsאו ל-server_rpc_eventsאו לשניהם, ומציינים את קבוצת השירותים או השיטות שרוצים ליצור עבורם רישום ביומן של אירועים ברמת התעבורה, ואת מספר הבייטים שרוצים לרשום ביומן עבור כותרות והודעות.
מידע נוסף על רישום ביומן זמין במאמר הגדרות של רשומות ביומן.
דוגמה למשתנה סביבה
בדוגמה הבאה מוגדרים משתני היכולת להתבוננות במשתנה הסביבה GRPC_GCP_OBSERVABILITY_CONFIG:
export GRPC_GCP_OBSERVABILITY_CONFIG='{
"project_id": "your-project-here",
"cloud_logging": {
"client_rpc_events": [
{
"methods": ["google.pubsub.v1.Subscriber/Acknowledge", "google.pubsub.v1.Publisher/CreateTopic"],
"exclude": true
},
{
"methods": ["google.pubsub.v1.Subscriber/*", "google.pubsub.v1.Publisher/*"],
"max_metadata_bytes": 4096,
"max_message_bytes": 4096
}],
"server_rpc_events": [{
"methods": ["*"],
"max_metadata_bytes": 4096,
"max_message_bytes": 4096
}],
},
"cloud_monitoring": {},
"cloud_trace": {
"sampling_rate": 1.00
},
"labels": {
"SOURCE_VERSION": "J2e1Cf",
"SERVICE_NAME": "payment-service-1Cf",
"DATA_CENTER": "us-west1-a"
}
}'
יצירת דוגמה של יכולת התבוננות
כדי ליצור מכונת VM ב-Compute Engine ולהתחבר אליה, ואז להגדיר את דוגמת ה-Observability, פועלים לפי ההוראות האלה.
יוצרים מופע של VM:
gcloud compute instances create grpc-observability-vm \ --image-family=debian-11 \ --image-project=debian-cloud \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
מתחברים למופע של מכונת ה-VM:
gcloud compute ssh --project=PROJECT_ID grpc-observability-vm
ממשיכים עם ההוראות ל-Java, C++ או Go, בהתאם לשפה של אפליקציות gRPC.
Java
אחרי שמתחברים למופע של מכונת ה-VM, מוודאים שגרסה Java 8 או גרסה מתקדמת יותר מותקנת.
sudo apt update sudo apt upgrade sudo apt install git sudo apt-get install -y openjdk-11-jdk-headless
משכפלים את מאגר
grpc-java.export EXAMPLES_VERSION=v1.54.1 git clone -b $EXAMPLES_VERSION --single-branch --depth=1 \ https://github.com/grpc/grpc-java.git
עוברים לספריית הדוגמאות.
cd grpc-java/examples/example-gcp-observability
בתיקיית הדוגמאות, פותחים את קובץ ה-README ופועלים לפי ההוראות בקובץ.
כשמופיעה ההנחיה לפתוח חלון טרמינל נוסף, מריצים את הפקודה הבאה:
gcloud compute ssh --project=PROJECT_ID grpc-observability-vm
C++
אחרי שמתחברים למכונה הווירטואלית, מריצים קובץ בינארי של שרת
hello-worldבחלון טרמינל.sudo apt-get update -y sudo apt-get install -y git build-essential clang git clone -b v1.54.0 https://github.com/grpc/grpc.git --depth=1 cd grpc export GOOGLE_CLOUD_PROJECT=PROJECT_ID export GRPC_GCP_OBSERVABILITY_CONFIG_FILE="$(pwd)/examples/cpp/gcp_observability/helloworld/server_config.json" tools/bazel run examples/cpp/gcp_observability/helloworld:greeter_server
בחלון טרמינל אחר, מתחברים שוב למכונה הווירטואלית באמצעות SSH ומריצים את הפקודות הבאות, שמריצות את הקובץ הבינארי של הלקוח
hello-world.cd grpc export GOOGLE_CLOUD_PROJECT=PROJECT_ID export GRPC_GCP_OBSERVABILITY_CONFIG_FILE="$(pwd)/examples/cpp/gcp_observability/helloworld/client_config.json" tools/bazel run examples/cpp/gcp_observability/helloworld:greeter_client
המשך
מוודאים ש-Go מותקן.
sudo apt-get install -y git sudo apt install wget wget https://go.dev/dl/go1.20.2.linux-amd64.tar.gz sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf \ go1.20.2.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin
משכפלים את הדוגמאות של
gRPC-Go.git clone https://github.com/grpc/grpc-go.git cd grpc-go/ git checkout -b run-observability-example 875c97a94dca8093bf01ff2fef490fbdd576373d
עוברים לשיבוט של ספריית
gRPC-Go:cd examples/features/observability
מפעילים את השרת.
export GRPC_GCP_OBSERVABILITY_CONFIG_FILE=./server/serverConfig.json go run ./server/main.go
בחלון טרמינל נפרד, מריצים את הפקודות הבאות.
export PATH=$PATH:/usr/local/go/bin cd grpc-go/examples/features/observability export GRPC_GCP_OBSERVABILITY_CONFIG_FILE=./client/clientConfig.json go run ./client/main.go
צפייה בנתוני מעקב, במדדים וברשומות ביומן
בקטע הזה מוסבר איך לצפות בנתוני מעקב, במדדים ובערכי יומן.
צפייה בנתוני מעקב ב-Cloud Trace
אחרי שמגדירים את הדוגמאות או אחרי שמטמיעים את עומסי העבודה, אמורים לראות עקבות שנוצרו על ידי לקוחות gRPC ושרתי gRPC במסוףGoogle Cloud ברשימה של העקבות האחרונים.
צפייה ביומנים של פרטי ההעברה
אם מפעילים גם רישום ביומן וגם מעקב, אפשר לראות את הרשומות ביומן של המעקבים לצד תרשים המפל של Cloud Trace או ב-Logs Explorer.
הצגת מדדים במרכז הבקרה
הניראות של מיקרו-שירותים מספקת לוח בקרה של מעקב שנקרא Microservices (gRPC) Monitoring (מעקב אחרי מיקרו-שירותים (gRPC)) עבור המדדים שמוגדרים בהגדרות המדדים. לוח הבקרה מוצג במסוף רק אם מופעל Microservices API. Google Cloud המסוף Google Cloud קורא ל-Service Usage API כדי לוודא ש-Microservices API מופעל בפרויקט. למשתמש צריכה להיות הרשאת serviceusage.services.list כדי להציג את לוח הבקרה.
מרכז הבקרה Microservices (gRPC) Monitoring הוא Google Cloud מרכז בקרה ואין אפשרות לשנות אותו ישירות. כדי להתאים אישית את לוח הבקרה, צריך להעתיק אותו ללוח בקרה מותאם אישית. לאחר מכן תוכלו לעדכן את מרכז הבקרה המותאם אישית, למשל להוסיף, למחוק או לסדר מחדש את התרשימים.
הצגת מדדים ב-Metrics Explorer
אחרי שמגדירים את הדוגמה ל-gRPC או מוסיפים מכשור לעומס העבודה, אמורים לראות את המדדים שנוצרו על ידי לקוחות gRPC ושרתי gRPC בGoogle Cloud מסוף.
כדי לראות מדדים בתרשים, פועלים לפי ההוראות במאמר איך בוחרים מדדים כשמשתמשים ב-Metrics Explorer.
בדיקת רשומות ביומן ב-Log Explorer
התכונה 'הצעה לשאילתה' היא תכונה של Cloud Logging שבה Google Cloud מוצעות קבוצות של שאילתות על סמך היומנים שהוטמעו. אפשר ללחוץ על המסננים המוכנים ולהשתמש בהם.
אחרי שרשומות היומן שתואמות לשאילתות המוצעות יופיעו ב-Cloud Logging, צפויות להופיע שאילתות מוצעות חדשות תוך כ-6 דקות. ברוב המקרים, תוכלו לראות הצעות חדשות לשאילתות מוקדם יותר. אם יש רשומות ביומן שתואמות להצעה ב-15 הדקות הקודמות, ההצעות לשאילתות ימשיכו להופיע. ההמלצות ימשיכו להופיע עד שלא יהיו יותר רשומות תואמות ביומן ב-15 הדקות האחרונות.
אפשר ליצור שאילתות בהתאמה אישית. הוראות מפורטות זמינות במדריך לשפת שאילתות לרישום ביומן. לדוגמה, בחלונית Query של Logs Explorer, אפשר לנסות להציג את כל יומני הניפוי באגים של gRPC באמצעות הקוד הבא:
log_id("microservices.googleapis.com/observability/grpc")
אפשר להשתמש בכל השדות ברשומה של יומן הרישום של gRPC לצורך סינון. לדוגמה, הנה רשומה ביומן:
{
"insertId": "17kh8vafzuruci",
"jsonPayload": {
"authority": "10.84.1.15:50051",
"sequenceId": "6",
"serviceName": "helloworld.Greeter",
"peer": {
"ipPort": 50051,
"address": "10.84.1.10",
"type": "IPV4"
},
"callId": "d9577780-c608-4bff-9e12-4d9cdea6b298",
"type": "SERVER_TRAILER",
"methodName": "SayHello",
"payload": {},
"logger": "CLIENT"
},
"resource": {
"type": "k8s_container",
"labels": {
"pod_name": "grpc-client-deployment-155-6967959544-x8ndr",
"container_name": "grpc-client-container-155",
"cluster_name": "o11y-cluster",
"namespace_name": "grpc-client-namespace-155",
"location": "us-west1-b",
"project_id": "grpc-greeter"
}
},
"timestamp": "2023-04-05T23:33:41.718523Z",
"severity": "DEBUG",
"labels": {
"environment": "example-client"
},
"logName": "projects/grpc-greeter/logs/microservices.googleapis.com%2Fobservability%2Fgrpc",
"receiveTimestamp": "2023-04-05T23:33:42.712682457Z"
}
הצעות לשאילתות
הניראות של מיקרו-שירותים מספקת את השאילתות המוצעות הבאות ל-Cloud Logging:
רשומות ביומן של כותרות או נתונים בסוף של gRPC
השאילתה הזו מספקת תצוגה בסיסית של קריאות RPC, ומציגה מידע על עמיתים ותוצאות של קריאות RPC.
log_id("microservices.googleapis.com/observability/grpc") AND
jsonPayload.type=("CLIENT_HEADER" OR "SERVER_TRAILER")
קריאות gRPC שנכשלו
השאילתה הזו מוצאת את קריאות ה-RPC שמסתיימות בסטטוס שאינו OK.
log_id("microservices.googleapis.com/observability/grpc") AND
jsonPayload.type="SERVER_TRAILER" AND
jsonPayload.payload.statusCode!="OK"
רישום רשומות ביומן עבור בקשות gRPC שבוטלו או שחרגו מהמועד האחרון
ביטולים מוגזמים של gRPC או חריגות מהזמן הקצוב יכולים לספק מידע שימושי על ירידה בביצועים או על התנהגות בלתי צפויה של האפליקציה.
log_id("microservices.googleapis.com/observability/grpc") AND
((jsonPayload.type="SERVER_TRAILER" AND jsonPayload.payload.statusCode=("CANCELLED" OR "DEADLINE_EXCEEDED")) OR (jsonPayload.type="CANCEL"))
שימוש ביומנים ובמעקב לפתרון בעיות
אם אתם רואים אירוע RPC שמצביע על התנהגות לא תקינה, תוכלו למצוא את callId
באירוע. משתמשים בשאילתה הבאה כדי להציג את כל האירועים שהתרחשו ב-RPC אחד, בלי קשר אם זה RPC אוניטרי או RPC של סטרימינג. בדוגמה הבאה מוצגת רשומה ביומן:
log_id("microservices.googleapis.com/observability/grpc")
jsonPayload.callId="a358c7b80-3548-4bc8-a33f-b93ba1514904"
כדי לקבוע את היקף הבעיה, אפשר למצוא את כל אירועי ה-RPC לאותה שיטה או לאותו מיקום. השאילתה הבאה מציגה את כל יומני הניפוי באגים שקשורים לשיטת RPC ספציפית, באמצעות שירות Greeter כדוגמה:
log_id("microservices.googleapis.com/observability/grpc")
jsonPayload.serviceName="helloworld.Greeter"
jsonPayload.methodName="SayHello"
כדי לבדוק את קריאות ה-RPC שנכשלו עם קוד סטטוס ספציפי, אפשר להוסיף את קוד הסטטוס כאחד מתנאי הסינון. השאילתה הבאה מציגה את אירועי הטריילר שמסתיימים בסטטוס שאינו OK:
log_id("microservices.googleapis.com/observability/grpc")
jsonPayload.payload.statusCode!="OK"
אפשרויות ניראות
התכונות האופציונליות הבאות כלולות ב-Microservices observability.
הגדרת תוויות מותאמות אישית
אתם יכולים להגדיר תוויות בהתאמה אישית, שמוסיפות לנתוני יכולת הצפייה מידע שהמשתמשים סיפקו. תוויות מותאמות אישית מורכבות מצמדים של מפתח וערך. כל צמד של מפתח וערך מצורף לנתוני מעקב כתוויות של טווחים, לנתוני מדדים כתגי מדדים ולנתוני רישום ביומן כתוויות של רשומות ביומן.
תוויות מותאמות אישית מוגדרות בהגדרה עם רשימה של צמדי מפתח/ערך בשדה labels. כל המפתחות והערכים של תוויות מותאמות אישית הם מסוג STRING. ההטמעה קוראת את ההגדרה ויוצרת תווית נפרדת לכל צמד מפתח/ערך, ואז מצרפת את התוויות לנתוני יכולת הצפייה.
לדוגמה, זו הגדרת תווית:
"labels": {
"DATACENTER": "SAN_JOSE_DC",
"APP_ID": "24512"
}
לכל רשומה ביומן יש את התוויות הנוספות הבאות:
{
"DATACENTER" : "SAN_JOSE_DC"
"APP_ID" : "24512"
}
הפעלת רישום ביומן של מטען ייעודי (payload)
כדי להפעיל את רישום היומנים של מטען הייעודי (payload), משתמשים במשתני הסביבה שמספקים לעומס העבודה. כדי להפעיל את רישום המטען הייעודי (payload) ביומן עבור הודעות וכותרות של HelloWorld, צריך לעדכן את הערך של קובצי ההגדרות gcp_observability_server_config.json, gcp_observability_client_config.json או שניהם בדוגמאות של gRPC באופן הבא:
{
"cloud_monitoring":{
},
"cloud_trace":{
"sampling_rate":1.0
},
"cloud_logging":{
"client_rpc_events":[
{
"methods":[
"helloworld.Greeter/*"
],
"max_metadata_bytes":4096,
"max_message_bytes":4096
}
],
"server_rpc_events":[
{
"methods":[
"helloworld.Greeter/*"
],
"max_metadata_bytes":4096,
"max_message_bytes":4096
}
]
}
}
הגדרת ניראות (observability) בין פרויקטים
אפשר להגדיר את פרויקט היעד באופן מפורש באמצעות קבוצת ההגדרות שמוגדרת במשתנה הסביבה GRPC_GCP_OBSERVABILITY_CONFIG. כדי לקבל נראות בין פרויקטים, צריך גם להגדיר את הרשאות חשבון השירות המתאימות.
אם מזהה פרויקט היעד הוא core-platform-stats, אפשר להגדיר נראות בין פרויקטים באמצעות הגדרת הדוגמה הבאה:
{
"project_id":"core-platform-stats",
"cloud_monitoring":{
},
"cloud_trace":{
"sampling_rate":1.0
},
"cloud_logging":{
"client_rpc_events":[
{
"methods":[
"helloworld.Greeter/*"
]
}
],
"server_rpc_events":[
{
"methods":[
"helloworld.Greeter/*"
]
}
]
}
}
הערכת נפח היומן
בקטע הזה מופיע מידע שיעזור לכם להעריך את נפח הנתונים שייכנסו ליומן. אתם יכולים לבצע הערכה לפני שאתם נרשמים לאירועי RPC של השירותים שלכם.
| פריט | פרטים |
|---|---|
| אירועים שנוצרו עבור קריאה יחידה (unary) תקינה | 6 אירועים קריאת RPC חד-פעמית עם סטטוס OK יוצרת את 6 האירועים הבאים עבור הלקוח או השרת:
|
| גודל ממוצע של רשומה ביומן | 500 בייט כברירת מחדל רשומה ביומן משויכת לאירוע RPC אחד. אירוע ה-RPC כולל את מידע על תוצאות ניפוי הבאגים המפורט של האירוע, תוויות של משאבים ותוויות מותאמות אישית. |
| גודל רישום המטען הייעודי | 0 כברירת מחדל, אפשר להגדיר אפשר להגדיר את הגודל המקסימלי של מטען ייעודי (payload) בהגדרות של יכולת התצפית. כברירת מחדל, לא מתבצעת רישום ביומן של מטען ייעודי (Payload). |
| גודל תוויות מותאמות אישית | 0 כברירת מחדל, אפשר להגדיר תוויות מותאמות אישית מסופקות לאפליקציה באמצעות משתני סביבה. אם לא מציינים תוויות, לא יהיו תוויות מותאמות אישית |
נוסחת האומדן של הגודל הכולל של יומן ההעברה בחודש:
Monthly Log Ingestion = QPS * 6 * (500B + Payload Logging Size + Custom Labels Size) * 2592000
לדוגמה, אם QPS של שיטת קריאה יחידה הוא 1 ולא מופעלות תכונות נוספות, הגודל המשוער של הטמעת היומן הוא בערך 7.24 GiB.
המאמרים הבאים
- מידע מפורט על נתוני הגדרה, הגדרות מעקב, הגדרות מדדים והגדרות יומנים זמין במאמר הפניה למידע על יכולת צפייה במיקרו-שירותים.