Monitoring- und Logging-Dashboards von Cloud TPU

Das Cloud TPU-Repository für Monitoring- und Debugging-Dashboards enthält die gesamte Infrastruktur und Logik, die zum Überwachen und Debuggen von Workflows, die auf TPU-VMs ausgeführt werden, erforderlich sind. Dafür wird Terraform benötigt, ein Open-Source-Tool, das Konfigurationsdateien verwendet, um die Google Cloud-Infrastruktur zu definieren und zu verwalten.

Monitoring-Dashboard

Im Monitoring-Dashboard werden die folgenden Cloud TPU-Messwerte angezeigt:

  • CPU-Auslastung des TPU-Workers: cpu/utilization
  • Arbeitsspeichernutzung durch TPU-VM: memory/usage
  • Netzwerkbyte, die von einem Pod über das Netzwerk empfangen wurden: network/received_bytes_count
  • Netzwerkbyte, die von einem Pod über das Netzwerk gesendet wurden: network/sent_bytes_count
  • TensorCore-Inaktivitätsdauer des TPU-Chips: tpu/tensorcore/idle_duration

Cloud Monitoring generiert automatisch Messwertdaten. Wenn Sie das Monitoring-Dashboard aufrufen möchten, rufen Sie die Google Cloud Console auf und wählen Sie Monitoring und dann Dashboards aus. Wählen Sie in der Liste der Dashboards GCE – TPU Monitoring Dashboard aus. Das Monitoring-Dashboard von Cloud TPU besteht aus mehreren Bereichen, in denen jeweils Messwertdaten angezeigt werden. Im Dashboard werden für jeden Cloud TPU-Messwert die aktuellen Messwerte, der Mittelwert und die Maximalwerte in separaten Bereichen angezeigt. Anhand der mittleren und maximalen Bereiche können Sie Ausreißer-TPU-VMs zur weiteren Untersuchung identifizieren.

Sie können TPU-Messwerte auch mit dem Metrics Explorer in der Cloud Monitoring Google Cloud Console ansehen. Weitere Informationen finden Sie unter Cloud TPU-VMs überwachen.

Logging-Dashboard

Das Logging-Dashboard enthält zwei Abschnitte:

  1. Logmesswerte: Zeigt die Anzahl der Stacktrace-Einträge an, die für jeden TPU-VM-Worker erfasst wurden.
  2. Logbereich: Zeigt alle Stacktrace-Einträge mit Spalten für Schweregrad, Zeitstempel und eine Zusammenfassung des Eintrags an. Sie können diesen Logbereich nach einem String oder TPU-Worker-Labels wie node_id oder worker_id filtern. Wenn Sie beispielsweise den Filter resource.labels.node_id:"testing" hinzufügen, werden alle Trace-Einträge angezeigt, die für den TPU-VM-Worker mit der ID „Test“ erfasst wurden.

Cloud Logging erfasst Logeinträge, die von Google Cloud-Diensten, Diensten von Drittanbietern, ML-Frameworks und Ihrem Code generiert werden. Sie können das PyPi-Paket cloud-tpu-diagnostics installieren, um Python-Stacktraces zu schreiben, wenn ein Fehler oder eine Ausnahme auftritt oder Ihre Arbeitslast nicht reagiert. Weitere Informationen finden Sie unter Cloud TPU-VMs debuggen.

Um das Logging-Dashboard aufzurufen, rufen Sie die Google Cloud Console auf und wählen Sie Monitoring und dann Dashboards aus. Wählen Sie in der Liste der Dashboards GCE – TPU Logging Dashboard aus.

Messwerte und Logging-Dashboards konfigurieren

Folgen Sie dieser Anleitung, um die Dashboards für Messwerte und Logging zu konfigurieren.

Dashboard-Repository klonen

Sie können das Repository direkt aus dem Cloud TPU-GitHub-Repository für Monitoring und Debugging oder über die Befehlszeile klonen:

git clone https://github.com/google/cloud-tpu-monitoring-debugging.git

Terraform installieren

  1. Installieren Sie Terraform auf Ihrem lokalen Computer.
  2. Führen Sie terraform init aus, um die erforderlichen Plug-ins hinzuzufügen und das Verzeichnis .terraform zu erstellen.
  3. Führen Sie terraform init –upgrade aus, um alle verfügbaren Updates zu installieren.

Berechtigungen für Monitoring und Logging konfigurieren

Die Rollen „Monitoring-Administrator“, „Bearbeiter von Monitoring-Dashboard-Konfigurationen“ und „Logging-Administrator“ sind erforderlich, um Monitoring-Ressourcen in Ihrem Google Cloud-Projekt bereitzustellen. Weitere Informationen zu Monitoring-Rollen finden Sie unter Zugriff auf Cloud Monitoring gewähren.

Cloud Storage-Bucket erstellen

Cloud Storage-Bucket zum Speichern von Terraform-Zustandsdateien erstellen Sie können auch einen vorhandenen Cloud Storage-Bucket verwenden. Durch die Verwendung eines Cloud Storage-Bucket können mehrere Nutzer Terraform gleichzeitig ausführen und auf dieselbe Infrastruktur zugreifen.

  1. Erstellen Sie den Cloud Storage-Bucket in einer Cloud Shell:

    gsutil mb gs://${GCS_BUCKET_NAME}
    
  2. Aktivieren Sie die Objektversionsverwaltung, um den Verlauf Ihrer Bereitstellungen zu speichern. Durch das Aktivieren der Objektversionsverwaltung erhöhen sich die Speicherkosten. Dies können Sie umgehen, indem Sie die Verwaltung des Objektlebenszyklus so konfigurieren, dass alte Statusversionen gelöscht werden.

    gsutil versioning set on gs://${GCS_BUCKET_NAME}
    

Terraform initialisieren

Führen Sie terraform init im Verzeichnis gcp_resources/gce des Repositorys aus. Der Befehl fordert Sie auf, den Namen eines Cloud Storage-Bucket einzugeben, um Terraform-Zustandsdateien zu speichern.

Monitoring- und Logging-Dashboards bereitstellen

Führen Sie terraform apply im Verzeichnis gcp_resources/gce aus, um die Monitoring- und Logging-Dashboards in Ihrem Google Cloud-Projekt bereitzustellen. Sie werden aufgefordert, Werte für die folgenden Variablen anzugeben:

  • var.monitoring_dashboard_config
  • var.project_name
  • var.stack_trace_bucket_config

Wenn Sie nur das Monitoring-Dashboard bereitstellen möchten, führen Sie terraform init und terraform apply im Verzeichnis gcp_resources/gce/dashboard/monitoring_dashboard aus. Führen Sie diese Befehle auf ähnliche Weise im Verzeichnis gcp_resources/gce/dashboard/logging_dashboard aus, um nur das Logging-Dashboard bereitzustellen.

Beispielkonfigurationen

Wenn Sie terraform apply ausführen, werden Sie von Terraform zur Eingabe einiger Werte für Konfigurationsvariablen aufgefordert. Dieser Abschnitt enthält einige Beispielkonfigurationen, die Sie verwenden können. Jedes Beispiel zeigt die vom Befehl „terraform apply“ angezeigte Ausgabe sowie vorgeschlagene Werte für jede Konfigurationsvariable in Fettdruck. Die Eingabe muss im JSON-Format in geschweiften Klammern („{}“) erfolgen.

Beispiel 1

In diesem Beispiel werden der Name des Google Cloud-Projekts angegeben und für die restliche Konfiguration werden die Standardwerte verwendet.

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
      "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": &lt;the number of outliers to show on dashboard, default to 10 if not set&gt;
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {}

Beispiel 2

In diesem Beispiel wird das Dashboard so konfiguriert, dass 5 Ausreißer-TPU-VMs angezeigt werden.

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": &lt;number of outliers to show on dashboard, default to 10 if not set&gt;
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {"outlier_count":5}

Beispiel 3

Mit dieser Konfiguration wird ein Dashboard erstellt, das zehn Ausreißer-TPU-VMs anzeigt. Dabei wird „test“ als Präfix für die vom Dashboard generierten Knotennamen verwendet:

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
      "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": &ltnumber of outliers to show on dashboard, default to 10 if not set&gt;
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {"node_prefix":"test"}

Beispiel 4

Mit dieser Konfiguration wird ein Dashboard erstellt, das fünf Ausreißer-VMs anzeigt. Dabei wird „test“ als Präfix für die vom Dashboard generierten Knotennamen verwendet.

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": "number of outliers to show on dashboard, default to 10 if not set"
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {"node_prefix":"test", "outlier_count":5}

Beispiel 5

In diesem Beispiel wird ein Cloud Storage-Bucket zum Speichern von Stacktraces konfiguriert. Für die Stacktraces gilt eine standardmäßige Aufbewahrungsrichtlinie von 30 Tagen.

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {"bucket_name":"stack_trace_log_bucket"}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": "number of outliers to show on dashboard, default to 10 if not set"
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {}

Beispiel 6

In diesem Beispiel wird ein Cloud Storage-Bucket mit einer Aufbewahrungsdauer von 20 Tagen konfiguriert.

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {"bucket_name":"stack_trace_log_bucket", "retention_days":20}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": "number of outliers to show on dashboard, default to 10 if not set"
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {}