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.
Faça login no Qwiklabs em uma janela anônima.
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.
Quando tudo estiver pronto, clique em Começar o laboratório.
Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.
Clique em Abrir Console do Google.
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.
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.
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.
No console do Cloud, clique no botão "Abrir o Cloud Shell" na barra de ferramentas superior direita.
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:
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:
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.
Verifique se as APIs Cloud Build, Compute Engine e Cloud Run estão ativadas, porque serão necessárias nas etapas seguintes:
Esse repositório contém um aplicativo Node.js básico usado para teste.
Mova-o para a pasta HelloLoggingNodeJS e abra o index.js no editor do Cloud Shell:
cd HelloLoggingNodeJS
edit index.js
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.
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.
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.
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.");
});
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.
Volte para a janela do Cloud Shell. Se o Cloud Shell não estiver visível, clique em Abrir terminal.
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.
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.
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)
Repita o valor da variável para testar se ela foi criada corretamente:
echo $URL
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.
No console do Google Cloud, use o menu de navegação () para acessar Registros > Buscador de registros.
Ative Mostrar consulta e apague todas que aparecerem por padrão.
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.
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.
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.
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.
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".
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?
É 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.
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
Acesse ou abra novamente o Cloud Shell.
Use CTRL+C para interromper a repetição do teste.
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
Acesse o console do Google Cloud e abra novamente a página Registros | Buscador de registros.
Limpe qualquer consulta atual e use o Recurso para exibir seus registros da Revisão do Cloud Run | hello-logging.
Clique em Aplicar.
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.
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?
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.
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
Abra o arquivo index.js no editor do Cloud Shell e localize o código da rota /score, próximo à linha 90.
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.
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
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.
Recrie e implante o aplicativo novamente, executando rebuildService.sh:
sh rebuildService.sh
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.
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.
Abra uma das entradas e analise o novo formato.
Crie uma métrica com base nos registros da pontuação
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
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
Clique em Criar métrica.
Use o Menu de navegação () para alternar Monitoramento > Painéis. Talvez seja necessário aguardar enquanto o espaço de trabalho é criado.
Clique em + Criar painel.
Em Nome do novo painel, digite Score Fun.
Clique em Gráfico de linhas.
Defina Título do gráfico como Score Info.
Na seção Resource & Metric, selecione Revisão do Cloud Run > Métrica com base em registros > logging/user/score_averages.
Clique em Aplicar.
O fator de alinhamento foi definido por padrão como 50º percentil. Caso contrário, defina o fator como 50º percentil (mediana).
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
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.
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
Use o menu de navegação do console do Google Cloud para acessar Registros > Buscador de registros.
Exclua as consultas existentes e faça uma nova, filtrando o Recurso como Revisão do Cloud Run > hello-logging.
Clique em Aplicar.
Abra uma ou duas entradas para verificar se elas estão relacionadas às solicitações /random-error.
Crie um coletor usando Mais ações > Criar coletor.
Configure o Nome do coletor como hello-logging-sink.
Clique em Próxima.
Defina o serviço do coletor como Conjunto de dados do BigQuery.
Para o conjunto de dados do BigQuery, selecione Criar novo conjunto de dados do BigQuery.
Nomeie o Dataset ID como hello_logging_logs.
Clique em CRIAR CONJUNTO DE DADOS.
Clique em Próxima.
Em Escolha os registros para incluir no coletor, clique em Próxima.
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.
Use o Menu de navegação para acessar o BigQuery.
Na seção Explorer, expanda o nó dos projetos e o conjunto de dados hello_logging_logs.
Clique na tabela requests.
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.
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.
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.
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.
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.
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%'
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%'
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.
Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
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.
No canto superior esquerdo da tela, clique em Começar o laboratório
Usar a navegação anônima
Copie o nome de usuário e a senha fornecidos para o laboratório
Clique em Abrir console no modo anônimo
Fazer login no console
Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
Aceite os termos e pule a página de recursos de recuperação
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.
Nestes exercícios, você aprenderá a gerar mensagens de registro em um aplicativo, filtrar e analisar os registros, além de acompanhar e corrigir os erros encontrados.
Duração:
Configuração: 0 minutos
·
Tempo de acesso: 90 minutos
·
Tempo para conclusão: 90 minutos