Google Kubernetes Engine(GKE)의 Ray 클러스터에 대한 로그 및 측정항목 수집 및 보기

이 페이지에서는 Google Kubernetes Engine(GKE)에서 실행되는 Ray 클러스터의 로그 및 측정항목을 수집하도록 Google Kubernetes Engine(GKE)을 구성하는 방법과 Cloud Logging 및 Cloud Monitoring에서 Ray 로그 및 측정항목을 보는 방법을 설명합니다.

Ray 및 KubeRay에 대한 자세한 내용은 Google Kubernetes Engine(GKE)의 Ray 개요를 참조하세요.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치했으면 gcloud components update 명령어를 실행하여 최신 버전을 가져옵니다. 이전 gcloud CLI 버전에서는 이 문서의 명령어를 실행하지 못할 수 있습니다.

요구사항 및 제한사항

  • Ray 클러스터의 로그 수집을 사용 설정하기 전에 기존 GKE 클러스터에서 시스템 및 워크로드 로깅을 사용 설정해야 합니다.
  • 기존 GKE 클러스터에서 Ray 클러스터에 대해 로그 수집을 사용 설정하면 GKE는 새로 생성된 Ray 포드의 로그만 수집하고 기존 Ray 포드의 로그는 수집하지 않습니다.
  • 표준 GKE 클러스터의 경우 Ray 클러스터의 측정항목 수집을 사용 설정하려면 Google Cloud Managed Service for Prometheus를 사용 설정해야합니다. Autopilot 클러스터의 경우 Google Cloud Managed Service for Prometheus가 기본적으로 사용 설정됩니다.
  • Ray 클러스터의 Ray 컨테이너에 ray-logs라는 볼륨을 지정하면 안 됩니다. 배포하면 GKE에서 로그를 수집하지 않습니다.
  • JSON 로깅은 GKE 버전 v1.35.1-gke.1616000 이상에서 사용할 수 있습니다. 구조화된 JSON 로깅을 사용 설정하려면 Ray 컨테이너 사양 내에서 특정 환경 변수를 구성하세요.

Ray 클러스터의 로그 수집 사용 설정

신규 또는 기존 Autopilot 또는 표준 GKE 클러스터가 있는 Ray 클러스터에 대해 로그 수집을 사용 설정할 수 있습니다. GKE가 Ray 클러스터에서 수집하는 Ray 로그는 컨테이너 로그로 분류됩니다. 여기에는 Ray 클러스터 헤더와 작업자 노드에서 생성된 모든 로그가 포함됩니다.

Google Cloud 콘솔 또는 gcloud CLI를 사용하여 Ray 클러스터에 대한 로그 수집을 사용 설정할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 만들기를 클릭한 다음 Standard 또는 Autopilot 섹션에서 구성을 클릭합니다.

  3. 탐색창의 클러스터에서 기능을 클릭합니다.

  4. 작업 섹션에서 시스템 및 워크로드 체크박스가 선택되어 있는지 확인합니다.

  5. AI 및 머신러닝 섹션에서 Ray 연산자 사용 설정을 선택한 다음 Ray 클러스터의 로그 수집 사용 설정을 선택합니다.

  6. 만들기를 클릭합니다.

표준 클러스터의 경우 Google Cloud Managed Service for Prometheus도 사용 설정해야 합니다.

gcloud

--addons=RayOperator 옵션과 --enable-ray-cluster-logging 옵션을 사용하여 클러스터를 만듭니다.

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

다음을 바꿉니다.

  • CLUSTER_NAME: 새 클러스터의 이름
  • LOCATION: 새 클러스터의 위치(예: us-central1)

--addons=RayOperator 옵션과 --enable-ray-cluster-logging 옵션과 함께 gcloud container clusters update 명령어에를 사용하여 기존 클러스터에서 Ray 클러스터에 대한 로그 수집을 사용하도록 설정할 수 있습니다.

Ray 로그 보기

Logging을 사용하여 GKE에서 실행되는 Ray 클러스터에서 수집된 로그를 볼 수 있습니다.

  1. Google Cloud 콘솔에서 Cloud Logging 페이지로 이동합니다.

    Cloud Logging으로 이동

  2. 쿼리 편집기��� 열고 표현식을 쿼리 편집기에 붙여넣습니다.

  3. 쿼리 실행을 클릭합니다.

로그 탐색기에서 다음 예시 쿼리를 사용할 수 있습니다.

쿼리/필터 이름 표현식
모든 Ray 로그
resource.type="k8s_container"
labels."k8s-pod/ray_io/is-ray-node"="yes"
모든 Ray 헤드 로그
resource.type="k8s_container"
labels."k8s-pod/ray_io/node-type"="head"
Ray 클러스터의 모든 로그
resource.type="k8s_container"
labels."k8s-pod/ray_io/cluster"="RAY_CLUSTER_NAME"
Ray 작업의 모든 드라이버 로그
resource.type="k8s_container"
jsonPayload.ray_submission_id="RAY_JOB_SUBMISSION_ID"
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"

향상된 구조화된 로깅 사용 설정 (권장)

향상된 구조화된 로깅은 GKE 버전 v1.35.1-gke.1616000 이상에서 사용할 수 있습니다.

기본적으로 Ray 로그는 Cloud Logging의 jsonPayload.log 필드 내에 비구조화된 텍스트 문자열로 캡처됩니다. 쿼리, 분석, 관측 가능성을 개선하려면 구조화된 JSON 형식으로 로그를 생성하도록 Ray 클러스터를 구성하면 됩니다. 이 향상된 형식은 로그를 세부적인 키-값 쌍으로 파싱하여 task_id, job_id과 같은 속성에 대한 필드 기반 쿼리를 더 빠르게 실행할 수 있습니다. 향상된 구조화된 로깅은 올바른 심각도 라벨을 제공하고, 여러 줄 로그 분할을 방지하며, Cloud Logging 기능과 원활하게 통합되어 분석 및 디버깅을 개선합니다.

구조화된 JSON 출력을 사용 설정하려면 다음 단계를 완료하세요.

  1. Ray 클러스터에 로그 수집 사용 설정
  2. RayCluster YAML 매니페스트의 Ray 컨테이너 사양 내에서 다음 환경 변수를 설정합니다.

    1. RAY_LOGGING_CONFIG_ENCODING="JSON": 구조화된 JSON 인코딩을 사용하도록 Ray 애플리케이션 로그 (Ray Core, 액터, 작업)를 구성합니다.
    2. RAY_BACKEND_LOG_JSON="1": 구조화된 JSON 형식으로 생성되도록 Ray 시스템 로그 (예: GCS 서버 및 Raylet의 로그)를 구성합니다.

    예를 들어 다음 RayCluster 매니페스트에는 headGroupSpec 및 workerGroupSpecs 사양 모두에서 모든 Ray 컨테이너의 env 섹션이 포함됩니���.

    # 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. 업데이트된 RayCluster 매니페스트를 적용합니다. kubectl apply -f your-raycluster.yaml

구조화된 로그 쿼리

쿼리/필터 이름 표현식
특정 Ray 작업 ID의 모든 오류 로그
resource.type="k8s_container"
labels."k8s-pod/ray_io/is-ray-node"="yes"
severity=ERROR
jsonPayload.job_id="YOUR_JOB_ID"
특정 Ray 작업자 프로세스 ID의 로그
resource.type="k8s_container"
labels."k8s-pod/ray_io/is-ray-node"="yes"
jsonPayload.worker_id="YOUR_WORKER_ID"
특정 작업자 포드의 특정 작업 ID에 대한 오류 로그
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"

Ray 클러스터의 측정항목 수집 사용 설정

신규 또는 기존 Autopilot 또는 표준 GKE 클러스터가 있는 Ray 클러스터에 대해 측정항목 수집을 사용 설정할 수 있습니다.

Ray 클러스터의 측정항목 수집을 사용 설정하면 GKE에서 기존 Ray 클러스터와 새 Ray 클러스터의 측정항목을 수집합니다. GKE는 Prometheus 형식으로 Ray가 내보낸 모든 시스템 측정항목을 수집합니다.

Google Cloud 콘솔 또는 gcloud CLI를 사용하여 Ray 클러스터에 대한 측정항목 수집을 사용 설정할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 만들기를 클릭한 다음 Standard 또는 Autopilot 섹션에서 구성을 클릭합니다.

  3. 탐색창의 클러스터에서 기능을 클릭합니다.

  4. 작업 섹션에서 시스템 및 워크로드 체크박스가 선택되어 있는지 확인합니다.

  5. AI 및 머신러닝 섹션에서 Ray 연산자 사용 설정을 선택한 후 Ray 클러스터의 측정항목 수집 사용 설정을 선택합니다.

  6. 만들기를 클릭합니다.

표준 클러스터의 경우 Google Cloud Managed Service for Prometheus도 사용 설정해야 합니다.

gcloud

--addons=RayOperator 옵션과 --enable-ray-cluster-monitoring 옵션을 사용하여 클러스터를 만듭니다.

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

다음을 바꿉니다.

  • CLUSTER_NAME: 새 클러스터의 이름
  • LOCATION: 새 클러스터의 위치(예: us-central1)

--addons=RayOperator 옵션과 --enable-ray-cluster-monitoring 옵션과 함께 gcloud container clusters update 명령어에를 사용하여 기존 클러스터에서 Ray 클러스터에 대한 로그 수집을 사용하도록 설정할 수 있습니다.

Ray 측정항목 보기

Google Cloud Managed Service for Prometheus는 사전 구성된 GKE 기반 Ray 개요 대시보드를 제공하여 주요 Ray 측정항목을 중앙에서 볼 수 있도록 지원합니다. GKE 기반 Ray 클러스터를 빠르게 모니터링하려면 이 방법을 사용하는 것이 좋습니다.

GKE의 Ray 개요 대시보드��� 이동

Ray 클러스터에 대해 측정항목 수집을 사용 설정하면 대시보드가 자동으로 채워집니다.

또는 GKE에서 실행되는 Ray 클러스터에서 수집된 개별 측정항목을 탐색하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 측정항목 탐색기 페이지로 이동합니다.

    측정항목 탐색기로 이동

  2. 측정항목 선택 필드에서 Ray 관련 측정항목을 검색할 수 있습니다. 이러한 측정항목에는 일반적으로 prometheus/ray_라는 프리픽스가 붙습니다. 예를 들면 prometheus/ray_worker_cpu_seconds_total 또는 prometheus/ray_memory_bytes_max입니다.

  3. 적절한 리소스 유형(예: k8s_pod, k8s_container)을 선택하고 Ray 클러스터와 관련된 라벨(예: ray.io/cluster)을 기준으로 필터링하여 검색을 더욱 세분화할 수 있습니다.

다음 단계