Dashboard di logging e monitoraggio di Cloud TPU

Il repository di dashboard di monitoraggio e debug di Cloud TPU contiene tutta l'infrastruttura e la logica necessarie per monitorare ed eseguire il debug dei flussi di lavoro in esecuzione sulle VM TPU. Richiede Terraform, uno strumento open source che utilizza i file di configurazione per definire e gestire l'infrastruttura di Google Cloud.

Dashboard di monitoraggio

La dashboard di monitoraggio mostra le seguenti metriche di Cloud TPU:

  • Utilizzo CPU sul worker TPU: cpu/utilization
  • Memoria utilizzata dalla VM TPU: memory/usage
  • Byte di rete ricevuti da un pod sulla rete: network/received_bytes_count
  • Byte di rete inviati da un pod tramite la rete: network/sent_bytes_count
  • Durata di inattività TensorCore del chip TPU: tpu/tensorcore/idle_duration

Cloud Monitoring genera automaticamente i dati delle metriche. Per visualizzare la dashboard di monitoraggio, vai alla console Google Cloud, seleziona Monitoring e poi Dashboard. Seleziona GCE - Dashboard di monitoraggio TPU nell'elenco delle dashboard. La dashboard di monitoraggio di Cloud TPU è composta da una serie di riquadri, ciascuno dei quali mostra dati delle metriche. Per ogni metrica di Cloud TPU, la dashboard visualizza i valori delle metriche correnti, la media e i valori massimi in riquadri separati. I riquadri della media e del valore massimo consentono di identificare le VM TPU outlier per ulteriori indagini.

Puoi inoltre visualizzare le metriche TPU utilizzando Metrics Explorer nella console Google Cloud di Cloud Monitoring. Per ulteriori informazioni, consulta Monitoraggio delle VM Cloud TPU.

Dashboard di Logging

La dashboard di logging visualizza due sezioni:

  1. Metriche di log: visualizza il numero di voci di analisi dello stack raccolte per ogni worker TPU VM.
  2. Riquadro dei log: visualizza tutte le voci dell'analisi dello stack con colonne per gravità, timestamp e un riepilogo della voce. Puoi filtrare questo riquadro dei log in base a una stringa o etichette worker TPU come node_id, worker_id. Ad esempio, se aggiungi un filtro resource.labels.node_id:"testing", vengono visualizzate tutte le voci di traccia raccolte per il worker VM TPU con ID impostato su "testing".

Cloud Logging raccoglie le voci di log generate da servizi Google Cloud, servizi di terze parti, framework ML e codice. Puoi installare il pacchetto cloud-tpu-diagnostics PyPi per scrivere analisi dello stack Python quando si verifica un errore o un'eccezione o quando il carico di lavoro non risponde. Per ulteriori informazioni, consulta la pagina Debug delle VM Cloud TPU.

Per visualizzare la dashboard di logging, vai alla console Google Cloud, seleziona Monitoring e poi Dashboard. Seleziona GCE - Dashboard di logging TPU nell'elenco delle dashboard.

Configura le metriche e le dashboard di logging

Segui queste istruzioni per configurare le metriche e le dashboard di logging.

clona il repository della dashboard

Puoi clonare il repository direttamente dal repository GitHub di monitoraggio e debug di Cloud TPU o dalla riga di comando:

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

Installa Terraform

  1. Installa Terraform sulla tua macchina locale.
  2. Esegui terraform init per aggiungere i plug-in necessari e creare la directory .terraform.
  3. Esegui terraform init –upgrade per installare gli eventuali aggiornamenti disponibili.

Configura le autorizzazioni per il monitoraggio e il logging

Per eseguire il deployment delle risorse di monitoraggio nel progetto Google Cloud, sono necessari i ruoli Amministratore Monitoring, Editor configurazione dashboard di monitoraggio e Amministratore di Logging. Per saperne di più sui ruoli di monitoraggio, consulta Concedere l'accesso a Cloud Monitoring.

crea un bucket Cloud Storage

Creare un bucket Cloud Storage per archiviare i file di stato di Terraform. Puoi anche utilizzare un bucket Cloud Storage esistente. L'utilizzo di un bucket Cloud Storage garantisce che più utenti possano eseguire Terraform contemporaneamente e accedere alla stessa infrastruttura.

  1. In Cloud Shell, crea il bucket Cloud Storage:

    gsutil mb gs://${GCS_BUCKET_NAME}
    
  2. Abilita il controllo delle versioni degli oggetti per conservare la cronologia dei tuoi deployment. L'abilitazione del controllo delle versioni degli oggetti aumenta i costi di archiviazione, che puoi mitigare configurando Gestione del ciclo di vita degli oggetti in modo da eliminare le versioni dello stato precedente.

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

Inizializza Terraform

Esegui terraform init all'interno della directory gcp_resources/gce del repository. Il comando richiede di inserire il nome di un bucket Cloud Storage in cui archiviare i file di stato Terraform.

Esegui il deployment delle dashboard di monitoraggio e logging

Esegui terraform apply nella directory gcp_resources/gce per il deployment delle dashboard di monitoraggio e logging nel tuo progetto Google Cloud. Il comando ti chiede di fornire valori per le seguenti variabili:

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

Se vuoi eseguire il deployment solo della dashboard di monitoraggio, esegui terraform init e terraform apply nella directory gcp_resources/gce/dashboard/monitoring_dashboard. Analogamente, esegui questi comandi nella directory gcp_resources/gce/dashboard/logging_dashboard per eseguire il deployment solo della dashboard di logging.

Configurazioni di esempio

Quando esegui terraform apply, Terraform ti chiede di inserire alcuni valori delle variabili di configurazione. Questa sezione fornisce alcuni esempi di configurazioni che puoi utilizzare. Ogni esempio mostra l'output visualizzato dal comando terraform apply e i valori suggeriti per ogni variabile di configurazione. L'input deve essere in formato JSON circondato da parentesi graffe ("{}").

Esempio 1

Questo esempio specifica il nome del progetto Google Cloud e utilizza i valori predefiniti per il resto della configurazione.

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: {}

Esempio 2

Questo esempio configura la dashboard in modo da visualizzare 5 VM TPU outlier.

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}

Esempio 3

Questa configurazione crea una dashboard che mostra 10 VM TPU outlier che utilizzano "test" come prefisso per i nomi dei nodi generati dalla dashboard:

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"}

Esempio 4

Questa configurazione crea una dashboard che mostra 5 VM outlier che utilizzano "test" come prefisso per i nomi dei nodi generati dalla dashboard.

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}

Esempio 5

Questo esempio configura un bucket Cloud Storage per archiviare le analisi dello stack. Le tracce dello stack hanno un criterio di conservazione predefinito di 30 giorni.

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: {}

Esempio 6

Questo esempio configura un bucket Cloud Storage con un periodo di conservazione di 20 giorni.

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: {}