בדף הזה מוסבר איך להגדיר את Google Kubernetes Engine (GKE) כדי לאסוף יומנים ומדדים של אשכולות Ray שפועלים ב-Google Kubernetes Engine (GKE), ואיך להציג את היומנים והמדדים של Ray ב-Cloud Logging וב-Cloud Monitoring.
מידע נוסף על Ray ו-KubeRay זמין במאמר סקירה כללית על Ray ב-Google Kubernetes Engine (GKE).
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
דרישות ומגבלות
- כדי להפעיל איסוף יומנים באשכולות Ray, צריך להפעיל קודם רישום ביומן של המערכת ועומסי העבודה באשכול GKE קיים.
- אם מפעילים איסוף יומנים עבור אשכולות Ray באשכול GKE קיים, מערכת GKE אוספת יומנים רק מ-Pods חדשים של Ray שנוצרו, ולא מ-Pods קיימים של Ray.
- במקרה של אשכולות GKE רגילים, צריך להפעיל את השירות המנוהל של Google Cloud ל-Prometheus כדי להפעיל איסוף מדדים לאשכולות Ray. בקטגוריות של Autopilot, השירות המנוהל של Google Cloud ל-Prometheus מופעל כברירת מחדל.
- אסור לציין נפח בשם
ray-logsבאף קונטיינר Ray באשכול Ray. אחרת, GKE לא יאסוף יומנים. - רישום ביומן בפורמט JSON זמין ב-GKE בגרסה v1.35.1-gke.1616000 ואילך. כדי להפעיל רישום בפורמט JSON מובנה, צריך להגדיר משתני סביבה ספציפיים במפרט של קונטיינר Ray.
הפעלת איסוף יומנים עבור אשכול Ray
אפשר להפעיל איסוף יומנים לאשכולות Ray עם אשכולות GKE חדשים או קיימים במצב Autopilot או במצב רגיל. יומני Ray שמערכת GKE אוספת מאשכולות Ray מסווגים כיומני קונטיינרים. הם כוללים את כל היומנים שנוצרו על ידי הכותרת של אשכול Ray וצמתי העובדים.
אפשר להפעיל איסוף יומנים עבור אשכולות Ray באמצעות מסוף Google Cloud או ה-CLI של gcloud.
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
לוחצים על יצירה ואז בקטע 'רגיל' או 'טייס אוטומטי' לוחצים על הגדרה.
בחלונית הניווט, בקטע Cluster, לוחצים על Features.
בקטע Operations, מוודאים שתיבת הסימון System and Workloads מסומנת.
בקטע AI and Machine Learning (AI ולמידת מכונה), בוחרים באפשרות Enable Ray Operator (הפעלת Ray Operator) ואז באפשרות Enable log collection for Ray clusters (הפעלת איסוף יומנים עבור אשכולות Ray).
לוחצים על יצירה.
בנוסף, באשכולות רגילים צריך להפעיל את השירות המנוהל של Google Cloud ל-Prometheus.
gcloud
יוצרים אשכול באמצעות האפשרות --addons=RayOperator והאפשרות --enable-ray-cluster-logging:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--addons=RayOperator \
--enable-ray-cluster-logging
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול החדש. -
LOCATION: המיקום של האשכול החדש, לדוגמה, us-central1.
אפשר להפעיל איסוף יומנים עבור אשכולות Ray באשכול קיים באמצעות הפקודה gcloud container clusters update עם האפשרות --addons=RayOperator והאפשרות --enable-ray-cluster-logging.
צפייה ביומני Ray
אפשר לראות את היומנים שנאספו מאשכולות Ray שפועלים ב-GKE באמצעות Logging.
נכנסים לדף Cloud Logging במסוף Google Cloud .
פותחים את עורך השאילתות ומדביקים את הביטוי בעורך השאילתות.
לוחצים על Run query (הפעלת שאילתה).
אפשר להשתמש בשאילתות לדוגמה הבאות ב-Logs Explorer:
| שם השאילתה או המסנן | ביטוי |
|---|---|
| כל יומני Ray | resource.type="k8s_container" labels."k8s-pod/ray_io/is-ray-node"="yes" |
| כל היומנים של ראש ה-Ray | resource.type="k8s_container" labels."k8s-pod/ray_io/node-type"="head" |
| כל היומנים באשכול Ray | resource.type="k8s_container" labels."k8s-pod/ray_io/cluster"="RAY_CLUSTER_NAME" |
| כל יומני הנהגים מעבודת Ray | resource.type="k8s_container" jsonPayload.ray_submission_id="RAY_JOB_SUBMISSION_ID" |
| כל יומני העובדים ממשימת Ray | resource.type="k8s_container" labels."k8s-pod/ray_io/cluster"="RAY_CLUSTER_NAME" labels."k8s-pod/ray_io/node-type"="worker" jsonPayload.filename=~"/tmp/ray/session_latest/logs/worker-(.*).out" |
הפעלת רישום משופר של נתונים מובנים (מומלץ)
רישום מובנה משופר זמין ב-GKE מגרסה v1.35.1-gke.1616000 ואילך.
כברירת מחדל, יומני Ray נשמרים כמחרוזות טקסט לא מובנות בשדה jsonPayload.log ב-Cloud Logging. כדי לשפר את השאילתות, הניתוח והיכולת לראות את המערכת, אפשר להגדיר אשכולות Ray ליצירת יומנים בפורמט JSON מובנה. בפורמט המשופר הזה, המערכת מנתחת את היומנים לצמדי מפתח/ערך מפורטים, וכך מאפשרת לבצע שאילתות מהירות שמבוססות על שדות במאפיינים כמו task_id ו-job_id. רישום משופר של נתונים מובנים ביומן מספק תיוג נכון של רמת החומרה, מונע פיצול של יומנים מרובי שורות ומשתלב בצורה חלקה עם תכונות של Cloud Logging לניתוח וניפוי באגים משופרים.
כדי להפעיל פלט JSON מובנה, מבצעים את השלבים הבאים:
- הפעלת איסוף יומנים באשכול Ray
מגדירים את משתני הסביבה הבאים במפרט של קונטיינר Ray בקובץ המניפסט
RayClusterYAML:-
RAY_LOGGING_CONFIG_ENCODING="JSON": מגדיר את היומנים של אפליקציית Ray (Ray Core, שחקנים ומשימות) לשימוש בקידוד JSON מובנה. -
RAY_BACKEND_LOG_JSON="1": מגדיר את יצירת יומני המערכת של Ray (כמו אלה משרת GCS ו-Raylet) בפורמט JSON מובנה.
לדוגמה, המניפסטים הבאים של RayCluster כוללים את הקטע env לכל קובצי ה-container של Ray, במפרטים headGroupSpec ו-workerGroupSpecs:
# Example snippet for a RayCluster manifest apiVersion: ray.io/v1 kind: RayCluster metadata: name: raycluster-structured spec: headGroupSpec: template: spec: containers: - name: ray-head image: rayproject/ray:2.54.0 # Replace with your desired Ray image # ... other container settings env: - name: RAY_LOGGING_CONFIG_ENCODING value: "JSON" - name: RAY_BACKEND_LOG_JSON value: "1" workerGroupSpecs: - groupName: small-group replicas: 1 minReplicas: 1 maxReplicas: 5 template: spec: containers: - name: ray-worker image: rayproject/ray:2.54.0 # Replace with your desired Ray image # ... other container settings env: - name: RAY_LOGGING_CONFIG_ENCODING value: "JSON" - name: RAY_BACKEND_LOG_JSON value: "1"-
מחילים את מניפסט RayCluster המעודכן:
kubectl apply -f your-raycluster.yaml
שאילתות ליומנים מובְנים
| שם השאילתה או המסנן | ביטוי |
|---|---|
| כל יומני השגיאות של מזהה משימת Ray ספציפי | resource.type="k8s_container" labels."k8s-pod/ray_io/is-ray-node"="yes" severity=ERROR jsonPayload.job_id="YOUR_JOB_ID" |
| יומנים של מזהה תהליך ספציפי של Ray worker | resource.type="k8s_container" labels."k8s-pod/ray_io/is-ray-node"="yes" jsonPayload.worker_id="YOUR_WORKER_ID" |
| יומני שגיאות של מזהה משימה ספציפי ב-Pod ספציפי של עובד | resource.type="k8s_container" resource.labels.pod_name="YOUR_WORKER_POD_NAME" labels."k8s-pod/ray_io/is-ray-node"="yes" severity=ERROR jsonPayload.task_id="YOUR_TASK_ID" |
הפעלת איסוף מדדים עבור אשכול Ray
אפשר להפעיל את איסוף המדדים באשכולות Ray עם אשכולות GKE חדשים או קיימים במצב Autopilot או במצב רגיל.
אחרי שמפעילים את איסוף המדדים עבור אשכולות Ray, GKE אוסף מדדים מאשכולות Ray קיימים ומאשכולות Ray חדשים. GKE אוסף את כל מדדי המערכת שמיוצאים על ידי Ray בפורמט Prometheus.
אפשר להפעיל איסוף מדדים עבור אשכולות Ray באמצעות מסוףGoogle Cloud או ה-CLI של gcloud.
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
לוחצים על יצירה ואז בקטע 'רגיל' או 'טייס אוטומטי' לוחצים על הגדרה.
בחלונית הניווט, בקטע Cluster, לוחצים על Features.
בקטע Operations, מוודאים שתיבת הסימון System and Workloads מסומנת.
בקטע AI and Machine Learning (AI ולמידת מכונה), בוחרים באפשרות Enable Ray Operator (הפעלת Ray Operator) ואז באפשרות Enable metrics collection for Ray clusters (הפעלת איסוף מדדים עבור אשכולות Ray).
לוחצים על יצירה.
בנוסף, באשכולות רגילים צריך להפעיל את השירות המנוהל של Google Cloud ל-Prometheus.
gcloud
יוצרים אשכול באמצעות האפשרות --addons=RayOperator והאפשרות --enable-ray-cluster-monitoring:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--addons=RayOperator \
--enable-ray-cluster-monitoring
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול החדש. -
LOCATION: המיקום של האשכול החדש, לדוגמה, us-central1.
אפשר להפעיל איסוף יומנים עבור אשכולות Ray באשכול קיים באמצעות הפקודה gcloud container clusters update עם האפשרות --addons=RayOperator והאפשרות --enable-ray-cluster-monitoring.
הצגת מדדים של Ray
השירות המנוהל של Google Cloud ל-Prometheus מספק לוח בקרה מוגדר מראש של Ray on GKE Overview, שבו מוצגות באופן מרכזי מדדי Ray חשובים. זו הדרך המומלצת להתחיל במהירות לעקוב אחרי אשכולות Ray ב-GKE.
מרכז הבקרה מתמלא באופן אוטומטי כשמפעילים איסוף מדדים עבור אשכול Ray.
לחלופין, ��ם רוצים לבדוק מדדים ספציפיים שנאספים מאשכולות Ray שפועלים ב-GKE, פועלים לפי השלבים הבאים:
נכנסים לדף Metrics Explorer במסוף Google Cloud .
בשדה Select a metric, אפשר לחפש מדדים שספציפיים ל-Ray. בדרך כלל, המדדים האלה מתחילים בקידומת
prometheus/ray_. לדוגמה,prometheus/ray_worker_cpu_seconds_totalאוprometheus/ray_memory_bytes_max.אפשר לצמצם עוד יותר את החיפוש על ידי בחירת סוג המשאב המתאים (לדוגמה,
k8s_pod,k8s_container) וסינון לפי תוויות שרלוונטיות לאשכול Ray (לדוגמה,ray.io/cluster).