Painéis de monitoramento e registro da Cloud TPU
O repositório de painéis de monitoramento e depuração da Cloud TPU contém toda a infraestrutura e lógica necessárias para monitorar e depurar fluxos de trabalho executados em VMs da TPU. Ele requer o Terraform, uma ferramenta de código aberto que usa arquivos de configuração para definir e gerenciar a infraestrutura do Google Cloud.
Painel de monitoramento
O painel de monitoramento mostra as seguintes métricas da Cloud TPU:
- Uso da CPU no worker da TPU:
cpu/utilization
- Uso de memória pela VM da TPU:
memory/usage
- Bytes de rede recebidos por um pod pela rede:
network/received_bytes_count
- Bytes de rede enviados por um pod pela rede:
network/sent_bytes_count
- Duração de inatividade do TensorCore do chip TPU:
tpu/tensorcore/idle_duration
O Cloud Monitoring gera dados de métricas automaticamente. Para acessar o painel de monitoramento, acesse o console do Google Cloud, selecione Monitoramento e Painéis. Selecione GCE: painel de monitoramento de TPU na lista de painéis. O painel de monitoramento do Cloud TPU é composto por vários painéis, cada um deles mostrando dados de métricas. Para cada métrica do Cloud TPU, o painel mostra os valores atuais, a média e os valores máximos em painéis separados. Os painéis de média e máximo permitem identificar VMs de TPU fora da curva para uma investigação mais detalhada.
Também é possível conferir as métricas de TPU usando o Metrics Explorer no console do Google Cloud para o Cloud Monitoring. Para mais informações, consulte Como monitorar VMs do Cloud TPU.
Painel de registro
O painel de registro mostra duas seções:
- Métricas de registro: mostra a contagem de entradas de stack trace coletadas para cada worker de VM de TPU.
- Painel de registros: mostra todas as entradas de stack trace com colunas para gravidade,
carimbo de data/hora e um resumo da entrada. É possível filtrar esse painel de registros por uma
string ou rótulos de worker do TPU, como
node_id
,worker_id
. Por exemplo, adicionar um filtroresource.labels.node_id:"testing"
mostra todas as entradas de rastro coletadas para o worker da VM de TPU com o ID definido como "testing".
O Cloud Logging coleta entradas de registro geradas por serviços do Google Cloud, serviços de terceiros, frameworks de ML e seu código. É possível instalar o pacote
cloud-tpu-diagnostics
PyPi
para gravar stack traces do Python quando ocorrer uma falha ou exceção ou quando
a carga de trabalho não responder. Para mais informações, consulte
Como depurar VMs do Cloud TPU.
Para acessar o painel de registro, acesse o console do Google Cloud, selecione Monitoramento e Painéis. Selecione GCE - TPU Logging Dashboard na lista de painéis.
Configurar os painéis de métricas e registros
Siga estas instruções para configurar os painéis de métricas e de geração de registros.
Clone o repositório do painel
É possível clonar o repositório diretamente do repositório do GitHub de monitoramento e depuração do Cloud TPU ou da linha de comando:
git clone https://github.com/google/cloud-tpu-monitoring-debugging.git
Instale o Terraform
- Instale o Terraform na máquina local.
- Execute
terraform init
para adicionar os plug-ins necessários e criar o diretório.terraform
. - Execute
terraform init –upgrade
para instalar as atualizações disponíveis.
Configurar permissões para monitoramento e geração de registros
As funções de administrador de monitoramento, editor de configuração do painel de monitoramento e administrador de geração de registros são necessárias para implantar recursos de monitoramento no seu projeto do Google Cloud. Para mais informações sobre os papéis de monitoramento, consulte Conceder acesso ao Cloud Monitoring.
Criar um bucket do Cloud Storage
Crie um bucket do Cloud Storage para armazenar arquivos de estado do Terraform. Também é possível usar um bucket do Cloud Storage. O uso de um bucket do Cloud Storage garante que vários usuários possam executar o Terraform ao mesmo tempo e acessar a mesma infraestrutura.
No Cloud Shell, crie o bucket do Cloud Storage:
gcloud storage buckets create gs://${GCS_BUCKET_NAME}
Ative o controle de versões do objeto para manter o histórico das implantações. Ativar o controle de versões do objeto aumenta os custos de armazenamento, que podem ser reduzidos com a configuração do Gerenciamento do ciclo de vida de objetos para excluir versões de estado mais antigas.
gcloud storage buckets update gs://${GCS_BUCKET_NAME} --versioning
Inicialize o Terraform
Execute terraform init
no diretório gcp_resources/gce
do repositório.
O comando solicita que você insira o nome de um bucket do Cloud Storage para armazenar
arquivos de estado do Terraform.
Implantar os painéis de monitoramento e geração de registros
Execute terraform apply
no diretório gcp_resources/gce
para implantar os
painéis de monitoramento e registro no projeto do Google Cloud. O comando
pede que você forneça valores para as seguintes variáveis:
var.monitoring_dashboard_config
var.project_name
var.stack_trace_bucket_config
Se você quiser implantar apenas o painel de monitoramento, execute terraform init
e terraform apply
dentro do diretório
gcp_resources/gce/dashboard/monitoring_dashboard
. Da mesma forma, execute estes comandos no diretório gcp_resources/gce/dashboard/logging_dashboard
para implantar apenas o painel de registro.
Exemplos de configurações
Quando você executa terraform apply
, o Terraform solicita alguns valores de variável de configuração. Esta seção apresenta alguns exemplos de configurações que você pode usar.
Cada exemplo mostra a saída mostrada pelo comando terraform apply, bem como os valores sugeridos para cada variável de configuração em negrito. A entrada
precisa estar no formato JSON entre chaves ("{}").
Exemplo 1
Este exemplo especifica o nome do projeto do Google Cloud e usa os valores padrão para o restante da configuração.
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: {}
Exemplo 2
Neste exemplo, o painel é configurado para mostrar cinco VMs da TPU com valores fora da curva.
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}
Exemplo 3
Essa configuração cria um painel que mostra 10 VMs de TPU fora da curva usando "test" como prefixo para os nomes de nós gerados pelo painel:
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"}
Exemplo 4
Essa configuração cria um painel que mostra cinco VMs fora do padrão usando "test" como o prefixo dos nomes de nó gerados pelo painel.
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}
Example 5
Este exemplo configura um bucket do Cloud Storage para armazenar rastros de pilha. Os traces da pilha têm uma política de retenção padrão de 30 dias.
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: {}
Exemplo 6
Este exemplo configura um bucket do Cloud Storage com um período de armazenamento de 20 dias.
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: {}