Monitorare gli eventi di resilienza con una dashboard

Se ti interessano i cluster di addestramento di Gemini Enterprise Agent Platform, contatta il tuo rappresentante di vendita per l'accesso.

I cluster di addestramento eseguono controlli di integrità automatici sui nodi e intervengono quando un controllo non riesce. Ad esempio, se viene identificato un errore XID irreversibile, il nodo potrebbe essere svuotato, il job Slurm interessato potrebbe essere messo in coda e il nodo potrebbe essere ricreato. Ognuno di questi interventi viene scritto nei log del progetto come evento di resilienza.

Questa pagina mostra come creare una dashboard Cloud Monitoring personalizzata che traccia questi eventi di resilienza accanto allo stato Slurm dei nodi di calcolo, in modo da poter vedere quali azioni di ripristino ha intrapreso il servizio e come si correlano con lo stato del cluster. La dashboard include due grafici:

  • Stati dei nodi Slurm: il numero di nodi in ogni stato Slurm nel tempo, ricavato dalla metrica hypercomputecluster.googleapis.com/slurm/node_state.
  • Eventi di resilienza: un conteggio degli eventi di resilienza, suddivisi per tipo di evento, ricavati da una metrica basata su log creata nella sezione successiva.
Una dashboard con due grafici: i nodi in ogni stato di Slurm nel tempo e un grafico a barre in pila che conteggia gli eventi di resilienza per tipo di evento.
Figura 1. La lettura congiunta dei due grafici mostra l'effetto di un ripristino: il conteggio dei nodi inattivi diminuisce mentre il servizio sostituisce un nodo che non ha superato un controllo di integrità del prologo e gli eventi che lo hanno causato vengono visualizzati di seguito.

Prima di iniziare

Installa e inizializza Google Cloud CLI, quindi imposta il progetto che contiene i cluster di addestramento:

gcloud auth login
gcloud config set project PROJECT_ID

Sostituisci PROJECT_ID con l'ID del tuo progetto.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare la metrica basata su log e la dashboard, chiedi all'amministratore di concederti i seguenti ruoli IAM per il progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per creare la metrica basata su log e la dashboard. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per creare la metrica basata su log e la dashboard sono necessarie le seguenti autorizzazioni:

  • Crea la metrica basata su log: logging.logMetrics.create
  • Crea la dashboard: monitoring.dashboards.create

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Crea la metrica basata su log

Gli eventi di resilienza vengono registrati nei log del progetto, dove ogni evento ha un'etichetta event_type con il prefisso RESILIENCE_EVENT_TYPE_. Per visualizzare gli eventi non elaborati in Esplora log, utilizza la seguente query:

labels.event_type=~"RESILIENCE_EVENT_TYPE_.*"

Cloud Monitoring non può tracciare direttamente le voci di log, quindi devi prima trasformare questa query in una metrica basata su log.

  1. Salva la seguente configurazione in un file denominato 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)"
    

    Il campo labelExtractors copia le etichette di ogni voce di log nella metrica, il che ti consente di suddividere il grafico per tipo di evento, per cluster o per job Slurm.

  2. Crea la metrica:

    gcloud logging metrics create training_cluster_resilience_events \
        --config-from-file=resilience_metric.yaml
    
  3. Verifica che la metrica esista:

    gcloud logging metrics describe training_cluster_resilience_events
    

    Puoi anche verificare la metrica nella Cloud de Confiance console nella pagina **Metriche basate su log**.

Crea la dashboard

  1. Salva la seguente configurazione in un file denominato 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"
                }
              }
            }
          }
        ]
      }
    }
    

    Se nella sezione precedente hai assegnato un nome diverso alla metrica basata su log, modifica il filtro logging.googleapis.com/user/ in modo che corrisponda.

  2. Crea la dashboard:

    gcloud monitoring dashboards create \
        --config-from-file=resilience_dashboard.json
    
  3. Nella Cloud de Confiance console, vai alla pagina Dashboard e poi, in Le mie dashboard, apri Dashboard di resilienza dei cluster di addestramento. La visualizzazione della dashboard può richiedere circa un minuto.

Risoluzione dei problemi

Le sezioni seguenti descrivono i problemi che è più probabile riscontrare dopo aver creato la metrica e la dashboard.

Il grafico "Eventi di resilienza" è vuoto

Una metrica basata su log non viene sottoposta a backfill. Conta solo le voci di log che arrivano dopo la creazione della metrica. Come spiegato nella panoramica delle metriche basate su log, una metrica non viene compilata retroattivamente con i dati delle voci di log già presenti in Cloud Logging.

Se si sono verificati eventi di resilienza dopo la creazione della metrica e il grafico è ancora vuoto, verifica che gli eventi siano presenti in Esplora log eseguendo la query in Crea la metrica basata su log.

Nel grafico "Stati dei nodi Slurm" mancano alcuni cluster

La metrica hypercomputecluster.googleapis.com/slurm/node_state viene segnalata solo dai cluster che eseguono una versione sufficientemente recente del software del cluster. Se un cluster non è presente nel grafico, aggiornalo e poi controlla di nuovo il grafico.

Il grafico "Stati dei nodi Slurm" non mostra i nodi di accesso

È previsto. I nodi di accesso non hanno uno stato Slurm, ad esempio idle o mixed, quindi non segnalano la metrica slurm/node_state.

Il grafico "Eventi di resilienza" conta gli eventi in eccesso

Cloud Logging elabora ogni voce di log almeno una volta, quindi un errore interno temporaneo può far sì che una voce venga conteggiata più di una volta. Per ulteriori informazioni, consulta Risolvi i problemi relativi alle metriche basate su log.

Le voci di log stesse sono l'origine dell'obiettivo ultimo dell'attività. Per ottenere un conteggio esatto per un intervallo di tempo, esegui una query sugli eventi in Esplora log anziché leggerli dal grafico.

Passaggi successivi