Questa pagina mostra come configurare Google Kubernetes Engine (GKE) per raccogliere log e metriche per i cluster Ray in esecuzione su Google Kubernetes Engine (GKE), nonché come visualizzare i log e le metriche di Ray in Cloud Logging e Cloud Monitoring.
Per ulteriori informazioni su Ray e KubeRay, consulta la panoramica di Ray su Google Kubernetes Engine (GKE).
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Abilita l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il
gcloud components updatecomando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
Requisiti e limitazioni
- Prima di abilitare la raccolta dei log per i cluster Ray, devi abilitare la registrazione dei log di sistema e dei workload su un cluster GKE esistente.
- Se abiliti la raccolta dei log per i cluster Ray su un cluster GKE esistente, GKE raccoglie i log solo dai pod Ray appena creati, non dai pod Ray esistenti.
- Per i cluster GKE Standard, devi abilitare Google Cloud Managed Service per Prometheus per abilitare la raccolta delle metriche per i cluster Ray. Per i cluster Autopilot, Google Cloud Managed Service per Prometheus è abilitato per impostazione predefinita.
- Non devi specificare un volume denominato
ray-logsin nessun container Ray nel cluster Ray. In caso contrario, GKE non raccoglierà i log. - La registrazione JSON è disponibile in GKE versione v1.35.1-gke.1616000 e successive. Per abilitare la registrazione JSON strutturata, configura variabili di ambiente specifiche nella specifica del container Ray.
Abilitare la raccolta dei log per un cluster Ray
Puoi abilitare la raccolta dei log per i cluster Ray con cluster GKE Autopilot o Standard nuovi o esistenti. I log di Ray che GKE raccoglie dai cluster Ray sono classificati come log dei container. Sono inclusi tutti i log generati dai nodi di intestazione e worker del cluster Ray.
Puoi abilitare la raccolta dei log per i cluster Ray utilizzando la Google Cloud console o gcloud CLI.
Console
Vai alla pagina Google Kubernetes Engine nella Google Cloud console.
Fai clic su Crea, quindi nella sezione Standard o Autopilot, fai clic su Configura.
Nel riquadro di navigazione, in Cluster, fai clic su Funzionalità.
Nella sezione Operazioni, assicurati che la casella di controllo Sistema e workload sia selezionata.
Nella sezione AI e Machine Learning , seleziona Abilita operatore Ray , quindi Abilita la raccolta dei log per i cluster Ray.
Fai clic su Crea.
Per i cluster Standard, devi anche abilitare Google Cloud Managed Service per Prometheus.
gcloud
Crea un cluster utilizzando l'opzione --addons=RayOperator e l'opzione --enable-ray-cluster-logging:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--addons=RayOperator \
--enable-ray-cluster-logging
Sostituisci quanto segue:
CLUSTER_NAME: il nome del nuovo cluster.LOCATION: la località del nuovo cluster, ad esempio us-central1.
Puoi abilitare la raccolta dei log per i cluster Ray su un cluster esistente utilizzando il
comando
gcloud container clusters update
con l'opzione --addons=RayOperator e l'opzione
--enable-ray-cluster-logging.
Visualizzare i log di Ray
Puoi visualizzare i log raccolti dai cluster Ray in esecuzione su GKE utilizzando Logging.
Vai alla pagina Cloud Logging nella Google Cloud console.
Apri l'editor di query e incolla l'espressione nell'editor di query.
Fai clic su Esegui query.
Puoi utilizzare le seguenti query di esempio in Esplora log:
| Nome query/filtro | Espressione |
|---|---|
| Tutti i log di Ray | resource.type="k8s_container" labels."k8s-pod/ray_io/is-ray-node"="yes" |
| Tutti i log di intestazione di Ray | resource.type="k8s_container" labels."k8s-pod/ray_io/node-type"="head" |
| Tutti i log in un cluster Ray | resource.type="k8s_container" labels."k8s-pod/ray_io/cluster"="RAY_CLUSTER_NAME" |
| Tutti i log dei driver di un job Ray | resource.type="k8s_container" jsonPayload.ray_submission_id="RAY_JOB_SUBMISSION_ID" |
| Tutti i log dei worker di un job 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" |
Abilitare la registrazione strutturata avanzata (opzione consigliata)
La registrazione strutturata avanzata è disponibile per GKE versione v1.35.1-gke.1616000 e successive.
Per impostazione predefinita, i log di Ray vengono acquisiti come stringhe di testo non strutturate nel campo jsonPayload.log in Cloud Logging. Per migliorare le query, l'analisi e l'osservabilità, puoi configurare i cluster Ray in modo che generino log in formato JSON strutturato. Questo formato avanzato analizza i log in coppie chiave-valore dettagliate, consentendo query più rapide basate sui campi su attributi come task_id e job_id. La registrazione strutturata avanzata fornisce etichette di gravità corrette, impedisce la suddivisione dei log su più righe e si integra perfettamente con le funzionalità di Cloud Logging per migliorare l'analisi e il debug.
Per abilitare l'output JSON strutturato, completa i seguenti passaggi:
- Abilita la raccolta dei log per il cluster Ray.
Imposta le seguenti variabili di ambiente nelle specifiche del container Ray nel manifest YAML
RayCluster:RAY_LOGGING_CONFIG_ENCODING="JSON": configura i log delle applicazioni Ray (Ray Core, attori e attività) in modo che utilizzino la codifica JSON strutturata.RAY_BACKEND_LOG_JSON="1": configura i log di sistema di Ray (ad esempio quelli del server GCS e di Raylet) in modo che vengano generati in formato JSON strutturato.
Ad esempio, i seguenti manifest RayCluster includono la sezione env per tutti i container Ray, sia nelle specifiche headGroupSpec sia in quelle 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"Applica il manifest RayCluster aggiornato:
kubectl apply -f your-raycluster.yaml
Query per i log strutturati
| Nome query/filtro | Espressione |
|---|---|
| Tutti i log degli errori per un ID job Ray specifico | resource.type="k8s_container" labels."k8s-pod/ray_io/is-ray-node"="yes" severity=ERROR jsonPayload.job_id="YOUR_JOB_ID" |
| Log per un ID processo worker Ray specifico | resource.type="k8s_container" labels."k8s-pod/ray_io/is-ray-node"="yes" jsonPayload.worker_id="YOUR_WORKER_ID" |
| Log degli errori per un ID attività specifico su un pod worker specifico | 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" |
Abilitare la raccolta delle metriche per un cluster Ray
Puoi abilitare la raccolta delle metriche per i cluster Ray con cluster GKE Autopilot o Standard nuovi o esistenti.
Dopo aver abilitato la raccolta delle metriche per i cluster Ray, GKE raccoglie le metriche dai cluster Ray esistenti e dai nuovi cluster Ray. GKE raccoglie tutte le metriche di sistema esportate da Ray in formato Prometheus.
Puoi abilitare la raccolta delle metriche per i cluster Ray utilizzando la Google Cloud console o gcloud CLI.
Console
Vai alla pagina Google Kubernetes Engine nella Google Cloud console.
Fai clic su Crea, quindi nella sezione Standard o Autopilot, fai clic su Configura.
Nel riquadro di navigazione, in Cluster, fai clic su Funzionalità.
Nella sezione Operazioni, assicurati che la casella di controllo Sistema e workload sia selezionata.
Nella sezione AI e Machine Learning , seleziona Abilita operatore Ray , quindi Abilita la raccolta delle metriche per i cluster Ray.
Fai clic su Crea.
Per i cluster Standard, devi anche abilitare Google Cloud Managed Service per Prometheus.
gcloud
Crea un cluster utilizzando l'opzione --addons=RayOperator e l'opzione --enable-ray-cluster-monitoring:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--addons=RayOperator \
--enable-ray-cluster-monitoring
Sostituisci quanto segue:
CLUSTER_NAME: il nome del nuovo cluster.LOCATION: la località del nuovo cluster, ad esempio us-central1.
Puoi abilitare la raccolta dei log per i cluster Ray su un cluster esistente utilizzando il
gcloud container clusters update
comando con l'opzione --addons=RayOperator e l'opzione
--enable-ray-cluster-monitoring.
Visualizzare le metriche di Ray
Google Cloud Managed Service per Prometheus fornisce una dashboard Panoramica di Ray su GKE preconfigurata che offre una visualizzazione centralizzata delle metriche chiave di Ray. Questo è il modo consigliato per iniziare rapidamente a monitorare i cluster Ray su GKE.
Vai alla dashboard Panoramica di Ray su GKE
La dashboard viene compilata automaticamente quando abiliti la raccolta delle metriche per il cluster Ray.
In alternativa, se vuoi esplorare le singole metriche raccolte dai cluster Ray in esecuzione su GKE, segui questi passaggi:
Vai alla pagina Esplora metriche nella Google Cloud console.
Nel campo Seleziona una metrica, puoi cercare metriche specifiche di Ray. Queste metriche sono in genere precedute da
prometheus/ray_. Esempi includonoprometheus/ray_worker_cpu_seconds_totaloprometheus/ray_memory_bytes_max.Puoi perfezionare ulteriormente la ricerca selezionando il tipo di risorsa appropriato (ad esempio,
k8s_pod,k8s_container) e filtrando in base alle etichette pertinenti al cluster Ray (ad esempio,ray.io/cluster).
Passaggi successivi
- Scopri di più su Ray su Kubernetes.
- Esplora la documentazione di KubeRay.