Trainingscluster führen automatisierte Systemdiagnosen für Ihre Knoten aus und greifen ein, wenn eine Diagnose fehlschlägt. Wenn beispielsweise ein schwerwiegender XID-Fehler erkannt wird, kann der Knoten geleert, der betroffene Slurm-Job in die Warteschlange gestellt und der Knoten neu erstellt werden. Jeder dieser Eingriffe wird als Resilienzereignis in die Logs Ihres Projekts geschrieben.
Auf dieser Seite wird beschrieben, wie Sie ein benutzerdefiniertes Cloud Monitoring-Dashboard erstellen, in dem diese Resilienzereignisse neben dem Slurm-Status Ihrer Compute-Knoten dargestellt werden. So können Sie sehen, welche Wiederherstellungsmaßnahmen der Dienst ergriffen hat und wie sie mit dem Status Ihres Clusters zusammenhängen. Das Dashboard enthält zwei Diagramme:
- Slurm-Knotenstatus: Die Anzahl der Knoten in jedem Slurm-Status im Zeitverlauf,
abgeleitet aus dem Messwert
hypercomputecluster.googleapis.com/slurm/node_state. - Resilienzereignisse: Eine Anzahl von Resilienzereignissen, aufgeschlüsselt nach Ereignis typ, abgeleitet aus einem logbasierten Messwert, den Sie im nächsten Abschnitt erstellen.
Hinweis
Installieren und initialisieren Sie die Google Cloud CLI und legen Sie dann das Projekt fest, das Ihre Trainingscluster enthält:
gcloud auth login gcloud config set project PROJECT_ID
Ersetzen Sie PROJECT_ID durch die ID Ihres Projekts.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen des logbasierten Messwerts und des Dashboards benötigen:
-
Logbasierten Messwert erstellen:
Logs Configuration Writer (
roles/logging.configWriter) -
Dashboard erstellen:
Monitoring Dashboard Configuration Editor (
roles/monitoring.dashboardEditor)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Erstellen des logbasierten Messwerts und des Dashboards erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen , um die notwendigen Berechtigungen anzuzeigen, die erforderlich sind:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um den logbasierten Messwert und das Dashboard zu erstellen:
-
Logbasierten Messwert erstellen:
logging.logMetrics.create -
Dashboard erstellen:
monitoring.dashboards.create
Möglicherweise können Sie diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Logbasierten Messwert erstellen
Resilienzereignisse werden in den Logs Ihres Projekts erfasst. Jedes Ereignis hat ein Label event_type mit dem Präfix RESILIENCE_EVENT_TYPE_. Wenn Sie die Rohereignisse im Log-Explorer sehen möchten, verwenden Sie die folgende Abfrage:
labels.event_type=~"RESILIENCE_EVENT_TYPE_.*"
Cloud Monitoring kann Logeinträge nicht direkt darstellen. Daher müssen Sie diese Abfrage zuerst in einen logbasierten Messwert umwandeln.
Speichern Sie die folgende Konfiguration in einer Datei mit dem Namen
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)"Das Feld
labelExtractorskopiert die Labels jedes Logeintrags in den Messwert. So können Sie das Diagramm nach Ereignistyp, Cluster oder Slurm-Job aufschlüsseln.Erstellen Sie den Messwert:
gcloud logging metrics create training_cluster_resilience_events \ --config-from-file=resilience_metric.yamlPrüfen Sie, ob der Messwert vorhanden ist:
gcloud logging metrics describe training_cluster_resilience_eventsSie können den Messwert auch in der Cloud de Confiance Console auf der Seite **Logbasierte Messwerte** bestätigen.
Dashboard erstellen
Speichern Sie die folgende Konfiguration in einer Datei mit dem Namen
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" } } } } ] } }Wenn Sie dem logbasierten Messwert im vorherigen Abschnitt einen anderen Namen gegeben haben, ändern Sie den Filter
logging.googleapis.com/user/entsprechend.Erstellen Sie das Dashboard:
gcloud monitoring dashboards create \ --config-from-file=resilience_dashboard.jsonÖffnen Sie in der Cloud de Confiance Console die Dashboards Seite und dann unter Meine Dashboards die Option Training Clusters Resilience Dashboard. Es kann etwa eine Minute dauern, bis das Dashboard angezeigt wird.
Fehlerbehebung
In den folgenden Abschnitten werden die Probleme beschrieben, die am wahrscheinlichsten auftreten, nachdem Sie den Messwert und das Dashboard erstellt haben.
Das Diagramm „Resilienzereignisse“ ist leer
Ein logbasierter Messwert wird nicht mit Daten aus der Vergangenheit gefüllt. Es werden nur Logeinträge gezählt, die nach der Erstellung des Messwerts eingehen. Wie in der Übersicht zu logbasierten Messwerten erläutert, wird ein Messwert nicht rückwirkend mit Daten aus Logeinträgen gefüllt, die bereits in Cloud Logging vorhanden sind.
Wenn seit der Erstellung des Messwerts Resilienzereignisse aufgetreten sind und das Diagramm noch immer leer ist, prüfen Sie, ob die Ereignisse im Log-Explorer vorhanden sind. Führen Sie dazu die Abfrage unter Logbasierten Messwert erstellen aus.
Im Diagramm „Slurm-Knotenstatus“ fehlen einige Cluster
Der Messwert hypercomputecluster.googleapis.com/slurm/node_state wird nur von Clustern gemeldet, auf denen eine aktuelle Version der Cluster-Software ausgeführt wird. Wenn ein
Cluster im Diagramm fehlt,
aktualisieren Sie den Cluster
und prüfen Sie das Diagramm noch einmal.
Im Diagramm „Slurm-Knotenstatus“ werden keine Anmeldeknoten angezeigt
Dies ist zu erwarten. Anmeldeknoten haben keinen Slurm-Status wie idle oder mixed. Daher wird der Messwert slurm/node_state nicht gemeldet.
Im Diagramm „Resilienzereignisse“ werden Ereignisse zu oft gezählt
Cloud Logging verarbeitet jeden Logeintrag mindestens einmal. Ein vorübergehender interner Fehler kann dazu führen, dass ein Eintrag mehrmals gezählt wird. Weitere Informationen finden Sie unter siehe Fehlerbehebung bei logbasierten Messwerten.
Die Logeinträge selbst sind die Quelle der Wahrheit. Wenn Sie eine genaue Anzahl für einen Zeitraum erhalten möchten, fragen Sie die Ereignisse im Log-Explorer ab, anstatt sie aus dem Diagramm zu lesen.