Cloud TPU-Monitoring- und ‑Logging-Dashboards
Das Repository für Monitoring- und Debugging-Dashboards für Cloud TPUs enthält die gesamte Infrastruktur und Logik, die zum Überwachen und Entwickeln von Workflows erforderlich ist, die auf TPU-VMs ausgeführt werden. Dazu ist Terraform erforderlich, ein Open-Source-Tool, mit dem die Google Cloud-Infrastruktur mithilfe von Konfigurationsdateien definiert und verwaltet wird.
Monitoring-Dashboard
Das Monitoring-Dashboard enthält die folgenden Cloud TPU-Messwerte:
- CPU-Auslastung auf dem TPU-Worker:
cpu/utilization
- Arbeitsspeichernutzung nach TPU-VM:
memory/usage
- Vom Pod über das Netzwerk empfangene Netzwerk-Byte:
network/received_bytes_count
- Von einem Pod über das Netzwerk gesendete Netzwerkbyte:
network/sent_bytes_count
- Dauer der Inaktivität des TensorCores 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 Cloud TPU-Monitoring-Dashboard besteht aus mehreren Bereichen, in denen jeweils Messwertdaten angezeigt werden. Für jeden Cloud TPU-Messwert werden im Dashboard die aktuellen Messwerte, der Mittelwert und der Maximalwert in separaten Bereichen angezeigt. In den Bereichen „Mittelwert“ und „Maximum“ können Sie TPU-VMs mit Ausreißern für weitere Untersuchungen identifizieren.
Sie können TPU-Messwerte auch mit dem Metrics Explorer in Cloud Monitoring in der Google Cloud Console aufrufen. Weitere Informationen finden Sie unter Cloud TPU-VMs überwachen.
Logging-Dashboard
Das Logging-Dashboard enthält zwei Bereiche:
- Log-Messwerte: Die Anzahl der Stack-Trace-Einträge, die für jeden TPU-VM-Worker erfasst wurden.
- Bereich „Protokolle“: Hier werden alle Stack-Trace-Einträge mit Spalten für den Schweregrad, den Zeitstempel und eine Zusammenfassung des Eintrags angezeigt. Sie können diesen Bereich mit Logs nach einem String oder TPU-Arbeiterlabels wie
node_id
oderworker_id
filtern. Wenn Sie beispielsweise den Filterresource.labels.node_id:"testing"
hinzufügen, werden alle Trace-Einträge angezeigt, die für den TPU-VM-Worker mit der ID „testing“ erfasst wurden.
Cloud Logging erfasst Logeinträge, die von Google Cloud-Diensten, Drittanbieterdiensten, ML-Frameworks und Ihrem Code generiert werden. Sie können das PyPi-Paket cloud-tpu-diagnostics
installieren, um Python-Stack-Traces zu schreiben, wenn ein Fehler oder eine Ausnahme auftritt oder Ihre Arbeitslast nicht reagiert. Weitere Informationen finden Sie unter Cloud TPU-VMs debuggen.
Rufen Sie das Logging-Dashboard in der Google Cloud Console auf, indem Sie Monitoring und dann Dashboards auswählen. Wählen Sie in der Liste der Dashboards GCE – TPU-Logging-Dashboard aus.
Dashboards für Messwerte und Protokolle konfigurieren
Folgen Sie dieser Anleitung, um die Dashboards für Messwerte und Protokolle zu konfigurieren.
Dashboard-Repository klonen
Sie können das Repository direkt aus dem GitHub-Repository für die Überwachung und Fehlerbehebung von Cloud TPU oder über die Befehlszeile klonen:
git clone https://github.com/google/cloud-tpu-monitoring-debugging.git
Terraform installieren
- Installieren Sie Terraform auf Ihrem lokalen Computer.
- Führen Sie
terraform init
aus, um die erforderlichen Plug-ins hinzuzufügen und das Verzeichnis.terraform
zu erstellen. - Führen Sie
terraform init –upgrade
aus, um alle verfügbaren Updates zu installieren.
Berechtigungen für Monitoring und Logging konfigurieren
Sie benötigen die Rollen „Monitoring Admin“, „Monitoring Dashboard Configuration Editor“ und „Logging Admin“, um Monitoringressourcen in Ihrem Google Cloud-Projekt bereitzustellen. Weitere Informationen zu Monitoring-Rollen finden Sie unter Zugriff auf Cloud Monitoring gewähren.
Cloud Storage-Bucket erstellen
Erstellen Sie einen Cloud Storage-Bucket zum Speichern von Terraform-Zustandsdateien. Sie können auch einen vorhandenen Cloud Storage-Bucket verwenden. Mit einem Cloud Storage-Bucket können mehrere Nutzer gleichzeitig Terraform ausführen und auf dieselbe Infrastruktur zugreifen.
Erstellen Sie in Cloud Shell den Cloud Storage-Bucket:
gcloud storage buckets create gs://${GCS_BUCKET_NAME}
Aktivieren Sie die Objektversionsverwaltung, um den Verlauf Ihrer Bereitstellungen zu speichern. Durch das Aktivieren der Objektversionsverwaltung werden die Speicherkosten erhöht. Dies können Sie umgehen, indem Sie die Verwaltung des Objektlebenszyklus so konfigurieren, dass alte Statusversionen gelöscht werden.
gcloud storage buckets update gs://${GCS_BUCKET_NAME} --versioning
Terraform initialisieren
Führen Sie terraform init
im Verzeichnis gcp_resources/gce
des Repositorys aus.
Sie werden aufgefordert, den Namen eines Cloud Storage-Bucket einzugeben, in dem Terraform-Zustandsdateien gespeichert werden sollen.
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 ebenfalls 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 nach Werten für einige Konfigurationsvariablen gefragt. Dieser Abschnitt enthält einige Beispielkonfigurationen, die Sie verwenden können.
In jedem Beispiel wird die vom Befehl „terraform apply“ angezeigte Ausgabe sowie in fett formatierte Vorschläge für die einzelnen Konfigurationsvariablen angezeigt. Die Eingabe muss im JSON-Format vorliegen und in geschweifte Klammern ("{}") gesetzt sein.
Beispiel 1
In diesem Beispiel wird der Name des Google Cloud-Projekts angegeben und für den Rest der 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": <number of days to retain stack traces, default to 30 days if not set>
}
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": <the 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 2
In diesem Beispiel wird das Dashboard so konfiguriert, dass fünf TPU-VMs mit Ausreißern 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": <number of days to retain stack traces, default to 30 days if not set>
}
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: {"outlier_count":5}
Beispiel 3
Mit dieser Konfiguration wird ein Dashboard erstellt, das 10 Außerhalb der Norm liegende TPU-VMs enthält. 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": <number of days to retain stack traces, default to 30 days if not set>
}
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"}
Beispiel 4
Mit dieser Konfiguration wird ein Dashboard erstellt, das fünf Ausreißer-VMs enthält. „test“ wird 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": <number of days to retain stack traces, default to 30 days if not set>
}
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 Stack-Traces konfiguriert. Für Stack-Traces gilt standardmäßig eine Aufbewahrungsdauer 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": <number of days to retain stack traces, default to 30 days if not set>
}
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": <number of days to retain stack traces, default to 30 days if not set>
}
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: {}