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-logsdans 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
Accédez à la page Google Kubernetes Engine dans la console Google Cloud .
Cliquez sur Créer, puis sur Configurer dans la section "Standard" ou "Autopilot".
Dans le volet de navigation, sous Cluster, cliquez sur Fonctionnalités.
Dans la section Opérations, assurez-vous que la case Système et charges de travail est cochée.
Dans la section IA et machine learning, sélectionnez Activer l'opérateur Ray, puis Activer la collecte de journaux pour les clusters Ray.
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 clusterLOCATION: 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.
Accédez à la page Cloud Logging dans la console Google Cloud .
Ouvrez l'éditeur de requête et collez votre expression dans l'éditeur de requête.
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 :
- Activez l'option Collecte de journaux activée pour votre cluster Ray.
Définissez les variables d'environnement suivantes dans les spécifications de votre conteneur Ray dans le fichier manifeste YAML
RayCluster: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é.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"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
Accédez à la page Google Kubernetes Engine dans la console Google Cloud .
Cliquez sur Créer, puis sur Configurer dans la section "Standard" ou "Autopilot".
Dans le volet de navigation, sous Cluster, cliquez sur Fonctionnalités.
Dans la section Opérations, assurez-vous que la case Système et charges de travail est cochée.
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.
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 clusterLOCATION: 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 :
Accédez à la page Explorateur de métriques dans la console Google Cloud .
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_totalouprometheus/ray_memory_bytes_max.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
- Découvrez Ray sur Kubernetes.
- Consultez la documentation de KubeRay.