Mengumpulkan dan melihat log dan metrik untuk cluster Ray di Google Kubernetes Engine (GKE)

Halaman ini menunjukkan cara mengonfigurasi Google Kubernetes Engine (GKE) untuk mengumpulkan log dan metrik untuk cluster Ray yang berjalan di Google Kubernetes Engine (GKE), serta cara melihat log dan metrik Ray di Cloud Logging dan Cloud Monitoring.

Untuk mengetahui informasi selengkapnya tentang Ray dan KubeRay, lihat Ringkasan Ray di Google Kubernetes Engine (GKE).

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung perintah yang dijalankan dalam dokumen ini.

Persyaratan dan batasan

  • Anda harus mengaktifkan logging sistem dan workload di cluster GKE yang ada sebelum mengaktifkan pengumpulan log untuk cluster Ray.
  • Jika Anda mengaktifkan pengumpulan log untuk cluster Ray di cluster GKE yang ada, GKE hanya akan mengumpulkan log dari Pod Ray yang baru dibuat, bukan dari Pod Ray yang ada.
  • Untuk cluster GKE Standard, Anda harus mengaktifkan Google Cloud Managed Service for Prometheus untuk mengaktifkan pengumpulan metrik untuk cluster Ray. Untuk cluster Autopilot, Google Cloud Managed Service for Prometheus diaktifkan secara default.
  • Anda tidak boleh menentukan volume bernama ray-logs di container Ray mana pun di cluster Ray. Jika tidak, GKE tidak akan mengumpulkan log.
  • Logging JSON tersedia di GKE versi v1.35.1-gke.1616000 dan yang lebih baru. Untuk mengaktifkan logging JSON terstruktur, konfigurasikan variabel lingkungan tertentu dalam spesifikasi container Ray Anda.

Mengaktifkan pengumpulan log untuk cluster Ray

Anda dapat mengaktifkan pengumpulan log untuk cluster Ray dengan cluster GKE Autopilot atau Standard yang baru atau yang sudah ada. Log Ray yang dikumpulkan GKE dari cluster Ray diklasifikasikan sebagai log container. Hal ini mencakup semua log yang dihasilkan oleh node header dan pekerja cluster Ray.

Anda dapat mengaktifkan pengumpulan log untuk cluster Ray menggunakan Google Cloud konsol atau gcloud CLI.

Konsol

  1. Buka halaman Google Kubernetes Engine di Google Cloud konsol.

    Buka Google Kubernetes Engine

  2. Klik Buat , lalu di bagian Standard atau Autopilot, klik Konfigurasi.

  3. Dari panel navigasi, pada bagian Cluster, klik Fitur.

  4. Di bagian Operasi, pastikan kotak centang Sistem dan Workload dicentang.

  5. Di bagian AI dan Machine Learning , pilih Aktifkan Operator Ray , lalu pilih Aktifkan pengumpulan log untuk cluster Ray.

  6. Klik Buat.

Untuk cluster Standard, Anda juga harus mengaktifkan Google Cloud Managed Service for Prometheus.

gcloud

Buat cluster menggunakan opsi --addons=RayOperator dan opsi --enable-ray-cluster-logging:

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

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster baru.
  • LOCATION: lokasi cluster baru, misalnya, us-central1.

Anda dapat mengaktifkan pengumpulan log untuk cluster Ray di cluster yang ada dengan menggunakan gcloud container clusters update perintah dengan opsi --addons=RayOperator dan opsi --enable-ray-cluster-logging.

Melihat log Ray

Anda dapat melihat log yang dikumpulkan dari cluster Ray yang berjalan di GKE menggunakan Logging.

  1. Buka halaman Cloud Logging di Google Cloud konsol.

    Buka Cloud Logging

  2. Buka editor kueri dan tempelkan ekspresi Anda ke editor kueri

  3. Klik Run query

Anda dapat menggunakan contoh kueri berikut di Logs Explorer:

Nama kueri/filter Ekspresi
Semua log Ray
resource.type="k8s_container"
labels."k8s-pod/ray_io/is-ray-node"="yes"
Semua log head Ray
resource.type="k8s_container"
labels."k8s-pod/ray_io/node-type"="head"
Semua log di cluster Ray
resource.type="k8s_container"
labels."k8s-pod/ray_io/cluster"="RAY_CLUSTER_NAME"
Semua log driver dari tugas Ray
resource.type="k8s_container"
jsonPayload.ray_submission_id="RAY_JOB_SUBMISSION_ID"
Semua log pekerja dari tugas 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"

Mengaktifkan logging terstruktur yang ditingkatkan (direkomendasikan)

Logging terstruktur yang ditingkatkan tersedia untuk GKE versi v1.35.1-gke.1616000 dan yang lebih baru.

Secara default, log Ray diambil sebagai string teks tidak terstruktur dalam kolom jsonPayload.log di Cloud Logging. Untuk meningkatkan kueri, analisis, dan kemampuan observasi, Anda dapat mengonfigurasi cluster Ray untuk menghasilkan log dalam format JSON terstruktur. Format yang ditingkatkan ini mengurai log menjadi pasangan nilai kunci yang mendetail, sehingga memungkinkan kueri berbasis kolom yang lebih cepat pada atribut seperti task_id dan job_id. Logging terstruktur yang ditingkatkan memberikan pelabelan tingkat keparahan yang benar, mencegah pemisahan log multi-baris, dan terintegrasi dengan lancar dengan fitur Cloud Logging untuk analisis dan proses debug yang lebih baik.

Untuk mengaktifkan output JSON terstruktur, selesaikan langkah-langkah berikut:

  1. Aktifkan pengumpulan log untuk cluster Ray Anda
  2. Tetapkan variabel lingkungan berikut dalam spesifikasi container Ray Anda di manifes YAML RayCluster:

    1. RAY_LOGGING_CONFIG_ENCODING="JSON": mengonfigurasi log aplikasi Ray (Ray Core, aktor, dan tugas) untuk menggunakan encoding JSON terstruktur.
    2. RAY_BACKEND_LOG_JSON="1": mengonfigurasi log sistem Ray (seperti dari server GCS dan Raylet) agar dibuat dalam format JSON terstruktur.

    Misalnya, manifes RayCluster berikut menyertakan bagian env untuk semua container Ray, dalam spesifikasi headGroupSpec dan 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. Terapkan manifes RayCluster yang diupdate: kubectl apply -f your-raycluster.yaml

Kueri untuk log terstruktur

Nama kueri/filter Ekspresi
Semua log error untuk ID Tugas Ray tertentu
resource.type="k8s_container"
labels."k8s-pod/ray_io/is-ray-node"="yes"
severity=ERROR
jsonPayload.job_id="YOUR_JOB_ID"
Log untuk ID proses pekerja Ray tertentu
resource.type="k8s_container"
labels."k8s-pod/ray_io/is-ray-node"="yes"
jsonPayload.worker_id="YOUR_WORKER_ID"
Log error untuk ID Tugas tertentu di Pod pekerja tertentu
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"

Mengaktifkan pengumpulan metrik untuk cluster Ray

Anda dapat mengaktifkan pengumpulan metrik untuk cluster Ray dengan cluster GKE Autopilot atau Standard yang baru atau yang sudah ada.

Setelah Anda mengaktifkan pengumpulan metrik untuk cluster Ray, GKE akan mengumpulkan metrik dari cluster Ray yang ada dan cluster Ray baru. GKE mengumpulkan semua metrik sistem yang diekspor oleh Ray dalam format Prometheus.

Anda dapat mengaktifkan pengumpulan metrik untuk cluster Ray menggunakan Google Cloud konsol atau gcloud CLI.

Konsol

  1. Buka halaman Google Kubernetes Engine di Google Cloud konsol.

    Buka Google Kubernetes Engine

  2. Klik Buat , lalu di bagian Standard atau Autopilot, klik Konfigurasi.

  3. Dari panel navigasi, pada bagian Cluster, klik Fitur.

  4. Di bagian Operasi, pastikan kotak centang Sistem dan Workload dicentang.

  5. Di bagian AI dan Machine Learning , pilih Aktifkan Operator Ray , lalu pilih Aktifkan pengumpulan metrik untuk cluster Ray.

  6. Klik Buat.

Untuk cluster Standard, Anda juga harus mengaktifkan Google Cloud Managed Service for Prometheus.

gcloud

Buat cluster menggunakan opsi --addons=RayOperator dan opsi --enable-ray-cluster-monitoring:

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

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster baru.
  • LOCATION: lokasi cluster baru, misalnya, us-central1.

Anda dapat mengaktifkan pengumpulan log untuk cluster Ray di cluster yang ada dengan menggunakan gcloud container clusters update perintah dengan opsi --addons=RayOperator dan opsi --enable-ray-cluster-monitoring.

Melihat metrik Ray

Google Cloud Managed Service for Prometheus menyediakan dasbor Ringkasan Ray di GKE yang telah dikonfigurasi sebelumnya dan menawarkan tampilan terpusat metrik Ray utama. Ini adalah cara yang direkomendasikan untuk memulai pemantauan cluster Ray Anda di GKE dengan cepat.

Buka dasbor Ringkasan Ray di GKE

Dasbor akan otomatis diisi saat Anda mengaktifkan pengumpulan metrik untuk cluster Ray.

Atau, jika Anda ingin menjelajahi metrik individual yang dikumpulkan dari cluster Ray yang berjalan di GKE, ikuti langkah-langkah berikut:

  1. Buka halaman Metrics Explorer di Google Cloud konsol.

    Buka Metrics Explorer

  2. Di kolom Select a metric, Anda dapat menelusuri metrik khusus Ray. Metrik ini biasanya diawali dengan prometheus/ray_. Contohnya mencakup prometheus/ray_worker_cpu_seconds_total atau prometheus/ray_memory_bytes_max.

  3. Anda dapat lebih menyempurnakan penelusuran dengan memilih jenis resource yang sesuai (misalnya, k8s_pod, k8s_container) dan memfilter berdasarkan label yang relevan dengan cluster Ray Anda (misalnya, ray.io/cluster).

Langkah berikutnya