Colete e visualize registros e métricas dos clusters Ray no Google Kubernetes Engine (GKE)

Nesta página, mostramos como configurar o Google Kubernetes Engine (GKE) para coletar registros e métricas dos clusters Ray em execução no Google Kubernetes Engine (GKE), além de visualizar registros e métricas do Ray no Cloud Logging e no Cloud Monitoring.

Para mais mais informações sobre Ray e KubeRay, Visão geral do Ray no Google Kubernetes Engine (GKE).

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ativar a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Se você quiser usar a Google Cloud CLI para essa tarefa, instale e, em seguida, inicialize a CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando o comando gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.

Requisitos e limitações

  • Ative a geração de registros do sistema e de cargas de trabalho em uma instância antes de ativar a coleta de registros para clusters Ray.
  • Se você ativar a coleta de registros para clusters Ray em um o cluster do GKE, o GKE só coleta registros criou os pods do Ray, e não dos pods do Ray existentes.
  • Para clusters padrão do GKE, você precisa ativar o Google Cloud Managed Service para Prometheus para ativar a coleta de métricas em clusters do Ray. Nos clusters do Autopilot, o Google Cloud Managed Service para Prometheus é ativado pela padrão.
  • Não é possível implantar um volume chamado ray-logs em qualquer contêiner do Ray no cluster do Ray. Caso contrário, o GKE não vai coletar registros.
  • A geração de registros JSON está disponível na versão v1.35.1-gke.1616000 do GKE e mais recentes. Para ativar a geração de registros JSON estruturada, configure variáveis de ambiente específicas na especificação do contêiner do Ray.

Ativar a coleta de registros em um cluster do Ray

É possível ativar a coleta de registros para clusters Ray com recursos novos ou atuais clusters do GKE Autopilot ou Standard. O raio que o GKE coleta nos clusters do Ray são classificados como registros de contêiner do Compute Engine. Isso inclui todos os registros produzidos pelo cabeçalho do cluster Ray e nós de trabalho.

É possível ativar a coleta de registros para clusters Ray usando o Google Cloud console ou a CLI gcloud.

Console

  1. Acesse a página do Google Kubernetes Engine no Google Cloud console do.

    Acessar o Google Kubernetes Engine

  2. Clique em Criar e, na seção Standard ou Autopilot, clique em Configurar.

  3. No painel de navegação, em Cluster, clique em Recursos.

  4. Na seção Operações, verifique se o painel Sistema e cargas de trabalho caixa de seleção está marcada.

  5. Na seção IA e machine learning, selecione Ativar Operador Ray e, em seguida, Ativar coleta de registros para Clusters do Ray.

  6. Clique em Criar.

Para clusters padrão, você também precisa ativar o Serviço Gerenciado do Google Cloud para Prometheus.

gcloud

Crie um cluster usando a opção --addons=RayOperator e o Opção --enable-ray-cluster-logging:

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

Substitua:

  • CLUSTER_NAME: o nome do novo cluster;
  • LOCATION: o local do novo cluster, por exemplo, us-central1.

É possível ativar a coleta de registros para clusters Ray em um cluster atual usando o gcloud container clusters update comando com a opção --addons=RayOperator e a opção --enable-ray-cluster-logging.

Ver registros do Ray

É possível visualizar os registros coletados de clusters do Ray em execução no GKE usando o Logging.

  1. Acesse a página Cloud Logging no Google Cloud console do.

    Acessar o Cloud Logging

  2. Abra o editor de consultas e cole sua expressão nele.

  3. Clique em Executar consulta

É possível usar os seguintes exemplos de consultas na Análise de registros:

Nome da consulta/filtro Expressão
Todos os registros do Ray
resource.type="k8s_container"
labels."k8s-pod/ray_io/is-ray-node"="yes"
Todos os registros de direção do Ray
resource.type="k8s_container"
labels."k8s-pod/ray_io/node-type"="head"
Todos os registros em um cluster do Ray
resource.type="k8s_container"
labels."k8s-pod/ray_io/cluster"="RAY_CLUSTER_NAME"
Todos os registros de driver de um job do Ray
resource.type="k8s_container"
jsonPayload.ray_submission_id="RAY_JOB_SUBMISSION_ID"
Todos os registros de worker de um job do 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"

Ativar a geração de registros estruturada aprimorada (recomendado)

A geração de registros estruturada aprimorada está disponível para a versão v1.35.1-gke.1616000 do GKE e mais recentes.

Por padrão, os registros do Ray são capturados como strings de texto não estruturadas no campo jsonPayload.log no Cloud Logging. Para melhorar a consulta, a análise e a observabilidade, é possível configurar clusters do Ray para gerar registros em um formato JSON estruturado. Esse formato aprimorado analisa registros em pares de chave-valor detalhados, permitindo consultas mais rápidas e baseadas em campos em atributos como task_id e job_id. A geração de registros estruturada aprimorada fornece a rotulagem de gravidade correta, evitando a divisão de registros de várias linhas e a integração perfeita com os recursos do Cloud Logging para análise e depuração aprimoradas.

Para ativar a saída JSON estruturada, siga estas etapas:

  1. Ativar a coleta de registros para o cluster do Ray
  2. Defina as seguintes variáveis de ambiente nas especificaç��es do contêiner do Ray no manifesto YAML RayCluster:

    1. RAY_LOGGING_CONFIG_ENCODING="JSON": configura os registros de aplicativos do Ray (Ray Core, atores e tarefas) para usar a codificação JSON estruturada.
    2. RAY_BACKEND_LOG_JSON="1": configura os registros do sistema Ray (como os do servidor GCS e do Raylet) para serem gerados no formato JSON estruturado.

    Por exemplo, os seguintes manifestos do RayCluster incluem a seção env para todos os contêineres do Ray, nas especificações headGroupSpec e 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. Aplique o manifesto do RayCluster atualizado: kubectl apply -f your-raycluster.yaml

Consultas para registros estruturados

Nome da consulta/filtro Expressão
Todos os registros de erro de um código da tarefa do 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 um ID de processo de worker do Ray específico
resource.type="k8s_container"
labels."k8s-pod/ray_io/is-ray-node"="yes"
jsonPayload.worker_id="YOUR_WORKER_ID"
Registros de erros de um ID de tarefa específico em um pod de worker 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"

Ativar a coleta de métricas de um cluster Ray

É possível ativar a coleta de métricas para clusters Ray com recursos novos ou atuais clusters do GKE Autopilot ou Standard.

Depois de ativar a coleta de métricas para clusters Ray, o GKE coleta métricas de clusters Ray atuais e novos. O GKE coleta todas as métricas do sistema exportadas pelo Ray no Prometheus formato.

É possível ativar a coleta de métricas para clusters Ray usando o Google Cloud console do Google Cloud ou a CLI gcloud.

Console

  1. Acesse a página do Google Kubernetes Engine no Google Cloud console do.

    Acessar o Google Kubernetes Engine

  2. Clique em Criar e, na seção Standard ou Autopilot, clique em Configurar.

  3. No painel de navegação, em Cluster, clique em Recursos.

  4. Na seção Operações, verifique se o painel Sistema e cargas de trabalho caixa de seleção está marcada.

  5. Na seção IA e machine learning, selecione Ativar Operador Ray e, em seguida, Ativar coleta de métricas para Clusters do Ray.

  6. Clique em Criar.

Para clusters padrão, você também precisa ativar o Serviço Gerenciado do Google Cloud para Prometheus.

gcloud

Crie um cluster usando a opção --addons=RayOperator e o Opção --enable-ray-cluster-monitoring:

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

Substitua:

  • CLUSTER_NAME: o nome do novo cluster;
  • LOCATION: o local do novo cluster, por exemplo, us-central1.

É possível ativar a coleta de registros para clusters Ray em um cluster atual usando o gcloud container clusters update com a opção --addons=RayOperator e a --enable-ray-cluster-monitoring.

Conferir métricas do Ray

Google Cloud Managed Service para Prometheus fornece um painel Visão geral do Ray no GKE pré-configurado que oferece uma visualização centralizada das principais métricas do Ray. Essa é a maneira recomendada de começar a monitorar seus clusters do Ray no GKE.

Acessar o painel Visão geral do Ray no GKE

O painel é preenchido automaticamente quando você ativa a coleta de métricas para o cluster do Ray.

Como alternativa, se você quiser explorar métricas individuais coletadas de clusters do Ray em execução no GKE, siga estas etapas:

  1. Acesse a página do Metrics Explorer no Google Cloud console do Cloud.

    Acessar o Metrics Explorer

  2. No campo Selecionar uma métrica, é possível pesquisar métricas específicas do Ray. Essas métricas geralmente têm o prefixo prometheus/ray_. Os exemplos incluem prometheus/ray_worker_cpu_seconds_total ou prometheus/ray_memory_bytes_max.

  3. É possível refinar ainda mais a pesquisa selecionando o tipo de recurso apropriado (por exemplo, k8s_pod, k8s_container) e filtrando por rótulos relevantes para o cluster do Ray (por exemplo, ray.io/cluster).

A seguir