Recopila y consulta registros y métricas de los clústeres de Ray en Google Kubernetes Engine (GKE)

En esta página, se muestra cómo configurar Google Kubernetes Engine (GKE) para recopilar registros y métricas de los clústeres de Ray que se ejecutan en Google Kubernetes Engine (GKE), además de cómo ver los registros y las métricas de Ray en Cloud Logging y Cloud Monitoring.

Para obtener más información sobre Ray y KubeRay, consulta Descripción general de Ray en Google Kubernetes Engine (GKE).

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando gcloud components update para obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos que se describen en este documento.

Requisitos y limitaciones

  • Debes habilitar el registro del sistema y de las cargas de trabajo en un clúster de GKE existente antes de habilitar la recopilación de registros para los clústeres de Ray.
  • Si habilitas la recopilación de registros para clústeres de Ray en un clúster de GKE existente, GKE solo recopila registros de los Pods de Ray creados recientemente, no de los Pods de Ray existentes.
  • En el caso de los clústeres de GKE estándar, debes habilitar Google Cloud Managed Service para Prometheus para habilitar la recopilación de métricas para los clústeres de Ray. En el caso de los clústeres de Autopilot, Google Cloud Managed Service para Prometheus está habilitado de forma predeterminada.
  • No debes especificar un volumen llamado ray-logs en ningún contenedor de Ray del clúster de Ray. De lo contrario, GKE no recopilará registros.
  • El registro en formato JSON está disponible en la versión v1.35.1-gke.1616000 y posteriores de GKE. Para habilitar el registro JSON estructurado, configura variables de entorno específicas dentro de la especificación de tu contenedor de Ray.

Habilita la recopilación de registros para un clúster de Ray

Puedes habilitar la recopilación de registros para clústeres de Ray con clústeres nuevos o existentes de Autopilot o GKE Standard. Los registros de Ray que GKE recopila de los clústeres de Ray se clasifican como registros de contenedores. Esto incluye todos los registros que producen los nodos principales y de trabajo del clúster de Ray.

Puedes habilitar la recopilación de registros para los clústeres de Ray con la consola de Google Cloud o gcloud CLI.

Console

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud .

    Ir a Google Kubernetes Engine

  2. Haz clic en Crear y, luego, en la sección Standard o Autopilot, haz clic en Configurar.

  3. En el panel de navegación, en Clúster, haz clic en Funciones.

  4. En la sección Operaciones, asegúrate de que esté seleccionada la casilla de verificación Sistema y cargas de trabajo.

  5. En la sección IA y aprendizaje automático, selecciona Habilitar operador de Ray y, luego, selecciona Habilitar la recopilación de registros para clústeres de Ray.

  6. Haz clic en Crear.

En el caso de los clústeres estándar, también debes habilitar Google Cloud Managed Service para Prometheus.

gcloud

Crea un clúster con las opciones --addons=RayOperator y --enable-ray-cluster-logging:

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --addons=RayOperator \
    --enable-ray-cluster-logging

Reemplaza lo siguiente:

  • CLUSTER_NAME es el nombre del clúster nuevo.
  • LOCATION: Es la ubicación del clúster nuevo, por ejemplo, us-central1.

Puedes habilitar la recopilación de registros para clústeres de Ray en un clúster existente con el comando gcloud container clusters update con las opciones --addons=RayOperator y --enable-ray-cluster-logging.

Visualiza los registros de Ray

Puedes ver los registros recopilados de los clústeres de Ray que se ejecutan en GKE con Logging.

  1. Ve a la página Cloud Logging en la consola de Google Cloud .

    Ir a Cloud Logging

  2. Abre el editor de consultas y pega tu expresión en él.

  3. Haz clic en Ejecutar consulta.

Puedes usar las siguientes consultas de ejemplo en el Explorador de registros:

Nombre de la consulta o del filtro Expresión
Todos los registros de Ray
resource.type="k8s_container"
labels."k8s-pod/ray_io/is-ray-node"="yes"
Todos los registros del nodo principal de Ray
resource.type="k8s_container"
labels."k8s-pod/ray_io/node-type"="head"
Todos los registros de un clúster de Ray
resource.type="k8s_container"
labels."k8s-pod/ray_io/cluster"="RAY_CLUSTER_NAME"
Todos los registros del controlador de un trabajo de Ray
resource.type="k8s_container"
jsonPayload.ray_submission_id="RAY_JOB_SUBMISSION_ID"
Todos los registros de trabajadores de un trabajo de 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"

Habilita el registro estructurado mejorado (recomendado)

El registro estructurado mejorado está disponible para la versión v1.35.1-gke.1616000 y posteriores de GKE.

De forma predeterminada, los registros de Ray se capturan como cadenas de texto no estructuradas dentro del campo jsonPayload.log en Cloud Logging. Para mejorar las consultas, el análisis y la observabilidad, puedes configurar los clústeres de Ray para que generen registros en un formato JSON estructurado. Este formato mejorado analiza los registros en pares clave-valor detallados, lo que permite realizar consultas más rápidas basadas en campos sobre atributos como task_id y job_id. El registro estructurado mejorado proporciona un etiquetado correcto de la gravedad, evita la división de registros de varias líneas y se integra sin problemas con las funciones de Cloud Logging para mejorar el análisis y la depuración.

Para habilitar la salida JSON estructurada, completa los siguientes pasos:

  1. Habilita la recopilación de registros para tu clúster de Ray
  2. Establece las siguientes variables de entorno dentro de las especificaciones de tu contenedor de Ray en el manifiesto YAML RayCluster:

    1. RAY_LOGGING_CONFIG_ENCODING="JSON": Configura los registros de la aplicación de Ray (Ray Core, actores y tareas) para que usen la codificación JSON estructurada.
    2. RAY_BACKEND_LOG_JSON="1": Configura los registros del sistema de Ray (como los del servidor de GCS y Raylet) para que se generen en formato JSON estructurado.

    Por ejemplo, los siguientes manifiestos de RayCluster incluyen la sección env para todos los contenedores de Ray, tanto en las especificaciones de headGroupSpec como en las de 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. Aplica el manifiesto de RayCluster actualizado: kubectl apply -f your-raycluster.yaml

Consultas para registros estructurados

Nombre de la consulta o del filtro Expresión
Todos los registros de errores para un ID de trabajo de Ray específico
resource.type="k8s_container"
labels."k8s-pod/ray_io/is-ray-node"="yes"
severity=ERROR
jsonPayload.job_id="YOUR_JOB_ID"
Registros de un ID de proceso de trabajador de Ray específico
resource.type="k8s_container"
labels."k8s-pod/ray_io/is-ray-node"="yes"
jsonPayload.worker_id="YOUR_WORKER_ID"
Registros de errores de un ID de tarea específico en un Pod de trabajador específico
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"

Habilita la recopilación de métricas para un clúster de Ray

Puedes habilitar la recopilación de métricas para clústeres de Ray con clústeres nuevos o existentes de Autopilot o GKE Standard.

Después de habilitar la recopilación de métricas para los clústeres de Ray, GKE recopila métricas de los clústeres de Ray existentes y los nuevos. GKE recopila todas las métricas del sistema que Ray exporta en formato de Prometheus.

Puedes habilitar la recopilación de métricas para clústeres de Ray con la consola deGoogle Cloud o gcloud CLI.

Console

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud .

    Ir a Google Kubernetes Engine

  2. Haz clic en Crear y, luego, en la sección Standard o Autopilot, haz clic en Configurar.

  3. En el panel de navegación, en Clúster, haz clic en Funciones.

  4. En la sección Operaciones, asegúrate de que esté seleccionada la casilla de verificación Sistema y cargas de trabajo.

  5. En la sección IA y aprendizaje automático, selecciona Habilitar operador de Ray y, luego, Habilitar la recopilación de métricas para los clústeres de Ray.

  6. Haz clic en Crear.

En el caso de los clústeres estándar, también debes habilitar Google Cloud Managed Service para Prometheus.

gcloud

Crea un clúster con las opciones --addons=RayOperator y --enable-ray-cluster-monitoring:

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --addons=RayOperator \
    --enable-ray-cluster-monitoring

Reemplaza lo siguiente:

  • CLUSTER_NAME es el nombre del clúster nuevo.
  • LOCATION: Es la ubicación del clúster nuevo, por ejemplo, us-central1.

Puedes habilitar la recopilación de registros para clústeres de Ray en un clúster existente con el comando gcloud container clusters update con las opciones --addons=RayOperator y --enable-ray-cluster-monitoring.

Visualiza las métricas de Ray

Google Cloud Managed Service para Prometheus proporciona un panel Ray on GKE Overview preconfigurado que ofrece una vista centralizada de las métricas clave de Ray. Esta es la forma recomendada de comenzar rápidamente a supervisar tus clústeres de Ray en GKE.

Ir al panel de descripción general de Ray en GKE

El panel se completa automáticamente cuando habilitas la recopilación de métricas para tu clúster de Ray.

Como alternativa, si deseas explorar las métricas individuales recopiladas de los clústeres de Ray que se ejecutan en GKE, sigue estos pasos:

  1. Ve a la página Explorador de métricas en la consola de Google Cloud .

    Ir al Explorador de métricas

  2. En el campo Seleccionar una métrica, puedes buscar métricas específicas de Ray. Por lo general, estas métricas tienen el prefijo prometheus/ray_. Los ejemplos incluyen prometheus/ray_worker_cpu_seconds_total o prometheus/ray_memory_bytes_max.

  3. También puedes definir mejor tu búsqueda seleccionando el tipo de recurso adecuado (por ejemplo, k8s_pod, k8s_container) y filtrando por etiquetas relevantes para tu clúster de Ray (por ejemplo, ray.io/cluster).

¿Qué sigue?