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.
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:
-
Crea la metrica basata su log:
Writer della configurazione dei log (
roles/logging.configWriter) -
Crea la dashboard:
Monitoring Dashboard Configuration Editor (
roles/monitoring.dashboardEditor)
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.
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
labelExtractorscopia 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.Crea la metrica:
gcloud logging metrics create training_cluster_resilience_events \ --config-from-file=resilience_metric.yamlVerifica che la metrica esista:
gcloud logging metrics describe training_cluster_resilience_eventsPuoi anche verificare la metrica nella Cloud de Confiance console nella pagina **Metriche basate su log**.
Crea la dashboard
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.Crea la dashboard:
gcloud monitoring dashboards create \ --config-from-file=resilience_dashboard.jsonNella 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.