Memantau peristiwa ketahanan dengan dasbor

Jika Anda tertarik dengan cluster pelatihan Gemini Enterprise Agent Platform, hubungi sales representative Anda untuk mendapatkan akses.

Cluster pelatihan menjalankan health check otomatis pada node Anda dan melakukan intervensi saat pemeriksaan gagal. Misalnya, setelah mengidentifikasi error XID fatal, skrip ini dapat mengosongkan node, mengantrekan ulang tugas Slurm yang terpengaruh, dan membuat ulang node. Setiap intervensi ini ditulis ke log project Anda sebagai peristiwa ketahanan.

Halaman ini menunjukkan cara membuat dasbor Cloud Monitoring kustom yang memetakan peristiwa ketahanan tersebut di samping status Slurm node komputasi Anda, sehingga Anda dapat melihat tindakan pemulihan yang dilakukan layanan dan hubungannya dengan status cluster Anda. Dasbor memiliki dua diagram:

  • Status node Slurm: jumlah node di setiap status Slurm dari waktu ke waktu, yang diambil dari metrik hypercomputecluster.googleapis.com/slurm/node_state.
  • Peristiwa ketahanan: jumlah peristiwa ketahanan, yang dikelompokkan berdasarkan jenis peristiwa, yang diambil dari metrik berbasis log yang Anda buat di bagian berikutnya.
Dasbor dengan dua diagram: node di setiap status Slurm dari waktu ke waktu, dan diagram batang bertumpuk yang menghitung peristiwa ketahanan berdasarkan jenis peristiwa.
Gambar 1. Membaca kedua diagram bersama-sama menunjukkan efek pemulihan: jumlah node nonaktif menurun saat layanan mengganti node yang gagal dalam health check prolog, dan peristiwa yang menyebabkannya muncul di bawahnya.

Sebelum memulai

Instal dan lakukan inisialisasi pada Google Cloud CLI, lalu tetapkan project yang berisi cluster pelatihan Anda:

gcloud auth login
gcloud config set project PROJECT_ID

Ganti PROJECT_ID dengan ID project Anda.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk membuat metrik berbasis log dan dasbor, minta administrator untuk memberi Anda peran IAM berikut pada project:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk membuat metrik berbasis log dan dasbor. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk membuat metrik berbasis log dan dasbor:

  • Buat metrik berbasis log: logging.logMetrics.create
  • Buat dasbor: monitoring.dashboards.create

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Membuat metrik berbasis log

Peristiwa ketahanan dicatat dalam log project Anda, dengan setiap peristiwa membawa label event_type yang diawali dengan RESILIENCE_EVENT_TYPE_. Untuk melihat peristiwa mentah di Logs Explorer, gunakan kueri berikut:

labels.event_type=~"RESILIENCE_EVENT_TYPE_.*"

Cloud Monitoring tidak dapat membuat diagram entri log secara langsung, jadi Anda harus mengubah kueri ini menjadi metrik berbasis log terlebih dahulu.

  1. Simpan konfigurasi berikut ke file bernama resilience_metric.yaml:

    name: training_cluster_resilience_events
    description: "Resilience events on training cluster nodes (VM instances)."
    filter: 'resource.type="gce_instance" AND labels.event_type=~"RESILIENCE_EVENT_TYPE_.*"'
    metricDescriptor:
      metricKind: DELTA
      valueType: INT64
      unit: "1"
      labels:
        - key: cluster_id
          valueType: STRING
          description: "The ID of the training cluster."
        - key: event_type
          valueType: STRING
          description: "The type of resilience event."
        - key: slurm_job_name
          valueType: STRING
          description: "The name of the Slurm job that triggered the resilience event, if applicable."
        - key: slurm_job_id
          valueType: STRING
          description: "The ID of the Slurm job that triggered the resilience event, if applicable."
        - key: slurm_job_partition
          valueType: STRING
          description: "The partition that the resilience event acts on."
    labelExtractors:
      cluster_id: "EXTRACT(labels.cluster_id)"
      event_type: "EXTRACT(labels.event_type)"
      slurm_job_name: "EXTRACT(labels.slurm_job_name)"
      slurm_job_id: "EXTRACT(labels.slurm_job_id)"
      slurm_job_partition: "EXTRACT(labels.slurm_job_partition)"
    

    Kolom labelExtractors menyalin label setiap entri log ke metrik, sehingga Anda dapat mengelompokkan diagram berdasarkan jenis peristiwa, cluster, atau tugas Slurm.

  2. Buat metrik:

    gcloud logging metrics create training_cluster_resilience_events \
        --config-from-file=resilience_metric.yaml
    
  3. Pastikan metrik ada:

    gcloud logging metrics describe training_cluster_resilience_events
    

    Anda juga dapat mengonfirmasi metrik di konsol Google Cloud pada halaman Metrik berbasis log.

Membuat dasbor

  1. Simpan konfigurasi berikut ke file bernama resilience_dashboard.json:

    {
      "displayName": "Training Clusters Resilience Dashboard",
      "mosaicLayout": {
        "columns": 48,
        "tiles": [
          {
            "height": 16,
            "width": 24,
            "widget": {
              "title": "Slurm node states",
              "xyChart": {
                "chartOptions": {
                  "mode": "COLOR"
                },
                "dataSets": [
                  {
                    "minAlignmentPeriod": "60s",
                    "plotType": "LINE",
                    "targetAxis": "Y1",
                    "timeSeriesQuery": {
                      "timeSeriesFilter": {
                        "aggregation": {
                          "alignmentPeriod": "60s",
                          "crossSeriesReducer": "REDUCE_SUM",
                          "groupByFields": [
                            "metric.label.\"state\""
                          ],
                          "perSeriesAligner": "ALIGN_MEAN"
                        },
                        "filter": "metric.type=\"hypercomputecluster.googleapis.com/slurm/node_state\" resource.type=\"gce_instance\""
                      }
                    }
                  }
                ],
                "yAxis": {
                  "scale": "LINEAR"
                }
              }
            }
          },
          {
            "yPos": 16,
            "height": 16,
            "width": 24,
            "widget": {
              "title": "Resilience events",
              "xyChart": {
                "chartOptions": {
                  "mode": "COLOR"
                },
                "dataSets": [
                  {
                    "minAlignmentPeriod": "60s",
                    "plotType": "STACKED_BAR",
                    "targetAxis": "Y1",
                    "timeSeriesQuery": {
                      "timeSeriesFilter": {
                        "aggregation": {
                          "alignmentPeriod": "60s",
                          "crossSeriesReducer": "REDUCE_COUNT",
                          "groupByFields": [
                            "metric.label.\"event_type\""
                          ],
                          "perSeriesAligner": "ALIGN_COUNT"
                        },
                        "filter": "metric.type=\"logging.googleapis.com/user/training_cluster_resilience_events\" resource.type=\"gce_instance\""
                      }
                    }
                  }
                ],
                "yAxis": {
                  "scale": "LINEAR"
                }
              }
            }
          }
        ]
      }
    }
    

    Jika Anda memberi nama yang berbeda pada metrik berbasis log di bagian sebelumnya, ubah filter logging.googleapis.com/user/ agar cocok.

  2. Buat dasbor:

    gcloud monitoring dashboards create \
        --config-from-file=resilience_dashboard.json
    
  3. Di konsol Google Cloud , buka halaman Dashboards, lalu di bagian My Dashboards, buka Training Clusters Resilience Dashboard. Dasbor mungkin memerlukan waktu sekitar satu menit untuk muncul.

Pemecahan masalah

Bagian berikut menjelaskan masalah yang paling mungkin Anda alami setelah membuat metrik dan dasbor.

Diagram "Peristiwa ketahanan" kosong

Metrik berbasis log tidak diisi ulang. Metrik ini hanya menghitung entri log yang masuk setelah Anda membuat metrik. Seperti yang dijelaskan dalam ringkasan metrik berbasis log, metrik tidak diisi secara retroaktif dengan data dari entri log yang sudah ada di Cloud Logging.

Jika peristiwa ketahanan telah terjadi sejak Anda membuat metrik dan diagram masih kosong, pastikan peristiwa tersebut ada di Logs Explorer dengan menjalankan kueri di Membuat metrik berbasis log.

Diagram "Slurm node states" tidak memiliki beberapa cluster

Metrik hypercomputecluster.googleapis.com/slurm/node_state hanya dilaporkan oleh cluster yang menjalankan versi software cluster yang cukup baru. Jika cluster tidak ada dalam diagram, perbarui cluster, lalu periksa diagram lagi.

Diagram "Slurm node states" tidak menampilkan node login

Hal ini sudah diperkirakan. Node login tidak memiliki status Slurm, seperti idle atau mixed, sehingga tidak melaporkan metrik slurm/node_state.

Diagram "Peristiwa ketahanan" menghitung peristiwa secara berlebihan

Cloud Logging memproses setiap entri log setidaknya sekali, sehingga error internal sementara dapat menyebabkan entri dihitung lebih dari sekali. Untuk mengetahui informasi selengkapnya, lihat Memecahkan masalah metrik berbasis log.

Entri log itu sendiri adalah sumber kebenaran. Untuk mendapatkan jumlah yang tepat untuk rentang waktu, buat kueri peristiwa di Logs Explorer, bukan membacanya dari diagram.

Langkah berikutnya