במאמר הזה מוסבר איך להגדיר את הפלאגין Microservices observability, איך להוסיף מכשור לאפליקציות gRPC ואיך לקבל מידע מ-Cloud Monitoring, מ-Cloud Logging ומ-Cloud Trace.
לפני שמתחילים
התכונה 'יכולת צפייה במיקרו-שירותים' פועלת בכל פריסה שקיבלה הרשאה לגשת אל Cloud Monitoring, Cloud Logging ו-Cloud Trace באמצעות הפעלת Microservices API. במדריך הזה מוצגת דוגמה להגדרה של יכולת צפייה במיקרו-שירותים באמצעות דוגמה של Compute Engine.
באופן כללי, השלבים הם:
- מפתחי שירותים יכולים להפעיל את התוסף Microservices observability ולשלוט בו.
- מפעיל השירות יכול להשתמש בנתונים שנאספו בדרכים שונות.
מאגרי gRPC (C++, Go ו-Java) כוללים דוגמאות להדגמה של יכולת התבוננות במיקרו-שירותים.
לפני שמגדירים את יכולת התצפית, צריך לבצע את המשימות הבאות:
- קראו את סקירה כללית על יכולת התצפית על מיקרו-שירותים.
- מוודאים שיש לכם פרויקט קיים או יוצרים פרויקט חדש.
- מוודאים שיש לכם חשבון שירות קיים או יוצרים חשבון חדש.
- קוראים על שני משתני הסביבה הנתמכים, מחליטים באיזה מהם להשתמש ומגדירים את הערכים הנדרשים למשתנה הסביבה.
- מפעילים את Microservices API.
בחירת משתנה סביבה להגדרה
כשמצטרפים לפלאגין Microservices observability (יכולת צפייה במיקרו-שירותים), שמתואר במאמר Instrument your applications for the observability plugin (הטמעה של פלאגין 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 Google Cloud או במסוף Google Cloud כדי להפעיל את Microservices API בפרויקטים. הפעלת Microservice 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 observabillity, פועלים לפי ההוראות הבאות ל-C++, ל-Java ול-Go.
C++
אפשר להשתמש ב-C++ עם יכולת מעקב אחר מיקרו-שירותים החל מ-gRPC C++ v1.54. מאגר הדוגמאות נמצא ב-GitHub.
שינויים בבנייה
התמיכה ב-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 האובייקט הנלווה שולט במשך הזמן שבו אפשר לצפות בנתונים, והוא נסגר אוטומטית ומנקה את נתוני התצפית כשהוא יוצא מההקשר.
Go
יש תמיכה בתוספים של מיקרו-שירותים לניטור בגרסאות gRPC Go v1.54.0
ואילך.
מאגר הדוגמאות נמצא ב-GitHub.
כדי להפעיל את התכונה 'יכולת צפייה במיקרו-שירותים' באמצעות מודול Go, צריך מודול observability וקוד כמו זה:
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
כדי להשתמש ב-Microservices 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-resources באופן הבא:
...
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 לבנייה, צריך לכלול את הקוד הבא:
<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
מוודאים ש-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.
הצגת מדדים במרכז הבקרה
ניראות (observability) של מיקרו-שירותים מספקת לוח בקרה של ניטור בשם Microservices (gRPC) Monitoring למדדים שמוגדרים בהגדרות המדדים. לוח הבקרה מוצג במסוף רק אם מופעל 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.
בדיקת רשומות ביומן ב-Logs 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 (unary או streaming). בדוגמה הבאה מוצגת רשומה ביומן:
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.
המאמרים הבאים
- מידע מפורט על נתוני הגדרה, הגדרות מעקב, הגדרות מדדים והגדרות יומנים זמין במאמר הפניה למידע על יכולת הצפייה במיקרו-שירותים.