השירות המנוהל ל-Prometheus sidecar ל-Cloud Run הוא הדרך המומלצת על ידי Google לקבל מעקב בסגנון Prometheus לשירותי Cloud Run. אם שירות Cloud Run כותב מדדי OTLP, אפשר להשתמש ב-OpenTelemetry sidecar. אבל בשביל שירותים שכותבים מדדים של Prometheus, צריך להשתמש ב-sidecar של השירות המנוהל ל-Prometheus שמתואר במסמך הזה.
מסמך זה מתאר כיצד לבצע את הפעולות הבאות:
- הוסף את שירות הצד של Prometheus לניהול שירותים מנוהלים לשירות Cloud Run קיים.
- פיתוח אפליקציה לדוגמה באמצעות קובץ העזר. באפשרותך להשתמש באפליקציית הדוגמה כדי לראות כיצד פועלת תוכנת העזר אם אין לך שירות Cloud Run קיים.
ה-sidecar משתמש בשירות המנוהל של Google Cloud ל-Prometheus בצד השרת, ובהפצה של OpenTelemetry Collector, שנוצרה בהתאמה אישית לעומסי עבודה ללא שרת, בצד הלקוח. הפצה מותאמת אישית זו כוללת מספר שינויים לתמיכה ב-Cloud Run. הכלי לאיסוף נתונים מבצע גירוד של נתוני הפעלה אחרי 10 שניות, וגירוד של נתוני סגירה, לא משנה כמה קצר משך החיים של המופע. כדי להבטיח את המהימנות המקסימלית, מומלץ להשתמש בהגדרת החיוב לפי מופע גם בשירותי Cloud Run שמריצים את ה-sidecar. מידע נוסף זמין במאמר הגדרות חיוב (שירותים). יכול להיות שחלק מהניסיונות לגירוד נתונים ייכשלו אם הקצאת המעבד (CPU) מוגבלת בגלל מספר נמוך של שאילתות לשנייה (QPS). מעבד שהוקצה תמיד נשאר זמין.
ה-sidecar מסתמך על התכונה של Cloud Run multi-container (sidecar) כדי להפעיל את האוסף כקונטיינר sidecar לצד קונטיינר עומס העבודה. מידע נוסף על קונטיינרים מסוג sidecar ב-Cloud Run זמין במאמר פריסת כמה קונטיינרים בשירות (קונטיינרים מסוג sidecar).
השירות המנוהל ל-Prometheus sidecar ל-Cloud Run מציג הגדרה חדשה, RunMonitoring, שהיא קבוצת משנה של המשאב המותאם אישית PodMonitoring של Kubernetes. רוב המשתמשים יכולים להשתמש בתצורת ברירת המחדל של RunMonitoring, אך ניתן גם ליצור תצורות מותאמות אישית. מידע נוסף על הגדרות ברירת המחדל וההגדרות המותאמות אישית של RunMonitoring זמין במאמר הוספת ה-sidecar לשירות Cloud Run.
לפני שמתחילים
בקטע הזה מתואר תהליך ההגדרה שנדרש כדי להשתמש במסמך הזה.
התקנה והגדרה של ה-CLI של gcloud
רבים מהשלבים המתוארים במסמך זה משתמשים בממשק שורת פקודה (CLI) של גוגל קלאוד. מידע על התקנת ה-CLI של gcloud מופיע במאמר ניהול רכיבי Google Cloud CLI.
כשמפעילים פקודות של gcloud, צריך לציין את המזהה של פרויקט Google Cloud . אפשר להגדיר פרויקט ברירת מחדל ל-Google Cloud CLI, וכך לא צריך להזין אותו בכל פקודה.
כדי להגדיר את הפרויקט שלך כברירת מחדל, הזן את הפקודה הבאה:
gcloud config set project PROJECT_ID
ניתן גם להגדיר אזור ברירת מחדל עבור שירות Cloud Run שלך. כדי להגדיר אזור ברירת מחדל, מזינים את הפקודה הבאה:
gcloud config set run/region REGION
הפעלת ממשקי ה-API
צריך להפעיל את ממשקי ה-API הבאים בפרויקט ב- Google Cloud :
- Cloud Run Admin API:
run.googleapis.com - Artifact Registry API:
artifactregistry.googleapis.com - Cloud Monitoring API:
monitoring.googleapis.com - Cloud Logging API:
logging.googleapis.com - (אופציונלי) אם יוצרים config
RunMonitoringבהתאמה אישית, צריך להפעיל את Secret Manager API:secretmanager.googleapis.com - (אופציונלי) אם בוחרים להריץ את אפליקציית הדוגמה באמצעות Cloud Build, צריך להפעיל גם את ממשקי ה-API הבאים:
- Cloud Build API:
cloudbuild.googleapis.com. - Identity and Access Management API:
iam.googleapis.com. מידע נוסף זמין במאמר בנושא הרצה של אפליקציית הדוגמה.
- Cloud Build API:
כדי לראות את ממשקי ה-API שמופעלים בפרויקט, מריצים את הפקודה הבאה:
gcloud services list
כדי להפעיל API שלא מופעל, מריצים אחת מהפקודות הבאות:
gcloud services enable run.googleapis.com gcloud services enable artifactregistry.googleapis.com gcloud services enable secretmanager.googleapis.com gcloud services enable monitoring.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable cloudbuild.googleapis.com gcloud services enable iam.googleapis.com
חשבון שירות ל-Cloud Run
כברירת מחדל, שירותים ועבודות ב-Cloud Run משתמשים בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, PROJECT_NUMBER-compute@developer.gserviceaccount.com.
בדרך כלל לחשבון השירות הזה יש את התפקידים הנדרשים לניהול זהויות והרשאות גישה (IAM) כדי לכתוב את המדדים והיומנים שמתוארים במסמך הזה:
roles/monitoring.metricWriterroles/logging.logWriter
אם יוצרים הגדרות RunMonitoring בהתאמה אישית, צריך להקצות לחשבון השירות גם את התפקידים הבאים:
roles/secretmanager.adminroles/secretmanager.secretAccessor
אפשר גם להגדיר חשבון שירות שמנוהל על ידי משתמש בשביל Cloud Run. גם לחשבון שירות שמנוהל על ידי משתמש צריכים להיות התפקידים האלה. למידע נוסף על חשבונות שירות עבור Cloud Run, ראו הגדרת זהות שירות.
הגדרת קובץ העזר והוספתו לשירות Cloud Run
השירות המנוהל ל-Prometheus sidecar ל-Cloud Run מציג הגדרה חדשה, RunMonitoring, שהיא קבוצת משנה של המשאב המותאם אישית PodMonitoring של Kubernetes. תצורת RunMonitoring משתמשת באפשרויות קיימות של PodMonitoring כדי לתמוך ב-Cloud Run תוך ביטול אפשרויות מסוימות הספציפיות ל-Kubernetes.
ניתן להשתמש בתצורת ברירת המחדל של RunMonitoring, או ליצור תצורה מותאמת אישית. בקטעים הבאים מתוארות שתי הגישות. לא צריך לעשות את שניהם. למידע נוסף על שימוש בתצורות ברירת מחדל או מותאמות אישית, בחר את הכרטיסייה המתאימה.
הגדרות ברירת מחדל
שימוש בהגדרת ברירת המחדל של RunMonitoring
אם לא יוצרים הגדרת RunMonitoring מותאמת אישית, כלי האיסוף מסוג sidecar מסנתז את הגדרת ברירת המחדל הבאה כדי לגרד מדדים מיציאה 8080 בנתיב המדדים /metrics כל 30 שניות:
apiVersion: monitoring.googleapis.com/v1beta
kind: RunMonitoring
metadata:
name: run-gmp-sidecar
spec:
endpoints:
- port: 8080
path: /metrics
interval: 30s
השימוש בתצורת ברירת המחדל אינו דורש הגדרה נוספת מעבר להוספת קובץ העזר לשירות Cloud Run שלך.
הוספת קובץ עזר לשירות Cloud Run
כדי להשתמש ב-sidecar עם הגדרת ברירת המחדל של RunMonitoring, צריך לשנות את ההגדרה הקיימת של Cloud Run כדי להוסיף את ה-sidecar. כדי להוסיף את קובץ העזר, בצע את הפעולות הבאות:
- מוסיפים הערה של תלות בקונטיינר שמציינת את סדר ההפעלה וההשבתה של הקונטיינרים. בדוגמה הבאה, קונטיינר ה-sidecar, שנקרא collector, מתחיל לפעול אחרי קונטיינר האפליקציה, שנקרא app בדוגמה, ומפסיק לפעול לפניו.
- צור מיכל עבור האספן, בשם "collector" בדוגמה הבאה.
לדוגמה, מוסיפים את השורות שמופיעות אחרי התו + (פלוס) להגדרה של Cloud Run, ואז פורסים מחדש את השירות:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
annotations:
run.googleapis.com/launch-stage: ALPHA
run.googleapis.com/cpu-throttling: 'false'
name: my-cloud-run-service
spec:
template:
metadata:
annotations:
run.googleapis.com/execution-environment: gen2
+ run.googleapis.com/container-dependencies: '{"collector":["app"]}'
spec:
containers:
- image: "REGION-docker.pkg.dev/PROJECT_ID/run-gmp/sample-app"
name: app
startupProbe:
httpGet:
path: /startup
port: 8000
livenessProbe:
httpGet:
path: /liveness
port: 8000
ports:
- containerPort: 8000
+ - image: "us-docker.pkg.dev/cloud-ops-agents-artifacts/cloud-run-gmp-sidecar/cloud-run-gmp-sidecar:1.2.0"
+ name: collector
כדי לפרוס מחדש את שירות Cloud Run עם קובץ התצורה run-service.yaml, מריצים את הפקודה הבאה:
gcloud run services replace run-service.yaml --region=REGION
הגדרות אישיות
צור תצורת RunMonitoring מותאמת אישית
ניתן ליצור תצורת RunMonitoring עבור שירות Cloud Run אם תצורת ברירת המחדל אינה מספקת.
לדוגמה, ייתכן שתוכל ליצור תצורה כמו הבאה:
apiVersion: monitoring.googleapis.com/v1beta
kind: RunMonitoring
metadata:
name: my-custom-cloud-run-job
spec:
endpoints:
- port: 8080
path: /metrics
interval: 10s
metricRelabeling:
- action: replace
sourceLabels:
- __address__
targetLabel: label_key
replacement: label_value
targetLabels:
metadata:
- service
- revision
ההגדרה הזו מבצעת את הפעולות הבאות:
- הפקודה אוספת מדדים מיציאה 8080 ומשתמשת בנתיב ברירת המחדל של המדדים
/metrics. - משתמש במרווח גירוד של 10 שניות.
- משתמש בתיוג מחדש כדי להוסיף את התווית
label_keyעם הערךlabel_valueלכל מדד שנגרד. - התוויות
serviceו-revisionשל המטא-נתונים מתווספות לכל מדד שנאסף.
מידע על אפשרויות ההגדרה הזמינות מופיע במאמר RunMonitoring spec: configuration options.
כשמשתמשים בהגדרה מותאמת אישית של RunMonitoring, צריך לבצע את ההגדרה הנוספת הבאה:
- מפעילים את Secret Manager API ומקצים לחשבון השירות של Cloud Run תפקידים ב-Secret Manager. מידע נוסף זמין במאמר לפני שמתחילים.
- אחסן את התצורה המותאמת אישית כסוד.
- הוספת קובץ עזר לשירות Cloud Run .
אחסון ההגדרה באמצעות Secret Manager
כדי לספק תצורה מותאמת אישית של RunMonitoring, בצע את הפעולות הבאות:
- יוצרים קובץ שמכיל את ההגדרה בהתאמה אישית.
- צור סוד של מנהל סודות המכיל את התצורה המותאמת אישית.
הפקודה הבאה יוצרת סוד בשם mysecret מקובץ custom-config.yaml:
gcloud secrets create mysecret --data-file=custom-config.yaml
כדי לאסוף שינוי בתצורה לאחר שינוי קובץ ה-custom-config.yaml, עליך למחוק וליצור מחדש את הסוד, ולאחר מכן לפרוס מחדש את שירות Cloud Run.
עדכון ההגדרה ב-Secret Manager
אם רוצים לעדכן את ההגדרה המותאמת אישית של RunMonitoring בכל שלב, אפשר להוסיף גרסה חדשה של הסוד הקיים ל-Secret Manager.
לדוגמה, כדי לעדכן את mysecret עם תצורה חדשה המאוחסנת בקובץ custom-config-updated.yaml, ניתן להריץ:
gcloud secrets versions add mysecret --data-file=custom-config-updated.yaml
ה-sidecar נטען מחדש באופן אוטומטי והשינויים מוחלים על ההגדרה שלו.
הוספת קובץ עזר לשירות Cloud Run
אחרי שיוצרים סוד ב-Secret Manager עבור ההגדרה של RunMonitoring, צריך לשנות את ההגדרה של Cloud Run כדי לבצע את הפעולות הבאות:
- הוסף את השירות המנוהל ל-Prometheus sidecar
- מוסיפים הערה של תלות בקונטיינר שמציינת את סדר ההפעלה וההשבתה של הקונטיינרים. בדוגמה הבאה, קונטיינר ה-sidecar, שנקרא collector, מתחיל לפעול אחרי קונטיינר האפליקציה, שנקרא app בדוגמה, ומפסיק לפעול לפניו.
- יוצרים מאגר תגים בשם collector בשביל כלי האיסוף, כמו בדוגמה הבאה.
- הוסף את הסוד על ידי טעינת הסוד במיקום
/etc/rungmp/config.yaml:- הוסף ביאור סודות המצביע על הסוד שמכיל את תצורת
RunMonitoringהמותאמת אישית שלך. - יוצרים נפח, בשם config בדוגמה הבאה, בשביל הסוד שמצביע על הקובץ
config.yaml. - טוענים את אמצעי האחסון כחלק מתמונת הכלי לאיסוף נתונים בנתיב הטעינה
/etc/rungmp.
- הוסף ביאור סודות המצביע על הסוד שמכיל את תצורת
לדוגמה, הוסף את השורות שלפניהן תו + (פלוס) לתצורת Cloud Run שלך, ולאחר מכן פרוס מחדש את השירות שלך:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
annotations:
run.googleapis.com/launch-stage: ALPHA
run.googleapis.com/cpu-throttling: 'false'
name: my-cloud-run-service
spec:
template:
metadata:
annotations:
run.googleapis.com/execution-environment: gen2
+ run.googleapis.com/container-dependencies: '{"collector":["app"]}'
+ run.googleapis.com/secrets: 'mysecret:projects/PROJECT_ID/secrets/mysecret'
spec:
containers:
- image: "REGION-docker.pkg.dev/PROJECT_ID/run-gmp/sample-app"
name: app
startupProbe:
httpGet:
path: /startup
port: 8000
livenessProbe:
httpGet:
path: /liveness
port: 8000
ports:
- containerPort: 8000
+ - image: "us-docker.pkg.dev/cloud-ops-agents-artifacts/cloud-run-gmp-sidecar/cloud-run-gmp-sidecar:1.2.0"
+ name: collector
+ volumeMounts:
+ - mountPath: /etc/rungmp/
+ name: config
+ volumes:
+ - name: config
+ secret:
+ items:
+ - key: latest
+ path: config.yaml
+ secretName: 'mysecret'
כדי לפרוס מחדש את שירות Cloud Run עם קובץ התצורה run-service.yaml, מריצים את הפקודה הבאה:
gcloud run services replace run-service.yaml --region=REGION
מפרט RunMonitoring: אפשרויות הגדרה
בקטע הזה מתואר RunMonitoring מפרט ההגדרה של ה-sidecar של השירות המנוהל ל-Prometheus. בדוגמה הבאה מוצגת הגדרה בהתאמה אישית:
apiVersion: monitoring.googleapis.com/v1beta
kind: RunMonitoring
metadata:
name: my-custom-cloud-run-job
spec:
endpoints:
- port: 8080
path: /metrics
interval: 10s
metricRelabeling:
- action: replace
sourceLabels:
- __address__
targetLabel: label_key
replacement: label_value
targetLabels:
metadata:
- service
- revision
RunMonitoring
תצורת RunMonitoring מנטרת שירות Cloud Run.
| שדה | תיאור | Scheme | חובה |
|---|---|---|---|
metadata |
מטא-נתונים שכל המשאבים הקבועים חייבים לכלול. |
metav1.ObjectMeta |
FALSE |
spec |
הגדרת הפריסה של Cloud Run שנבחרה לחיפוש יעדים על ידי Prometheus. | RunMonitoringSpec |
TRUE |
RunMonitoringSpec
במפרט הזה מוסבר איך ההגדרה RunMonitoring עוקבת אחרי שירות Cloud Run.
| שדה | תיאור | Scheme | חובה |
|---|---|---|---|
endpoints |
נקודות קצה לגרד על התרמילים שנבחרו. | []ScrapeEndpoint |
TRUE |
targetLabels |
תוויות להוספה ליעד Prometheus עבור נקודות קצה שזוהו.
התווית instance תמיד מוגדרת למזהה המופע של Cloud Run. |
RunTargetLabels |
FALSE |
limits |
מגבלות שחלות בזמן החילוץ. | *ScrapeLimits |
FALSE |
RunTargetLabels
תצורת RunTargetLabels מאפשרת לך לכלול תוויות Cloud Run ממטרות Prometheus שהתגלו.
| שדה | תיאור | Scheme | חובה |
|---|---|---|---|
metadata |
תוויות מטא-נתונים של Cloud Run שמוגדרות בכל היעדים שמתבצעת בהם פעולת גירוד. המקשים המותרים הם instance, revision,
service ו-configuration.אם מוגדרים מפתחות מותרים, קובץ ה-sidecar מוסיף את הערך המתאים ממופע Cloud Run כתוויות של מדדים לכל מדד: instanceID, revision_name, service_name ו-configuration_name.ברירת המחדל היא שכל המקשים המותרים מוגדרים. |
*[]string |
FALSE |
פיתוח והרצה של אפליקציה לדוגמה
בקטע הזה מוסבר איך להריץ את שירות מנוהל ל-Prometheus sidecar עם אפליקציה לדוגמה. הקטע הזה הוא אופציונלי. אם כבר יש לכם שירות Cloud Run ואתם רוצים לפרוס את ה-sidecar איתו, כדאי לעיין במאמר הוספת ה-sidecar של השירות המנוהל ל-Prometheus לשירות Cloud Run.
שכפול המאגר run-gmp-sidecar
כדי לקבל את אפליקציית הדוגמה ואת קבצי התצורה שלה, שכפל את מאגר run-gmp-sidecar על ידי הפעלת הפקודה הבאה:
git clone https://github.com/GoogleCloudPlatform/run-gmp-sidecar/
אחרי שיבוט המאגר, עוברים לספרייה run-gmp-sidecar:
cd run-gmp-sidecar
פיתוח והרצה של אפליקציה לדוגמה
אפליקציית הדוגמה דורשת Docker או מערכת build דומה לקונטיינרים ל-Linux. ניתן לבנות ולהפעיל את אפליקציית הדוגמה באחת מהדרכים הבאות:
- שימוש ב-Cloud Build כדי להריץ בלי תמיכה מקומית ב-Docker. אם אתם משתמשים ב-Cloud Build, עליכם גם להפעיל את ה-API של Cloud Build.
- מבצעים build ומריצים את האפליקציה לדוגמה באופן ידני.
בקטעים הבאים מתוארות שתי הגישות. לא צריך לעשות את שניהם. כדי לקבל מידע נוסף, בוחרים את הכרטיסייה של אחת מהגישות.
שימוש ב-Cloud Build
שימוש ב-Cloud Build
המאגר run-gmp-sidecar כולל קובצי הגדרות ל-Cloud Build. קבצים אלה מקבצים יחד את השלבים הדרושים לבנייה ופריסה של אפליקציית הדוגמה.
אפשר גם לבצע באופן ידני את השלבים שמטופלים על ידי Cloud Build. מידע נוסף זמין במאמר איך יוצרים ומריצים ידנית.
הגדרה של Cloud Build
כדי להשתמש בקובצי ההגדרות האלה, צריך חשבון שירות ב-Cloud Build ומאגר ב-Artifact Registry. מאגר run-gmp-sidecar כולל גם סקריפט, create-sa-and-ar.sh, שמבצע את הפעולות הבאות:
- יוצר חשבון שירות,
run-gmp-sa@PROJECT_ID.iam.gserviceaccount.com. - מעניק את התפקידים הבאים לחשבון השירות:
roles/iam.serviceAccountUserroles/storage.objectViewerroles/logging.logWriterroles/artifactregistry.createOnPushWriterroles/secretmanager.adminroles/secretmanager.secretAccessorroles/run.admin
- יוצר מאגר Artifact Registry,
run-gmp, לתמונות שלכם של קונטיינרים.
כדי ליצור את חשבון השירות run-gmp-sa ואת מאגר run-gmp, הפעל את הפקודה הבאה:
./create-sa-and-ar.sh
לוקח זמן מה עד שההרשאות מתפשטות, לכן מומלץ להמתין כ-30 שניות לפני שתמשיך לשלב הבא. אחרת, ייתכן שתראו שגיאות אישור.
שליחת בקשה ל-Cloud Build
אחרי שמגדירים את run-gmp-saחשבון השירותrun-gmp ואת המאגר, אפשר להגיש את קובץ תצורת ה-build של Cloud Build כדי להתחיל משימה ב-Cloud Build. ניתן להשתמש בפקודה הבאה של gcloud builds submit:
gcloud builds submit . --config=cloudbuild-simple.yaml --region=REGION
פקודה זו אורכת מספר דקות להפעלת, אך היא כמעט מיד מציינת היכן ניתן למצוא את פרטי הבנייה של Cloud Build. ההודעה תיראה כך:
Logs are available at [ https://console.cloud.google.com/cloud-build/builds/637860fb-7a14-46f2-861e-09c1dc4cea6b?project=PROJECT_NUMBER].
כדי לראות את התקדמות הבנייה, עוברים לכתובת ה-URL שמוחזרת בדפדפן. אפשר גם לראות את יומני ה-sidecar ב-Cloud Logging.
בדיקת כתובת ה-URL של השירות
אחרי שהמשימה של Cloud Build מסתיימת, מריצים את הפקודה הבאה כדי לבדוק את כתובת ה-URL של נקודת הקצה של שירות Cloud Run:
gcloud run services describe my-cloud-run-service --region=REGION --format="value(status.url)"
פקודה זו מחזירה את כתובת ה-URL של השירות, שנראית כך:
https://my-cloud-run-service-abcdefghij-ue.a.run.app
בנה והפעל באופן ידני
בנה והפעל באופן ידני
ניתן לבצע ידנית את השלבים ש-Cloud Build מטפל בהם, המתוארים בסעיף שימוש ב-Cloud Build. בקטעים הבאים מוסבר איך לבצע את אותן משימות באופן ידני.
הגדרת משתנים שמשמשים בשלבים מאוחרים יותר
בכמה מהשלבים הבאים נעשה שימוש במשתני סביבה לערכים נפוצים. הגדר משתנים אלה באמצעות הפקודות הבאות:
export GCP_PROJECT=PROJECT_ID export REGION=REGION
יצירת מאגר קובצי אימג' של קונטיינרים
כדי ליצור מאגר ב-Artifact Registry בשביל קובץ האימג' של הקונטיינר, מריצים את הפקודה הבאה:
gcloud artifacts repositories create run-gmp \
--repository-format=docker \
--location=${REGION}
בנה ופרסם את אפליקציית הדוגמה
בדוגמה הזו נעשה שימוש ב-Docker ב-Linux כדי ליצור את אפליקציית הדוגמה ולהעביר אותה בדחיפה למאגר ב-Artifact Registry. יכול להיות שתצטרכו להתאים את הפקודות האלה אם אתם עובדים בסביבת Windows או macOS.
כדי לבנות את אפליקציית הדוגמה ולדחוף אותה ל-Artifact Registry, בצע את הפעולות הבאות:
מאמתים את לקוח Docker באמצעות Google Cloud CLI:
gcloud auth configure-docker ${REGION}-docker.pkg.devעבור אל ספריית
simple-appבמאגרrun-gmp-sidecar:pushd sample-apps/simple-app
מריצים את הפקודה הבאה כדי ליצור את אפליקציית
simple-app:docker build -t ${REGION}-docker.pkg.dev/${GCP_PROJECT}/run-gmp/sample-app .מריצים את הפקודה הבאה כדי לשלוח את האימג' של האפליקציה שנבנתה:
docker push ${REGION}-docker.pkg.dev/${GCP_PROJECT}/run-gmp/sample-appחוזרים לספרייה
run-gmp-sidecar:popd
הגדרת שירות Cloud Run
הקובץ run-service-simple.yaml במאגר run-gmp-sidecar מגדיר שירות Cloud Run מרובה-קונטיינרים שמשתמש באפליקציה לדוגמה ובקובצי האימג' של כלי האיסוף שיצרתם בשלבים הקודמים. קובץ run-service-simple.yaml מכיל את מפרט השירות הבא:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
annotations:
run.googleapis.com/launch-stage: ALPHA
run.googleapis.com/cpu-throttling: 'false'
name: my-cloud-run-service
spec:
template:
metadata:
annotations:
run.googleapis.com/execution-environment: gen2
run.googleapis.com/container-dependencies: '{"collector":["app"]}'
spec:
containers:
- image: "%SAMPLE_APP_IMAGE%"
name: app
startupProbe:
httpGet:
path: /startup
port: 8000
livenessProbe:
httpGet:
path: /liveness
port: 8000
ports:
- containerPort: 8000
- image: "us-docker.pkg.dev/cloud-ops-agents-artifacts/cloud-run-gmp-sidecar/cloud-run-gmp-sidecar:1.2.0"
name: collector
הקובץ הזה מכיל ערך placeholder לתמונות שיצרתם בשלבים הקודמים, ולכן אתם צריכים לעדכן את ה-placeholders עם הערכים בפועל שלGoogle Cloud הפרויקט.
מריצים את הפקודה הבאה כדי להחליף את ה-placeholder %SAMPLE_APP_IMAGE%:
sed -i s@%SAMPLE_APP_IMAGE%@REGION-docker.pkg.dev/${GCP_PROJECT}/run-gmp/sample-app@g run-service-simple.yaml
פריסת שירות Cloud Run
אחרי שמעדכנים את קובץ run-service-simple.yaml עם הערכים הרצויים, אפשר ליצור ולפרוס את שירות Cloud Run באמצעות הפקודה הבאה:
gcloud run services replace run-service-simple.yaml --region=REGION
פקודה זו מחזירה את כתובת ה-URL של השירות, שנראית כך:
https://my-cloud-run-service-abcdefghij-ue.a.run.app
אישור גישת HTTP לא מאומתת
כדי לשלוח בקשה לכתובת ה-URL של השירות, צריך לשנות את מדיניות השירות של Cloud Run כך שתאפשר גישת HTTP לא מאומתת. קובץ policy.yaml במאגר run-gmp-sidecar מכיל את השינוי הדרוש.
כדי לשנות את מדיניות השירות, מריצים את הפקודה הבאה:
gcloud run services set-iam-policy my-cloud-run-service policy.yaml --region=REGION
איך מוודאים שהאפליקציה פועלת
כדי לוודא ששירות Cloud Run הפעיל את האפליקציה לדוגמה בצורה תקינה, משתמשים בכלי curl כדי לגשת לנקודת הקצה metrics של השירות.
מריצים את הפקודה הבאה כדי לקבל את כתובת ה-URL של השירות:
SERVICE_URL=$(gcloud run services describe my-cloud-run-service --region=REGION --format 'value(status.url)')
מחליפים את REGION באזור Cloud Run של השירות.
שלח בקשה לכתובת ה-URL של השירות על ידי הפעלת הפקודה הבאה:
curl $SERVICE_URL
אם האפליקציה הופעלה בהצלחה, תופיע התגובה הבאה:
User request received!
הצגת מדדי האפליקציה ב-Metrics Explorer
המיכל לדוגמה app כותב את המדדים הבאים:
-
foo_metric: השעה הנוכחית כערך נקודה צפה (מדד). bar_metric: השעה הנוכחית כערך נקודה צפה (מונה).
כדי לראות את המדדים האלה ב-Metrics Explorer:
-
ב- Google Cloud קונסולה, עבור אלleaderboard חוקר מדדים עַמוּד:
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.
בסרגל הכלים של חלונית בונה השאילתות, בחר את הכפתור ששמו code PromQL.
מזינים את השאילתה הבאה בחלונית העריכה:
foo_metric
לוחצים על הוספת שאילתה.
בסרגל הכלים של חלונית בונה השאילתות, בחר את הכפתור ששמו code PromQL.
מזינים את השאילתה הבאה בחלונית העריכה השנייה:
bar_metric
לוחצים על Run query.
כדי לראות פרטים על המדדים, בלחצן הדו-מצבי שכותרתו טבלת תרשים שניהם, בחר שניהם.
הסרת המשאבים
לאחר שתסיים להתנסות עם אפליקציית הדוגמה, תוכל להשתמש בסקריפט clean-up-cloud-run.sh במאגר run-gmp-sidecar כדי למחוק את המשאבים הבאים שייתכן שיצרת עבור הדוגמה:
- שירות Cloud Run.
- מאגר Artifact Registry.
- חשבון השירות שנוצר עבור Cloud Build.
מחיקת משאבים אלה מבטיחה שלא ייגרמו לך עלויות לאחר הרצת הדוגמה.
כדי לנקות את אפליקציית הדוגמה, מריצים את הסקריפט clean-up-cloud-run.sh:
./clean-up-cloud-run.sh
צפייה במדדים עצמיים ב-Metrics Explorer
השירות המנוהל ל-Prometheus sidecar מדווח על המדדים הבאים אודותיו ל-Cloud Monitoring:
-
agent_uptime: זמן הפעולה של אוסף הנתונים של ה-sidecar (מונה). agent_memory_usage: הזיכרון הנצרך על ידי אספן הרכב הצדדי (מד).-
agent_api_request_count: מספר בקשות ה-API מה-sidecar collector (מונה). -
agent_monitoring_point_count: מספר נקודות המדד שנכתבו ל-Cloud Monitoring על ידי כלי האיסוף מסוג sidecar (מונה).
כדי להציג את המדדים העצמיים של קובץ העזר ב-Metrics Explorer, בצע את הפעולות הבאות:
-
ב- Google Cloud קונסולה, עבור אלleaderboard חוקר מדדים עַמוּד:
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.
בסרגל הכלים של חלונית בונה השאילתות, בחר את הכפתור ששמו code PromQL.
מזינים את שם המדד שרוצים לשלוח לגביו שאילתה בחלונית העריכה, לדוגמה:
agent_api_request_count
לוחצים על Run query.
כדי לראות פרטים על המדדים, בלחצן הדו-מצבי שכותרתו טבלת תרשים שניהם, בחר שניהם.
הצג יומני רישום עצמיים ב-Logs Explorer
ה-sidecar של השירות המנוהל ל-Prometheus כותב יומנים ל-Cloud Logging. ה-sidecar כותב יומנים מול סוג המשאב במעקב של Logging cloud_run_revision.
כדי להציג את יומני הצד בסייר היומנים, בצע את הפעולות הבאות:
-
במסוף Google Cloud , נכנסים לדף Logs Explorer:
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.
בחר את סוג המשאב Cloud Run Revision, או הזן את השאילתה הבאה ולחץ על Run query:
resource.type="cloud_run_revision"
מידע על המדדים שנאספים
כשמדדים שמופקים על ידי קובץ ה-sidecar מוזנים ל-Cloud Monitoring, המדדים נכתבים מול סוג המשאב במעקב prometheus_target של Cloud Monitoring.
סוג המשאב הזה משמש למדדי אפליקציות ולמדדים עצמיים של ה-sidecar.
כשכותבים את המדדים, ה-sidecar מגדיר את תוויות המשאבים באופן הבא:
-
project_id: המזהה של Google Cloud הפרויקט שבו פועל הקונטיינר. -
location: האזור Google Cloud שבו פועל מאגר הנתונים. -
cluster: הערך__run__. -
namespace: השם של שירות Cloud Run שמופעל. מגיע ממשתנה הסביבהK_SERVICE. job: שם מתצורתRunMonitoring; ברירת המחדל היאrun-gmp-sidecar.-
instance: הערךfaas.ID:PORTשל עומס העבודה המקומי שממנו המאגר מוגדר לשליפת מדדים. הערך faas.ID הוא מזהה המופע של מופע Cloud Run.
הצדדי מוסיף גם את תוויות המדדים הבאות:
-
instanceId: המזהה של מופע Cloud Run. service_name: שם שירות Cloud Run שמופעל.-
revision_name: השם של הגרסה של Cloud Run שמופעלת. -
configuration_name: השם של הגדרת Cloud Run שמופעלת.
כל תוויות המדדים הללו מתווספות כברירת מחדל. אם משתמשים בהגדרה מותאמת אישיתRunMonitoring, אפשר להשמיט את התוויות service_name, revision_name ו-configuration_name באמצעות האפשרות targetLabels במפרט RunMonitoring. אפשר גם להשתמש בהגדרה מותאמת אישית כדי לשנות את השמות של הערכים של התוויות service_name, revision_name ו-configuration_name.
כל התוויות האחרות שמופיעות עם מדדים שהועברו מגיעות מהמדד שלכם.
אם תווית המוגדרת על ידי המשתמש מתנגשת עם אחת התוויות שסופקו על ידי המערכת, התווית המוגדרת על ידי המשתמש תופיע בקידומת המחרוזת exported_. לדוגמה,
תווית שצוינה על ידי המשתמש namespace="playground" מתנגשת עם התווית namespace שהוגדרה על ידי המערכת, ולכן התווית של המשתמש מופיעה כ-exported_namespace="playground".
סוג מדד
כאשר המדדים הנפלטים על ידי הצדדי נקלטים לתוך Cloud Monitoring, המדדים נכתבים כמדדי prometheus.googleapis.com, וסוג המדד של Prometheus נוסף לסוף השם. לדוגמה, האפליקציה לדוגמה פולטת מדד של מדד Prometheus בשם foo_metric. ב-Cloud Monitoring, המדד מאוחסן כסוג המדד prometheus.googleapis.com/foo_metric/gauge.
בעת ביצוע שאילתה על המדד באמצעות PromQL, ניתן להשתמש בשם Prometheus, כפי שמודגם ב-הצגת מדדי אפליקציה ב-Metrics Explorer וב-הצגת מדדי אפליקציה ב-Metrics Explorer. בעת שימוש בכלים כמו בונה השאילתות או שפת שאילתות המעקב (MQL) ב-Metrics Explorer, סוג המדד Cloud Monitoring רלוונטי.
חיוב
מדדים שמופקים על ידי ה-sidecar מוזנים ל-Cloud Monitoring עם התחילית prometheus.googleapis.com. מדדים עם קידומת זו מחויבים לפי מספר הדגימות שנבלעו. מידע נוסף על חיוב ועל שירות מנוהל ל-Prometheus זמין במאמר חיוב.