שימוש בשדרוג OpenTelemetry ללא קוד לעומסי עבודה של Java ב-GKE

במאמר הזה נדגים איך להשתמש ב-OpenTelemetry zero-code instrumentation כדי להגדיר אוטומטית אפליקציות Java שפועלות ב-Google Kubernetes Engine ‏ (GKE). הוספת כלי מעקב ללא קוד מאפשרת לכם לקבל תובנות מקיפות לגבי עומסי העבודה של Java, עם מינימום מאמץ ידני.

במדריך הזה מפורטים השלבים לפריסת אפליקציית Java לדוגמה ב-GKE, להוספת מכשור אוטומטי לאפליקציה באמצעות OpenTelemetry ולהצגת אותות הטלמטריה שנוצרו באמצעות Google Cloud Observability.

ההדרכה מתארת את ההגדרה האוטומטית של עומסי עבודה ב-Java שפועלים ב-GKE, אבל אפשר להרחיב את ההוראות האלה לשפות נתמכות אחרות.

למה כדאי להשתמש בהטמעה ללא קוד?

הוספת יכולות מעקב בלי קוד (נקראת גם הוספת יכולות מעקב אוטומטית) ב-OpenTelemetry היא כלי רב עוצמה שמאפשר למפתחי אפליקציות להוסיף לקוד שלהם יכולות תצפית שניתנות להגדרה, בלי צורך לכתוב קוד נוסף או לשנות קוד קיים. הוספת אינסטרומנטציה ללא קוד מתבצעת באופן אוטומטי לספריות של אפליקציות שמוטמעות באופן פעיל. כך מתקבלות תובנות מהימנות לגבי ביצועי האפליקציה באמצעות פליטה של Golden Signals. לכן, הטמעה ללא קוד היא נקודת התחלה מצוינת למסע של האפליקציה אל יכולת הצפייה.

הוספת כלי מעקב ב-Java ללא כתיבת קוד יוצרת מדדים וטווחים של מעקב על ידי הוספת כלי מעקב לספריות פופולריות שנמצאות בשימוש נרחב במערכת האקולוגית של השפה. ב-Java, המדדים כוללים:

קבוצת המדדים שמוצגת תלויה באפליקציה שמוגדרת ובספריות שבהן האפליקציה משתמשת. רשימה מלאה של הספריות והמסגרות שאפשר להשתמש בהן עם סוכן Java zero-code instrumentation זמינה במאמר ספריות ומסגרות נתמכות.

בעזרת הגדרת מעקב אוטומטית, אתם יכולים:

  • קבלת מעקב אחר אותות הזהב בלי לבצע שינויים בקוד.
  • התאמה בין חביון גבוה של p99.9 לבין עקבות של משתמשים ספציפיים, שכוללים כל קריאת RPC.
  • קבלת טלמטריה עקבית במדדים, ביומנים ובמעקבים ממגוון רחב של ספריות ו-frameworks פופולריים.

מידע נוסף על שדרוג המידע ממעקבים ללא קוד זמין במאמר בנושא Zero-code ב-OpenTelemetry.

סקירה כללית

כדי להוסיף יכולות ניטור לעומס עבודה של Java שפועל ב-GKE, צריך לפרוס את הרכיבים הבאים:

  • שדרוג המידע ממעקבים ללא קוד באמצעות OpenTelemetry, שיוצר את נתוני הטלמטריה מהאפליקציה.
  • ‫OpenTelemetry Collector אוסף את נתוני הטלמטריה שנוצרו על ידי האפליקציה, מוסיף להם מטא-נתונים והקשר חשובים ומנתב אותם אל Google Cloud לצורך צריכה.

במדריך הזה נסביר איך פורסים אפליקציית Java עם מכשור ב-GKE, שמפיקה מדדים ועקבות ל- Google Cloud. לאחר מכן תוכלו לראות את אותות הטלמטריה האלה באמצעות מוצרי הניטור של Google Cloud, כמו Metrics Explorer, ‏ Logs Explorer ו-Trace Explorer. מידע על הצגה ושימוש בטלמטריה שנוצרה זמין במאמר הצגת הטלמטריה.

במדריך הזה נעשה שימוש בשירותים הבאים שניתנים בתשלום כדי לכתוב אותות:

  • השירות המנוהל של Cloud Monitoring ל-Prometheus
  • Cloud Logging
  • Cloud Trace
  • Google Kubernetes Engine
  • Cloud Build
  • Artifact Registry

כדי ליצור הערכת עלויות על סמך השימוש החזוי, אתם יכולים להשתמש במחשבון התמחור.

לפני שמתחילים

בקטע הזה מוסבר איך להגדיר את הסביבה לפריסה של האפליקציה, להטמעה של כלי מעקב בה ולביצוע שלה.

בוחרים או יוצרים Google Cloud פרויקט

בוחרים פרויקט Google Cloud למדריך הזה. אם עדיין אין לכם Google Cloud פרויקט, אתם יכולים ליצור אחד:

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

התקנה של כלי שורת הפקודה

במסמך הזה אנחנו משתמשים בכלי שורת הפקודה הבאים:

  • gcloud
  • kubectl

הכלים gcloud ו-kubectl הם חלק מ-Google Cloud CLI. מידע על התקנת הרכיבים מופיע במאמר ניהול רכיבי Google Cloud CLI. כדי לראות את הרכיבים של ה-CLI של gcloud שהתקנתם, מריצים את הפקודה הבאה:

gcloud components list

הגדרה של משתני סביבה

כדי לצמצם את ההקלדה של ערכים שמופיעים לעיתים קרובות, למנוע שגיאות הקלדה ולאפשר הפעלה של הפקודות במסמך הזה, צריך להגדיר את משתני הסביבה הבאים:

export GOOGLE_CLOUD_PROJECT=PROJECT_ID
export CLUSTER_NAME=CLUSTER_NAME
export CLUSTER_REGION=us-east1
export ARTIFACT_REGISTRY=opentelemetry-autoinstrument-registry
export REGISTRY_LOCATION=us-east4

לפני שמריצים את הפקודות, מחליפים את המשתנים הבאים או משתמשים בערכי ברירת המחדל:

  • PROJECT_ID: מזהה הפרויקט.
  • CLUSTER_NAME: השם של האשכול. יכול להיות שמדובר באשכול חדש או באשכול קיים.
  • us-east1: האזור של האשכול. אם אתם משתמשים באשכול קיים, צריך להשתמש באזור של האשכול הזה.
  • opentelemetry-autoinstrument-registry: השם של מאגר Artifact Registry. יכול להיות שמדובר במאגר חדש או במאגר קיים.
  • us-east4: האזור של מאגר Artifact Registry. אם אתם משתמשים במאגר קיים, צריך להשתמש באזור של המאגר הזה.

אם נתקלתם בשגיאות כשניסיתם להריץ את הפקודות שמופיעות במסמך הזה, בדקו שהמשתנים האלה מוגדרים בצורה נכונה בסביבת הטרמינל.

הפעלת ממשקי ה-API

כדי להשתמש בשירותים שמופיעים במסמך הזה, צריך להפעיל את ממשקי ה-API הבאים בפרויקט Google Cloud :

  • ‫Artifact Registry API‏: artifactregistry.googleapis.com
  • Cloud Build API: cloudbuild.googleapis.com
  • ‫Google Kubernetes Engine: ‏ container.googleapis.com
  • ‫Identity and Access Management API‏: iam.googleapis.com
  • Cloud Logging API: logging.googleapis.com
  • Cloud Monitoring API: monitoring.googleapis.com
  • Telemetry API: telemetry.googleapis.com

יכול להיות שממשקי ה-API האלה, למעט Telemetry API, כבר מופעלים בפרויקט שלכם ב- Google Cloud . מריצים את הפקודה הבאה כדי להציג את רשימת ממשקי ה-API המופעלים:

gcloud services list

מפעילים את כל ממשקי ה-API שלא מופעלים. כדאי לשים לב במיוחד ל-Telemetry API, telemetry.googleapis.comיכול להיות שזו הפעם הראשונה שאתם נתקלים ב-API הזה.

כדי להפעיל ממשקי API שלא הופעלו עדיין, מריצים את הפקודות של ממשקי ה-API המתאימים:

gcloud services enable artifactregistry.googleapis.com
gcloud services enable cloudbuild.googleapis.com
gcloud services enable container.googleapis.com
gcloud services enable iam.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com
gcloud services enable telemetry.googleapis.com

קבלת הרשאות

  1. כדי לקבל את ההרשאות שדרושות להרצת האפליקציה ולכתיבת נתוני יומן, מדדים ומעקב, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

    ההרשאות האלה מספיקות אם מריצים את הדוגמה ב-Cloud Shell, במשאבים או בסביבת פיתוח מקומית. Google Cloud במאמר הגדרת פרויקט לצורכי מכסה מוסבר איך מגדירים פרויקט לצורכי מכסה.

  2. כדי לקבל את ההרשאות שדרושות להצגת נתוני יומן, מדדים ומעקב, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

הגדרת האשכול

מגדירים אשכול GKE לאפליקציה ולמאסף לדוגמה:

  1. מריצים את הפקודות הבאות כדי להיכנס אל Google Cloud :

    gcloud auth login
    gcloud config set project PROJECT_ID
    
  2. אם עדיין אין לכם אשכול GKE, אתם יכולים ליצור אשכול Autopilot על ידי הרצת הפקודה הבאה:

    gcloud container clusters create-auto --region us-east1 CLUSTER_NAME --project PROJECT_ID
    
  3. כדי ליצור אינטראקציה עם האשכול, מריצים את הפקודה הבאה כדי לחבר את כלי השירות המקומי kubectl:

    gcloud container clusters get-credentials CLUSTER_NAME --region us-east1 --project PROJECT_ID
    

פריסת אפליקציית Java

בשלבים שבקטע הזה נסביר איך לפרוס באשכול שלכם אפליקציית Java לדוגמה ללא מכשור, דוגמה למכשור OpenTelemetry Spring Boot. בקטע הזה נשתמש ב-Cloud Build וב-Artifact Registry כדי ליצור ולאחסן את קובץ האימג' של האפליקציה.

  1. אם עדיין אין לכם מאגר ב-Artifact Registry, יוצרים מאגר על ידי הפעלת הפקודה הבאה:

    gcloud artifacts repositories create opentelemetry-autoinstrument-registry --repository-format=docker --location=us-east4 --description="GKE Autoinstrumentation sample app"
    
  2. משכפלים את האפליקציה לדוגמה באמצעות הפקודה הבאה:

    git clone https://github.com/GoogleCloudPlatform/opentelemetry-operations-java.git
    
  3. מגדירים את משתני הסביבה הבאים:

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
    export ARTIFACT_REGISTRY=opentelemetry-autoinstrument-registry
    export REGISTRY_LOCATION=us-east4
    
  4. מריצים את הפקודות הבאות כדי ליצור את קובץ האימג' של האפליקציה ולהעביר אותו בדחיפה למאגר שלכם ב-Artifact Registry:

    pushd opentelemetry-operations-java/examples/instrumentation-quickstart && \
    gcloud builds submit --config <(envsubst < cloudbuild-uninstrumented-app.yaml) . && \
    popd
    
  5. יוצרים קובץ תצורת פריסה של Kubernetes לאפליקציה. מעתיקים את ההגדרה הבאה ושומרים אותה בקובץ בשם deployment.yaml:

    apiVersion: v1
    kind: Service
    metadata:
      name: quickstart-app
      labels:
        app: quickstart-app
        app.kubernetes.io/part-of: gke-autoinstrument-guide
    spec:
      ports:
        - port: 8080
          targetPort: 8080
          name: quickstart-app
      selector:
        app: quickstart-app
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: quickstart-app
      labels:
        app: quickstart-app
        app.kubernetes.io/part-of: gke-autoinstrument-guide
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: quickstart-app
      template:
        metadata:
          labels:
            app: quickstart-app
        spec:
          containers:
            - name: quickstart-app
              image: us-east4-docker.pkg.dev/PROJECT_ID/opentelemetry-autoinstrument-registry/java-quickstart:latest
              ports:
                - containerPort: 8080
                  name: quickstart-app
    
  6. כדי ליצור מרחב שמות לאפליקציה, מריצים את הפקודה הבאה:

    kubectl create namespace APPLICATION_NAMESPACE
    
  7. מריצים את הפקודה הבאה כדי להחיל את הגדרות הפריסה על האשכול:

    kubectl apply -f deployment.yaml -n APPLICATION_NAMESPACE
    
  8. אחרי שיוצרים את הפריסה, יכול להיות שיעבור זמן מה עד שה-pods ייווצרו ויתחילו לפעול. כדי לבדוק את הסטטוס של הפודים, מריצים את הפקודה הבאה:

    kubectl get po -n APPLICATION_NAMESPACE -w
    

    כדי להפסיק את הצפייה בסטטוס של ה-Pod, מקישים על Ctrl+C כדי להפסיק את הפקודה.

הגדרת מופע של OpenTelemetry Collector

בקטע הזה יוצרים פריסה נוספת שמריצה מופע של Google-Built OpenTelemetry Collector באשכול GKE. המאסף מוגדר לייצא נתונים באמצעות כלי הייצוא הבאים:

במקום לבצע את השלבים הידניים שמתוארים במסמך הזה כדי לפרוס את OpenTelemetry Collector, אפשר לפעול לפי ההוראות במאמר Managed OpenTelemetry for GKE, שבו נעשה שימוש ב-Google-Built OpenTelemetry Collector בסביבה מנוהלת.

  1. כדי לתת הרשאה לחשבון השירות של Kubernetes לפריסה של OpenTelemetry Collector, מריצים את הפקודות הבאות:

    export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    
    gcloud projects add-iam-policy-binding projects/PROJECT_ID \
      --role=roles/logging.logWriter \
      --member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
      --condition=None
    
    gcloud projects add-iam-policy-binding projects/PROJECT_ID \
      --role=roles/monitoring.metricWriter \
      --member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
      --condition=None
    
    gcloud projects add-iam-policy-binding projects/PROJECT_ID \
      --role=roles/telemetry.tracesWriter \
      --member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
      --condition=None
    
  2. כדי לפרוס את מופע OpenTelemetry Collector מבית Google באשכול GKE עם הגדרת ברירת המחדל המומלצת, מריצים את הפקודה הבאה:

    kubectl kustomize https://github.com/GoogleCloudPlatform/otlp-k8s-ingest//k8s/base?ref=otlpmetric | envsubst | kubectl apply -f -
    

    ההגדרה הזו פורסת את כלי האיסוף במרחב השמות opentelemetry.

  3. אחרי שיוצרים את הפריסה, יכול להיות שיעבור זמן מה עד שה-pods ייווצרו ויתחילו לפעול. כדי לבדוק את הסטטוס של הפודים, מריצים את הפקודה הבאה:

    kubectl get po -n opentelemetry -w
    

    כדי להפסיק את הצפייה בסטטוס של ה-Pod, מקישים על Ctrl+C כדי להפסיק את הפקודה.

הגדרת שדרוג מידע ממעקבים ללא קוד באמצעות OpenTelemetry

כדי להגדיר מכשור OpenTelemetry ללא קוד לאפליקציה שנפרסה ב-GKE, צריך להתקין את OpenTelemetry Operator באשכול GKE. ה-OpenTelemetry Operator מספק גישה ל-Kubernetes Custom Resource Definition ‏ (CRD), שהוא משאב ה-Instrumentation, שמשמש להחדרת Instrumentation אוטומטית למשאבי Kubernetes שפועלים באשכול.

משאב המדידה מוחדר או מוחל על עומסי עבודה ספציפיים באמצעות הערות מיוחדות. ה-OpenTelemetry Operator עוקב אחרי ההערות האלה במשאבים שפועלים באשכול, ומזריק את האינסטרומנטציה המתאימה לאפליקציות שמנוהלות על ידי המשאבים האלה.

  1. אם לא התקנתם עדיין את Helm CLI, מריצים את הפקודות הבאות כדי להתקין את Helm:

    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
    
    chmod 700 get_helm.sh
    
    ./get_helm.sh                         
    
  2. אם cert-manager עדיין לא מותקן באשכול, מריצים את הפקודות הבאות כדי להתקין אותו:

    helm repo add jetstack https://charts.jetstack.io
    
    helm repo update
    
    helm install \
    --create-namespace \
    --namespace cert-manager \
    --set installCRDs=true \
    --set global.leaderElection.namespace=cert-manager \
    --set extraArgs={--issuer-ambient-credentials=true} \
    cert-manager jetstack/cert-manager
    
  3. כדי להתקין את OpenTelemetry Operator, מריצים את הפקודה הבאה ומשתמשים בגרסה 0.140.0 או בגרסה חדשה יותר:

    kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/download/v0.140.0/opentelemetry-operator.yaml
    
  4. יוצרים קובץ תצורה עבור משאב מותאם אישית של Instrumentation על ידי יצירת קובץ בשם instrumentation.yaml עם התוכן הבא:

    apiVersion: opentelemetry.io/v1alpha1
    kind: Instrumentation
    metadata:
      name: sample-java-auto-instrumentation
    spec:
      exporter:
        endpoint: http://opentelemetry-collector.opentelemetry.svc.cluster.local:4317
      sampler:
        type: parentbased_traceidratio
        # Adjust the sampling rate to control cost
        argument: "0.01"
    
      java:
        env:
          - name: OTEL_EXPORTER_OTLP_PROTOCOL
            value: grpc
          - name: OTEL_LOGS_EXPORTER
            value: none
    
  5. יוצרים מרחב שמות לאופרטור. אפשר להשתמש באותו ערך שבו השתמשתם למרחב השמות של האפליקציה, APPLICATION_NAMESPACE.

    kubectl create namespace INSTRUMENTATION_NAMESPACE
    
  6. כדי ליצור את המשאב המותאם אישית של Instrumentation באשכול ולהחיל את הקובץ instrumentation.yaml, מריצים את הפקודה הבאה:

    kubectl apply -f instrumentation.yaml -n INSTRUMENTATION_NAMESPACE
    
  7. מחילים את הערת התיעוד של ההגדרה האוטומטית על אפליקציית Java לדוגמה שנפרסה קודם. מריצים את הפקודה הבאה כדי להוסיף את ההערה לפריסה המקורית:

    kubectl patch deployment.apps/quickstart-app -n APPLICATION_NAMESPACE -p '{"spec":{"template":{"metadata":{"annotations":{"instrumentation.opentelemetry.io/inject-java": "'"INSTRUMENTATION_NAMESPACE"'/sample-java-auto-instrumentation"}}}}}'
    
  8. אחרי שמתקינים את התיקון בפריסה, מה שגורם להפעלה מחדש של פריסת האפליקציה, אפשר לבדוק את הסטטוס של הפודים באפליקציה באמצעות הפקודה הבאה:

    kubectl get po -n APPLICATION_NAMESPACE -w
    

    כדי להפסיק את הצפייה בסטטוס של ה-Pod, מקישים על Ctrl+C כדי להפסיק את הפקודה.

אפליקציית Java שנפרסה באשכול GKE עוברת עכשיו instrumentation אוטומטית.

יצירת נתוני טלמטריה מהאפליקציה שנפרסה

כדי ליצור טלמטריה מהאפליקציה שנוספו לה כלי מדידה אוטומטית, צריך לשלוח בקשות לאפליקציה כדי לדמות פעילות משתמש. אתם יכולים להריץ סימולטור תנועה כדי ליצור זרם קבוע של תנועה. בקטע הזה מוסבר איך להוריד את הסימולטור, ליצור אותו באמצעות Cloud Build, לאחסן את קובץ האימג' ב-Artifact Registry ולפרוס את הסימולטור:

  1. מורידים את אפליקציית סימולטור התנועה על ידי הרצת הפקודות הבאות:

    mkdir traffic-simulator && pushd traffic-simulator && \
    curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/opentelemetry-operator-sample/refs/heads/main/recipes/self-managed-otlp-ingest/traffic/hey.Dockerfile  && \
    curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/opentelemetry-operator-sample/refs/heads/main/recipes/self-managed-otlp-ingest/traffic/cloudbuild-hey.yaml && \
    popd
    

    הפקודות הקודמות מבצעות את הפעולות הבאות:

    1. יוצרים ספרייה נפרדת לבניית אפליקציה לסימולציה של תנועה.
    2. מורידים את קובץ ה-Dockerfile של האפליקציה.
    3. מורידים את תצורת ה-build של Cloud Build כדי ליצור את קובץ האימג' של האפליקציה.
  2. כדי ליצור את קובץ האימג' של האפליקציה באמצעות Cloud Build ולהעביר אותו בדחיפה ל-Artifact Registry, מריצים את הפקודות הבאות:

    pushd traffic-simulator && \
    gcloud builds submit --config <(envsubst < cloudbuild-hey.yaml) . && \
    popd
    
  3. כדי ליצור קובץ הגדרות פריסה לסימולטור, מעתיקים את התוכן הבא לקובץ בתיקייה traffic-simulator בשם quickstart-traffic.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: traffic-simulator
      labels:
        app.kubernetes.io/part-of: gke-autoinstrument-guide
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: traffic-simulator
      template:
        metadata:
          labels:
            app: traffic-simulator
        spec:
          containers:
            - name: traffic-simulator
              image: us-east4-docker.pkg.dev/PROJECT_ID/opentelemetry-autoinstrument-registry/hey:latest
              args:
              - -c=2
              - -q=1
              - -z=1h
              - http://quickstart-app:8080/multi
    
  4. מריצים את הפקודות הבאות כדי לפרוס את סימולטור התנועה:

    pushd traffic-simulator && \
    kubectl apply -f quickstart-traffic.yaml -n APPLICATION_NAMESPACE && \
    popd
    
  5. אחרי שיוצרים את הפריסה, יכול להיות שיעבור זמן מה עד שה-pods ייווצרו ויתחילו לפעול. כדי לבדוק את הסטטוס של הפודים, מריצים את הפקודה הבאה:

    kubectl get po -n APPLICATION_NAMESPACE -w
    

    כדי להפסיק את הצפייה בסטטוס של ה-Pod, מקישים על Ctrl+C כדי להפסיק את הפקודה.

צפייה בנתוני הטלמטריה

אחרי שהסימולטור של התנועה מתחיל לשלוח בקשות לאפליקציה, אפליקציית Java שנפרסה יוצרת טלמטריה. יכול להיות שיעברו כמה דקות עד שהמדדים והמעקבים יתחילו להופיע ב- Google Cloud.

  • האינסטרומנטציה שמוזרקת על ידי OpenTelemetry Operator מסתמכת על OpenTelemetry Java Agent. הסוכן OpenTelemetry Java Agent מכיל מכשור מובנה עבור הרבה ספריות ומסגרות Java פופולריות שפולטות מדדים.

  • הוספת המכשירים גם מאפשרת ללכוד באופן אוטומטי עקבות של כל הקריאות שמתבצעות לכל נקודת קצה שנחשפת על ידי האפליקציה לדוגמה. סימולטור התנועה שולח בקשות לנקודת הקצה /multi שנחשפת על ידי אפליקציית Java בקצב קבוע. נקודת הקצה /multi שולחת בקשות לנקודת הקצה /single כדי ליצור את התשובה הסופית. האינטראקציות האלה מופיעות כעקבות שאפשר לראות באמצעות הכלי Trace Explorer.

הצגת המדדים

אפשר לראות את המדדים שנוספו אוטומטית בכלי Metrics Explorer של Cloud Monitoring. הקטע הזה כולל שאילתות לדוגמה שנכתבו ב-PromQL.

נכנסים לדף  Metrics explorer במסוף Google Cloud :

כניסה אל Metrics Explorer

אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.

הנה כמה דוגמאות למדדים שאפשר לראות באפליקציה לדוגמה:

  • מדדי זמן ריצה של JVM: OpenTelemetry Java Agent פולט מדדים לגבי ה-JVM הבסיסי. המדדים האלה חושפים מידע על זיכרון JVM, מנגנון איסוף, מחלקות, שרשורים ומושגים קשורים אחרים. רשימה מלאה של מדדי JVM נתמכים זמינה בדף מוסכמות סמנטיות של מדדי זמן ריצה של JVM.

    • שימוש בזיכרון של JVM: מדביקים את שאילתת PromQL הבאה ב-Metrics Explorer:

      sum(avg_over_time({"process.runtime.jvm.memory.usage"}[${__interval}]))
      
    • ניצול CPU של JVM: מדביקים את שאילתת PromQL הבאה ב-Metrics Explorer:

      sum(avg_over_time({"process.runtime.jvm.cpu.utilization"}[${__interval}]))
      

      בתרשים הבא מוצג מדד השימוש במעבד של JVM:

      תרשים שמציג את ניצול המעבד של JVM, שנאסף על ידי OpenTelemetry zero-code instrumentation.

  • מדדים של Spring Boot: אפליקציית הדוגמה מבוססת על Spring Boot framework, שנתמך גם על ידי OpenTelemetry zero-code instrumentation ל-Java.

    • משך הזמן הממוצע של לקוח HTTP: מדביקים את שאילתת PromQL הבאה ב-Metrics Explorer:

      sum(rate({"http.client.duration_sum"}[${__interval}])) by (cluster, job) / sum(rate({"http.client.duration_count"}[${__interval}])) by (cluster, job)
      
    • משך הזמן הממוצע של שרת HTTP: מדביקים את שאילתת PromQL הבאה ב-Metrics Explorer:

      sum(rate({"http.server.duration_sum"}[${__interval}])) by (cluster, job) / sum(rate({"http.server.duration_count"}[${__interval}])) by (cluster, job)
      

      בתרשים הבא מוצג מדד משך הזמן הממוצע של שרת ה-HTTP ב-Spring Boot:

      תרשים שמציג את משך הזמן הממוצע של שרת HTTP שנמדד על ידי OpenTelemetry zero-code instrumentation.

מידע נוסף על השימוש ב-Metrics Explorer מופיע במאמר איך בוחרים מדדים כשמשתמשים ב-Metrics Explorer.

צפייה בפרטי ההעברה

אפשר לראות את העקבות שנוצרו אוטומטית בכלי Trace Explorer של Cloud Trace. אפשר לסנן את העקבות האלה בכלי Trace Explorer על ידי סינון לפי Service Name (שם השירות) והגדרת שם השירות ל-quickstart-app.

נכנסים לדף Trace explorer במסוף Google Cloud :

כניסה אל Trace explorer

אפשר גם להשתמש בסרגל החיפוש כדי למצוא את הדף הזה.

בצילום המסך הבא מוצגים עקבות שנוצרו על ידי פריסת OpenTelemetry quickstart-app:

ב-Trace Explorer מוצגים מעקבים שנאספו באמצעות OpenTelemetry zero-code instrumentation.

מידע נוסף על השימוש ב-Trace Explorer זמין במאמר חיפוש עקבות ובדיקתם.

הסרת המשאבים

אם יצרתם פרויקט חדש Google Cloud וכבר אין לכם צורך בו, תוכלו למחוק אותו באמצעות הפקודה הבאה:

gcloud projects delete PROJECT_ID

אם השתמשתם בפרויקט קיים, תוכלו למחוק את המשאבים שיצרתם במסגרת המדריך הזה כדי לחסוך בעלויות:

  • מריצים את הפקודה הבאה כדי למחוק את אשכול GKE:

    gcloud container clusters delete CLUSTER_NAME --location=us-east1
    
  • כדי למחוק את מאגר Artifact Registry, מריצים את הפקודה הבאה:

    gcloud artifacts repositories delete opentelemetry-autoinstrument-registry --location=us-east4