Raccogliere e visualizzare log e metriche per i cluster Ray su Google Kubernetes Engine (GKE)

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 update comando. 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-logs in 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

  1. Vai alla pagina Google Kubernetes Engine nella Google Cloud console.

    Vai a Google Kubernetes Engine

  2. Fai clic su Crea, quindi nella sezione Standard o Autopilot, fai clic su Configura.

  3. Nel riquadro di navigazione, in Cluster, fai clic su Funzionalità.

  4. Nella sezione Operazioni, assicurati che la casella di controllo Sistema e workload sia selezionata.

  5. Nella sezione AI e Machine Learning , seleziona Abilita operatore Ray , quindi Abilita la raccolta dei log per i cluster Ray.

  6. 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.

  1. Vai alla pagina Cloud Logging nella Google Cloud console.

    Vai a Cloud Logging

  2. Apri l'editor di query e incolla l'espressione nell'editor di query.

  3. 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:

  1. Abilita la raccolta dei log per il cluster Ray.
  2. Imposta le seguenti variabili di ambiente nelle specifiche del container Ray nel manifest YAML RayCluster:

    1. RAY_LOGGING_CONFIG_ENCODING="JSON": configura i log delle applicazioni Ray (Ray Core, attori e attività) in modo che utilizzino la codifica JSON strutturata.
    2. 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"
    
  3. 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

  1. Vai alla pagina Google Kubernetes Engine nella Google Cloud console.

    Vai a Google Kubernetes Engine

  2. Fai clic su Crea, quindi nella sezione Standard o Autopilot, fai clic su Configura.

  3. Nel riquadro di navigazione, in Cluster, fai clic su Funzionalità.

  4. Nella sezione Operazioni, assicurati che la casella di controllo Sistema e workload sia selezionata.

  5. Nella sezione AI e Machine Learning , seleziona Abilita operatore Ray , quindi Abilita la raccolta delle metriche per i cluster Ray.

  6. 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:

  1. Vai alla pagina Esplora metriche nella Google Cloud console.

    Vai a Esplora metriche

  2. Nel campo Seleziona una metrica, puoi cercare metriche specifiche di Ray. Queste metriche sono in genere precedute da prometheus/ray_. Esempi includono prometheus/ray_worker_cpu_seconds_total o prometheus/ray_memory_bytes_max.

  3. 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