Collecter et afficher les journaux et les métriques des clusters Ray sur Google Kubernetes Engine (GKE)

Cette page explique comment configurer Google Kubernetes Engine (GKE) pour collecter les journaux et les métriques des clusters Ray exécutés sur Google Kubernetes Engine (GKE), et comment afficher les journaux et les métriques Ray dans Cloud Logging et Cloud Monitoring.

Pour en savoir plus sur Ray et KubeRay, consultez Présentation de Ray sur Google Kubernetes Engine (GKE).

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser la Google Cloud CLI pour cette tâche, installez et initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande gcloud components update. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.

Conditions requises et limites

  • Vous devez activer la journalisation du système et des charges de travail sur un cluster GKE existant avant d'activer la collecte des journaux pour les clusters Ray.
  • Si vous activez la collecte de journaux pour les clusters Ray sur un cluster GKE existant, GKE ne collecte que les journaux des pods Ray nouvellement créés, et non ceux des pods Ray existants.
  • Pour les clusters GKE Standard, vous devez activer Google Cloud Managed Service pour Prometheus afin d'activer la collecte de métriques pour les clusters Ray. Pour les clusters Autopilot, Google Cloud Managed Service pour Prometheus est activé par défaut.
  • Vous ne devez pas spécifier de volume nommé ray-logs dans un conteneur Ray du cluster Ray. Sinon, GKE ne collecte pas les journaux.
  • La journalisation JSON est disponible dans GKE version v1.35.1-gke.1616000 et ultérieure. Pour activer la journalisation JSON structurée, configurez des variables d'environnement spécifiques dans la spécification de votre conteneur Ray.

Activer la collecte de journaux pour un cluster Ray

Vous pouvez activer la collecte de journaux pour les clusters Ray avec des clusters GKE Autopilot ou standards nouveaux ou existants. Les journaux Ray que GKE collecte à partir des clusters Ray sont classés comme journaux de conteneurs. Cela inclut tous les journaux produits par les nœuds principaux et de nœuds de calcul du cluster Ray.

Vous pouvez activer la collecte des journaux pour les clusters Ray à l'aide de la console Google Cloud ou de la gcloud CLI.

Console

  1. Accédez à la page Google Kubernetes Engine dans la console Google Cloud .

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer, puis sur Configurer dans la section "Standard" ou "Autopilot".

  3. Dans le volet de navigation, sous Cluster, cliquez sur Fonctionnalités.

  4. Dans la section Opérations, assurez-vous que la case Système et charges de travail est cochée.

  5. Dans la section IA et machine learning, sélectionnez Activer l'opérateur Ray, puis Activer la collecte de journaux pour les clusters Ray.

  6. Cliquez sur Créer.

Pour les clusters Standard, vous devez également activer Google Cloud Managed Service pour Prometheus.

gcloud

Créez un cluster à l'aide des options --addons=RayOperator et --enable-ray-cluster-logging :

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

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du nouveau cluster
  • LOCATION : emplacement du nouveau cluster (par exemple, us-central1).

Vous pouvez activer la collecte de journaux pour les clusters Ray sur un cluster existant à l'aide de la commande gcloud container clusters update avec les options --addons=RayOperator et --enable-ray-cluster-logging.

Afficher les journaux Ray

Vous pouvez afficher les journaux collectés à partir des clusters Ray exécutés sur GKE à l'aide de Logging.

  1. Accédez à la page Cloud Logging dans la console Google Cloud .

    Accéder à Cloud Logging

  2. Ouvrez l'éditeur de requête et collez votre expression dans l'éditeur de requête.

  3. Cliquez sur Exécuter la requête.

Vous pouvez utiliser les exemples de requêtes suivants dans l'explorateur de journaux :

Nom de la requête/du filtre Expression
Tous les journaux Ray
resource.type="k8s_container"
labels."k8s-pod/ray_io/is-ray-node"="yes"
Tous les journaux Ray principaux
resource.type="k8s_container"
labels."k8s-pod/ray_io/node-type"="head"
Tous les journaux d'un cluster Ray
resource.type="k8s_container"
labels."k8s-pod/ray_io/cluster"="RAY_CLUSTER_NAME"
Tous les journaux de pilote d'un job Ray
resource.type="k8s_container"
jsonPayload.ray_submission_id="RAY_JOB_SUBMISSION_ID"
Tous les journaux de nœuds de calcul d'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"

Activer la journalisation structurée améliorée (recommandé)

La journalisation structurée améliorée est disponible pour GKE version v1.35.1-gke.1616000 et ultérieures.

Par défaut, les journaux Ray sont capturés sous forme de chaînes de texte non structurées dans le champ jsonPayload.log de Cloud Logging. Pour améliorer les requêtes, l'analyse et l'observabilité, vous pouvez configurer les clusters Ray afin qu'ils génèrent des journaux au format JSON structuré. Ce format amélioré analyse les journaux en paires clé-valeur détaillées, ce qui permet d'effectuer des requêtes plus rapides basées sur des champs pour des attributs tels que task_id et job_id. La journalisation structurée améliorée fournit un libellé de gravité correct, empêche la division des journaux sur plusieurs lignes et s'intègre parfaitement aux fonctionnalités Cloud Logging pour améliorer l'analyse et le débogage.

Pour activer la sortie JSON structurée, procédez comme suit :

  1. Activez l'option Collecte de journaux activée pour votre cluster Ray.
  2. Définissez les variables d'environnement suivantes dans les spécifications de votre conteneur Ray dans le fichier manifeste YAML RayCluster :

    1. RAY_LOGGING_CONFIG_ENCODING="JSON" : configure les journaux d'application Ray (Ray Core, acteurs et tâches) pour qu'ils utilisent l'encodage JSON structuré.
    2. RAY_BACKEND_LOG_JSON="1" : configure les journaux système Ray (tels que ceux du serveur GCS et de Raylet) pour qu'ils soient générés au format JSON structuré.

    Par exemple, les fichiers manifestes RayCluster suivants incluent la section "env" pour tous les conteneurs Ray, dans les spécifications headGroupSpec et 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. Appliquez le fichier manifeste RayCluster mis à jour : kubectl apply -f your-raycluster.yaml

Requêtes pour les journaux structurés

Nom de la requête/du filtre Expression
Tous les journaux d'erreurs pour un ID de job Ray spécifique
resource.type="k8s_container"
labels."k8s-pod/ray_io/is-ray-node"="yes"
severity=ERROR
jsonPayload.job_id="YOUR_JOB_ID"
Journaux d'un ID de processus de nœud de calcul Ray spécifique
resource.type="k8s_container"
labels."k8s-pod/ray_io/is-ray-node"="yes"
jsonPayload.worker_id="YOUR_WORKER_ID"
Journaux d'erreurs pour un ID de tâche spécifique sur un pod de nœud de calcul spécifique
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"

Activer la collecte de métriques pour un cluster Ray

Vous pouvez activer la collecte de métriques pour les clusters Ray avec des clusters GKE Autopilot ou standards nouveaux ou existants.

Une fois que vous avez activé la collecte de métriques pour les clusters Ray, GKE collecte les métriques des clusters Ray existants et des nouveaux clusters Ray. GKE collecte toutes les métriques système exportées par Ray au format Prometheus.

Vous pouvez activer la collecte de métriques pour les clusters Ray à l'aide de la consoleGoogle Cloud ou de gcloud CLI.

Console

  1. Accédez à la page Google Kubernetes Engine dans la console Google Cloud .

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer, puis sur Configurer dans la section "Standard" ou "Autopilot".

  3. Dans le volet de navigation, sous Cluster, cliquez sur Fonctionnalités.

  4. Dans la section Opérations, assurez-vous que la case Système et charges de travail est cochée.

  5. Dans la section IA et machine learning, sélectionnez Activer l'opérateur Ray, puis Activer la collecte de métriques pour les clusters Ray.

  6. Cliquez sur Créer.

Pour les clusters Standard, vous devez également activer Google Cloud Managed Service pour Prometheus.

gcloud

Créez un cluster à l'aide des options --addons=RayOperator et --enable-ray-cluster-monitoring :

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

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du nouveau cluster
  • LOCATION : emplacement du nouveau cluster (par exemple, us-central1).

Vous pouvez activer la collecte de journaux pour les clusters Ray sur un cluster existant à l'aide de la commande gcloud container clusters update avec les options --addons=RayOperator et --enable-ray-cluster-monitoring.

Afficher les métriques Ray

Google Cloud Managed Service pour Prometheus fournit un tableau de bord Présentation de Ray sur GKE préconfiguré qui offre une vue centralisée des principales métriques Ray. Il s'agit de la méthode recommandée pour commencer rapidement à surveiller vos clusters Ray sur GKE.

Accéder au tableau de bord "Présentation de Ray sur GKE"

Le tableau de bord est automatiquement renseigné lorsque vous activez la collecte de métriques pour votre cluster Ray.

Si vous souhaitez explorer les métriques individuelles collectées à partir des clusters Ray exécutés sur GKE, procédez comme suit :

  1. Accédez à la page Explorateur de métriques dans la console Google Cloud .

    Accéder à l'explorateur de métriques

  2. Dans le champ Sélectionner une métrique, vous pouvez rechercher des métriques spécifiques à Ray. Ces métriques sont généralement précédées du préfixe prometheus/ray_. Par exemple, prometheus/ray_worker_cpu_seconds_total ou prometheus/ray_memory_bytes_max.

  3. Vous pouvez affiner votre recherche en sélectionnant le type de ressource approprié (par exemple, k8s_pod, k8s_container) et en filtrant par libellés pertinents pour votre cluster Ray (par exemple, ray.io/cluster).

Étapes suivantes