arrow_back

Análise de registros

Acesse mais de 700 laboratórios e cursos

Análise de registros

Laboratório 1 hora 30 minutos universal_currency_alt 5 créditos show_chart Intermediário
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Acesse mais de 700 laboratórios e cursos

Visão geral

Neste exercício, você vai gerar mensagens de registro em um aplicativo, filtrar e analisar os registros no Cloud Logging e fazer a exportação deles para um coletor do BigQuery.

Objetivos

Neste laboratório, você vai aprender o seguinte:

  • Configurar e implantar um aplicativo de teste

  • Analisar as entradas de registro geradas pelo aplicativo de teste

  • Criar e usar uma métrica com base em registros

  • Exportar os registros do aplicativo para o BigQuery

Configuração e requisitos

Nesta tarefa, use o Qwiklabs para seguir as etapas de inicialização do laboratório.

Para cada laboratório, você recebe um novo projeto do Google Cloud e um conjunto de recursos por um determinado período e sem custos financeiros.

  1. Faça login no Qwiklabs em uma janela anônima.

  2. Confira o tempo de acesso do laboratório (por exemplo, 1:15:00) e finalize todas as atividades nesse prazo.
    Não é possível pausar o laboratório. Você pode reiniciar o desafio, mas vai precisar refazer todas as etapas.

  3. Quando tudo estiver pronto, clique em Começar o laboratório.

  4. Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.

  5. Clique em Abrir Console do Google.

  6. Clique em Usar outra conta, depois copie e cole as credenciais deste laboratório nos locais indicados.
    Se você usar outras credenciais, vai receber mensagens de erro ou cobranças.

  7. Aceite os termos e pule a página de recursos de recuperação.

Após as etapas iniciais de login, o painel do projeto vai aparecer.

Painel do projeto, com blocos como "Informações do projeto", "APIs", "Recursos" e "Faturamento"

Ative o Google Cloud Shell

O Google Cloud Shell é uma máquina virtual com ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud.

O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.

  1. No console do Cloud, clique no botão "Abrir o Cloud Shell" na barra de ferramentas superior direita.

    Ícone do Cloud Shell em destaque

  2. Clique em Continuar.

O provisionamento e a conexão do ambiente podem demorar um pouco. Quando você estiver conectado, já estará autenticado, e o projeto estará definido com seu PROJECT_ID. Exemplo:

ID do projeto em destaque no terminal do Cloud Shell

A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.

  • Para listar o nome da conta ativa, use este comando:
gcloud auth list

Saída:

Credentialed accounts: - @.com (active)

Exemplo de saída:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Para listar o ID do projeto, use este comando:
gcloud config list project

Saída:

[core] project =

Exemplo de saída:

[core] project = qwiklabs-gcp-44776a13dea667a6 Observação: a documentação completa da gcloud está disponível no guia com informações gerais sobre a gcloud CLI .

Tarefa 1. configure um aplicativo de teste, implante-o e configure uma VM de teste de carga

Para testar a geração de registros, a exportação de registros e o Error Reporting, vamos implantar o aplicativo HelloLoggingNodeJS, usado em um exercício anterior, no Cloud Run.

  1. Verifique se as APIs Cloud Build, Compute Engine e Cloud Run estão ativadas, porque serão necessárias nas etapas seguintes:

gcloud services enable cloudbuild.googleapis.com \ run.googleapis.com \ compute.googleapis.com \ cloudprofiler.googleapis.com
  1. Depois de ativar as APIs, clone o repositório https://github.com/haggman/HelloLoggingNodeJS.git:

git clone https://github.com/haggman/HelloLoggingNodeJS.git

Esse repositório contém um aplicativo Node.js básico usado para teste.

  1. Mova-o para a pasta HelloLoggingNodeJS e abra o index.js no editor do Cloud Shell:

cd HelloLoggingNodeJS edit index.js
  1. Se um erro indicar que não foi possível carregar o editor de código porque os cookies de terceiros estavam desativados, clique em Abrir em uma nova janela e mude para a nova guia.

  2. Reserve alguns minutos para ler atentamente o código. Talvez você reconheça esse código de alguns dos exemplos do módulo da aula.

  • Observe que ele carrega a biblioteca do Error Reporting do Google e a biblioteca de depuração.

  • Role para baixo e observe que existem vários métodos para gerar registros, erros e registros de erros.

  • Preste muita atenção ao /random-error. Ele gera cerca de um erro a cada mil solicitações. Na próxima etapa, mude esse valor para 20 solicitações. Isso faz com que você veja mais erros.

  1. Para aumentar a exceção não capturada /random-error de 1 em 1000 para 1 em 20. Abra o index.js no editor do Cloud Shell.

  2. No arquivo index.js, substitua a linha 125 - 135 pelo seguinte:

//Gera uma exceção não capturada a cada 20 solicitações app.get('/random-error', (req, res) => { error_rate = parseInt(req.query.error_rate) || 20 let errorNum = (Math.floor(Math.random() * error_rate) + 1); if (errorNum==1) { console.log("Called /random-error, and it's about to error"); doesNotExist(); } console.log("Called /random-error, and it worked"); res.send("Worked this time."); });
  1. No editor, confira também o arquivo rebuildService.sh. Ele usa o Cloud Build para criar um contêiner do Docker e, depois, cria (ou atualiza) um aplicativo do Cloud Run com esse contêiner. O serviço do Cloud Run é compatível com o acesso anônimo, tem alguns identificadores, de acordo com a fase e o departamento, além de permitir até cinco conexões simultâneas para qualquer instância de execução.

  2. Volte para a janela do Cloud Shell. Se o Cloud Shell não estiver visível, clique em Abrir terminal.

  3. Crie o contêiner e execute o arquivo para iniciar o aplicativo do Cloud Run:

sh rebuildService.sh

Esse processo demora de um a dois minutos.

  1. No Cloud Shell, a mensagem final contém o URL do novo serviço. Clique no link para testar o aplicativo em uma nova guia. Ele vai retornar uma resposta "Hello World!" simples.

  2. Na janela do terminal do Cloud Shell, crie uma variável de ambiente de URL e defina o URL do seu aplicativo como valor dela:

URL=$(gcloud run services list --platform managed --format="value(URL)" | grep hello-logging)
  1. Repita o valor da variável para testar se ela foi criada corretamente:

echo $URL
  1. Use um bash durante a repetição para gerar carga na rota random-error do aplicativo. Verifique se a maioria das mensagens "Funcionou" começa a aparecer. Caso contrário, verifique se o aplicativo está em execução e se a propriedade do URL foi configurada corretamente:

while true; \ do curl -s $URL/random-error \ -w '\n' ;sleep .1s;done

Tarefa 2: explore os arquivos de registro de um aplicativo de teste

Agora você tem um aplicativo implantado no Cloud Run que, dependendo do URL, pode fazer um registro, registrar pelo Winston ou gerar relatórios de erros. Reserve alguns minutos para conferir esses registros.

  1. No console do Google Cloud, use o menu de navegação (Ícone do menu de navegação) para acessar Registros > Buscador de registros.

  2. Ative Mostrar consulta e apague todas que aparecerem por padrão.

  3. Use o menu suspenso Recurso para selecionar o serviço do Cloud Run Revisão do Cloud Run > hello-logging. Não se esqueça de Aplicar sua seleção, ou ela não será filtrada por esse recurso.

  4. Clique em Executar consulta.

Você provavelmente só verá 200 mensagens. Como encontrar os erros? Uma forma de fazer isso é excluir todas as respostas 200 para ver o que resta.

  1. Para fazer isso, clique em um dos códigos de status 200 e selecione Ocultar entradas correspondentes.

Esse processo não é perfeito, mas permite que você encontre mensagens de registro vinculadas ao erro e os stack traces gerados por ele.

  1. Use os Campos de registro para filtrar e mostrar apenas as mensagens com Gravidade definida como Erro.

Agora você verá as respostas quando um erro for gerado.

  1. Abra e verifique uma das entradas. Verifique qual arquivo de registro contém os erros 500. Quando terminar, clique em Limpar no filtro de gravidade "Erro".

  2. Para ver os stack traces, que são os itens que mais interessam aos desenvolvedores, use os Campos de registro para filtrar pelo registro de erro padrão run.googleapis.com/stderr.

Isso mostra as exceções, mas onde cada uma começa?

  1. É bom conferir tanto o registro stderr com os stack traces como as solicitações com os erros de status 500. Faça o seguinte:

  • Clique em Criador de consultas e selecione Nome do registro.
  • Escolha os registros de solicitações e stderr do Cloud Run e clique em Aplicar para adicionar os itens à consulta.
  • Selecione Executar consulta.
Observação: espere de 10 a 12 minutos para que os erros de status 500 apareçam.
  1. Reserve um tempo para explorar os registros exibidos. Agora você vai encontrar a resposta que retorna o erro para a solicitação do cliente e o stack trace enviado para stderr.

Tarefa 3. crie e use uma métrica com base em registros

Você acabou de analisar o arquivo de registro do serviço do Cloud Run e uma entrada de erro. Mas e se você estiver fazendo uma geração de registros personalizada, não necessariamente relacionada a erros, e quiser criar uma métrica personalizada com base nela? Nesta parte do exercício, você vai mudar a repetição para chamar a rota /score e criar uma métrica com base nas pontuações que forem recebidas.

Nesta tarefa, você fará as seguintes atividades:

  • Gerar uma carga no endpoint /score

  • Analisar os registros gerados pela carga

  • Ajustar o código para colocar a mensagem em um formato mais utilizável

  • Criar uma métrica com base em registros

Gerar uma carga no endpoint /score

  1. Acesse ou abra novamente o Cloud Shell.

  2. Use CTRL+C para interromper a repetição do teste.

  3. Modifique a repetição while para chamar a rota /score e reinicie a repetição. Verifique se as novas mensagens estão mostrando pontuações aleatórias:

while true; \ do curl -s $URL/score \ -w '\n' ;sleep .1s;done

Explore os registros gerados pela carga

  1. Acesse o console do Google Cloud e abra novamente a página Registros | Buscador de registros.

  2. Limpe qualquer consulta atual e use o Recurso para exibir seus registros da Revisão do Cloud Run | hello-logging.

  3. Clique em Aplicar.

  4. Selecione Executar consulta.

Todas as entradas de código de status 200 devem pertencer à execução de teste mais recente. Caso contrário, clique em Ir para momento atual para atualizar a visualização dos registros.

  1. Abra uma das entradas de código de status 200. Como saber se ela pertence a uma solicitação /score? Por que a pontuação não está sendo exibida na entrada de registro?

  2. Use o Buscador de campos de registros para filtrar o registro run.googleapis.com/stdout. Agora você verá todas as mensagens impressas pelo próprio código. Por que seria difícil criar uma métrica que exibisse as pontuações da entrada?

Seria melhor se as mensagens fossem geradas como JSON estruturado em vez de texto não estruturado. Dessa forma, seria possível acessar e extrair facilmente apenas as pontuações da nossa métrica com base em registros.

  1. Na janela do terminal do Cloud Shell, use CTRL+C para interromper a repetição while do teste.

Ajuste o formato do registro para facilitar o acesso à pontuação

  1. Abra o arquivo index.js no editor do Cloud Shell e localize o código da rota /score, próximo à linha 90.

  2. Substitua a rota /score pelo código abaixo:

//Basic NodeJS app built with the express server app.get('/score', (req, res) => { //Random score, the contaierID is a UUID unique to each //runtime container (testing was done in Cloud Run). //funFactor is a random number 1-100 let score = Math.floor(Math.random() * 100) + 1; let output = { message: '/score called', score: score, containerID: containerID, funFactor: funFactor }; console.log(JSON.stringify(output)); //Basic message back to browser res.send(`Your score is a ${score}. Happy?`); });

Repare como o conteúdo da mensagem agora é uma propriedade do objeto output e como a mensagem impressa é o objeto JSON em string.

Como você modificou o código, inicie o aplicativo localmente no Cloud Shell para ter certeza de que não inseriu nenhum erro.

  1. Na janela do terminal do Cloud Shell, instale as dependências e inicie o aplicativo. Verifique se você está na pasta HelloLoggingNodeJS:

export GCLOUD_PROJECT=$DEVSHELL_PROJECT_ID cd ~/HelloLoggingNodeJS/ npm i npm start
  1. Se a mensagem "Hello world listening on port 8080" aparecer, use CTRL+C para interromper o aplicativo e avançar para a próxima etapa. Se você encontrar erros, faça as correções necessárias e verifique se o aplicativo foi iniciado antes de continuar.

  2. Recrie e implante o aplicativo novamente, executando rebuildService.sh:

sh rebuildService.sh
  1. Aguarde a conclusão da recriação e reimplantação do aplicativo. Depois, reinicie a repetição do teste:

while true; \ do curl -s $URL/score \ -w '\n' ;sleep .1s;done

Verifique se as mensagens de pontuação estão sendo exibidas novamente.

  1. Acesse a guia do navegador com o Navegador de Registros e clique em Ir até momento atual para abrir os registros mais recentes.

As entradas ainda precisam ser filtradas para exibir os registros stdout do Cloud Run para hello-logging.

  1. Abra uma das entradas e analise o novo formato.

Crie uma métrica com base nos registros da pontuação

  1. Clique em Criar métrica e defina os campos a seguir com os valores mencionados:
  • Tipo de métrica: distribuição

  • Nome da métrica de registros: score_averages

  • Unidades: 1

  • Nome do campo: jsonPayload.score

  1. Clique no link AVANÇADO e defina os seguintes campos com os valores mencionados:
  • Tipo: linear

  • Valor inicial: 0

  • Número de buckets: 20

  • Largura do bucket: 5

  1. Clique em Criar métrica.

  2. Use o Menu de navegação (Ícone do menu de navegação) para alternar Monitoramento > Painéis. Talvez seja necessário aguardar enquanto o espaço de trabalho é criado.

  3. Clique em + Criar painel.

  4. Em Nome do novo painel, digite Score Fun.

  5. Clique em Gráfico de linhas.

  6. Defina Título do gráfico como Score Info.

  7. Na seção Resource & Metric, selecione Revisão do Cloud Run > Métrica com base em registros > logging/user/score_averages.

  8. Clique em Aplicar.

  9. O fator de alinhamento foi definido por padrão como 50º percentil. Caso contrário, defina o fator como 50º percentil (mediana).

Painel "Score Fun"

Tarefa 4. exporte os registros do aplicativo para o BigQuery

A exportação de registros para o BigQuery não só permite que eles sejam armazenados por mais tempo, mas também permite analisá-los com SQL e o poder absoluto do BigQuery. Nesta tarefa, você vai configurar a exportação dos registros do Cloud Run para o BigQuery e usá-la para encontrar mensagens de erro geradas pela rota random-error do aplicativo.

Nesta tarefa, você fará as seguintes atividades:

  • Configurar uma exportação de registro para o BigQuery

Configurar um coletor de exportação para o BigQuery

  1. Acesse a janela do Cloud Shell com a repetição while ao enviar a carga para nosso aplicativo. Use CTRL+C para interromper essa ação.

  2. Modifique o while para enviar novamente a carga para a rota random-error. Execute a repetição mais uma vez:

while true; \ do curl -s $URL/random-error \ -w '\n' ;sleep .1s;done
  1. Use o menu de navegação do console do Google Cloud para acessar Registros > Buscador de registros.

  2. Exclua as consultas existentes e faça uma nova, filtrando o Recurso como Revisão do Cloud Run > hello-logging.

  3. Clique em Aplicar.

  4. Abra uma ou duas entradas para verificar se elas estão relacionadas às solicitações /random-error.

  5. Crie um coletor usando Mais ações > Criar coletor.

  6. Configure o Nome do coletor como hello-logging-sink.

  7. Clique em Próxima.

  8. Defina o serviço do coletor como Conjunto de dados do BigQuery.

  9. Para o conjunto de dados do BigQuery, selecione Criar novo conjunto de dados do BigQuery.

  10. Nomeie o Dataset ID como hello_logging_logs.

  11. Clique em CRIAR CONJUNTO DE DADOS.

  12. Clique em Próxima.

  13. Em Escolha os registros para incluir no coletor, clique em Próxima.

  14. Clique em CRIAR COLETOR. Em Criar coletor, observe como ele cria uma conta de serviço usada para gravação no novo conjunto de dados do BigQuery.

  15. Use o Menu de navegação para acessar o BigQuery.

  16. Na seção Explorer, expanda o nó dos projetos e o conjunto de dados hello_logging_logs.

  17. Clique na tabela requests.

  18. Na caixa de diálogo com guias abaixo da janela de consulta, clique em Visualização e analise as informações nesse registro. Ele contém informações gerais relacionadas às solicitações. Qual URL foi solicitado, quando e de onde.

  19. Clique na guia Esquema e reserve um tempo para analisar o esquema da tabela gerada. Observe que estruturas de dados aninhadas e repetidas são usadas para colunas como resource e httpRequest.

  20. Selecione a tabela stderr. A saída e os erros padrão são normalmente usados por aplicativos para diferenciar mensagens de registro simples de mensagens relacionadas a um erro. Os aplicativos Node.js vão descartar qualquer informação de exceção/erro não capturada para o erro padrão.

Observação: se a tabela stderr não aparecer, aguarde de cinco a 10 minutos.
  1. Clique novamente na Visualização dos dados na tabela. Agora você está vendo os erros aleatórios à medida que eles afetam diferentes partes da pilha de chamadas de solicitação. As entradas com um textPayload que contêm ReferenceError são os erros reais.

  2. Clique na guia Esquema e analise a estrutura real da tabela. Você vai encontrar mais uma vez a combinação de campos padrão e aninhados repetidos.

  3. Crie e execute uma consulta para extrair apenas os textPayloads que começam com ReferenceError:

  • Para iniciar a consulta, clique no botão Consulta.

  • Modifique SELECT para extrair o textPayload.

  • Adicione a cláusula where.

  • Substitua [project-id] pelo ID do projeto do GCP e [date] pela data especificada no nome da tabela:

SELECT textPayload FROM `[project-id].hello_logging_logs.run_googleapis_com_stderr_[date]` WHERE textPayload LIKE 'ReferenceError%'
  1. Para fazer uma contagem, modifique a consulta para contar as entradas:
  • Execute novamente e verifique o número que você está recebendo.

  • Substitua [project-id] pelo ID do projeto do GCP e [date] pela data especificada no nome da tabela:

SELECT count(textPayload) FROM `[project-id].hello_logging_logs.run_googleapis_com_stderr_[date]` WHERE textPayload LIKE 'ReferenceError%'
  1. Para verificar a porcentagem de erro, crie uma consulta que compare o total de solicitações com as solicitações ReferenceError%.
  • Substitua [project-id] pelo ID do projeto do GCP e [date] pela data especificada no nome da tabela.

  • O erro é 1/1.000?

SELECT errors / total_requests FROM ( SELECT ( SELECT COUNT(*) FROM `[project-id].hello_logging_logs.run_googleapis_com_requests_[date]`) AS total_requests, ( SELECT COUNT(textPayload) FROM `[project-id].hello_logging_logs.run_googleapis_com_stderr_[date]` WHERE textPayload LIKE 'ReferenceError%') AS errors)

Parabéns!

Neste exercício, você usou um aplicativo de teste para gerar registros, criou métricas com base nos dados dos registros e exportou esses registros para o BigQuery. Bom trabalho.

Finalize o laboratório

Clique em Terminar o laboratório após a conclusão. O Google Cloud Ensina remove os recursos usados e limpa a conta por você.

Você vai poder avaliar sua experiência no laboratório. Basta selecionar o número de estrelas, digitar um comentário e clicar em Enviar.

O número de estrelas indica o seguinte:

  • 1 estrela = muito insatisfeito
  • 2 estrelas = insatisfeito
  • 3 estrelas = neutro
  • 4 estrelas = satisfeito
  • 5 estrelas = muito satisfeito

Feche a caixa de diálogo se não quiser enviar feedback.

Para enviar seu feedback, fazer sugestões ou correções, use a guia Suporte.

Copyright 2020 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.

Antes de começar

  1. Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
  2. Os laboratórios têm um limite de tempo e não têm o recurso de pausa. Se você encerrar o laboratório, vai precisar recomeçar do início.
  3. No canto superior esquerdo da tela, clique em Começar o laboratório

Usar a navegação anônima

  1. Copie o nome de usuário e a senha fornecidos para o laboratório
  2. Clique em Abrir console no modo anônimo

Fazer login no console

  1. Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
  2. Aceite os termos e pule a página de recursos de recuperação
  3. Não clique em Terminar o laboratório a menos que você tenha concluído ou queira recomeçar, porque isso vai apagar seu trabalho e remover o projeto

Este conteúdo não está disponível no momento

Você vai receber uma notificação por e-mail quando ele estiver disponível

Ótimo!

Vamos entrar em contato por e-mail se ele ficar disponível

Um laboratório por vez

Confirme para encerrar todos os laboratórios atuais e iniciar este

Use a navegação anônima para executar o laboratório

Para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.