1. Introdução
Neste laboratório, você vai usar o Gemini, um colaborador com tecnologia de IA do Google Cloud, para resolver um problema na implantação de uma função do Cloud analisando registros de erros, identificando a causa raiz do problema e descobrindo como corrigi-lo.
O que você vai fazer…
- Você vai usar o terminal do Cloud Shell e a gcloud CLI para configurar o ambiente. Isso inclui ativar APIs relevantes do Google e criar uma função do Cloud com o código fornecido
- Você vai usar o resumo de registros do Cloud Logging para gerar resumos e entender as informações coletadas.
- Você vai conversar com o Gemini para receber ajuda para resolver o problema.
O que você vai aprender…
- Como usar o Gemini com a observabilidade do Google Cloud e a solução de problemas.
- Como encontrar e entender os registros da função do Cloud com a ajuda do Gemini.
O que é necessário…
- Navegador da Web Google Chrome
- Tenha um projeto do Google Cloud com o faturamento ativado.
- Uma Conta do Google com permissões de acesso ao projeto, permitindo que você ative APIs e manipule recursos
Este laboratório é destinado a engenheiros de DevOps e de plataforma e desenvolvedores de software de todos os níveis, incluindo iniciantes. Nosso foco será a experiência prática com os recursos do Gemini na solução de problemas.
2. Configuração
Nesta seção, você vai encontrar tudo o que precisa fazer para começar o laboratório.
Configurar ambiente
1. Faça login no console do Cloud abrindo https://console.cloud.google.com.
2. Selecione um projeto do Google Cloud com que você pretende trabalhar neste laboratório.
3. Abra a página do Cloud Functions no console. Para isso, selecione o Cloud Functions no menu de navegação (ícone no canto superior esquerdo ☰ na janela do console).
Como alternativa, pesquise "Cloud Functions" na área de pesquisa do console:
Clique no botão "Criar função" na parte de cima da lista de funções
Se você nunca usou o Cloud Functions nesse projeto, para trabalhar, será necessário ativar as APIs do Google.
Clique em ATIVAR para continuar.
4. Definir as propriedades básicas da nova função do Cloud.
- Defina o nome como "
codelab-cf
" - Selecione a opção Permitir invocações não autenticadas.
Para concluir a etapa, clique no botão PRÓXIMO na área inferior esquerda da janela:
Depois de clicar em AVANÇAR, talvez você receba uma solicitação para ativar outras APIs do Google. Como na etapa 4, clique em ATIVAR.
Configurar o ambiente de execução e o código da função do Cloud
Este codelab usa Python como uma linguagem de programação. Não se preocupe se não estiver familiarizado com Python. Para concluir este codelab, você não precisa ter conhecimento de Python.
5. Selecione Python 3.11 como o ambiente de execução da função
A alteração do tempo de execução altera o código-fonte mostrado no Editor in-line.
6. Copie o código abaixo no Editor in-line para modificar o exemplo do guia de início rápido de geração automática.
from google.cloud import storage
import json
import re
client = storage.Client()
def get_object_list(request):
if request.args and 'path' in request.args:
path = request.args['path']
else:
return '{}'
parsed = re.search('gs:\/\/([a-zA-Z0-9_-]{3,63})\/([-a-zA-Z0-9_\+.\/]*)', path)
bucket, prefix = parsed.group(1), parsed.group(2)
blobs = client.list_blobs(bucket, prefix=prefix, delimiter='/')
objects = []
if (blobs):
for blob in blobs:
objects.append(blob.name)
return json.dumps(objects)
Esse código lê o atributo path
da solicitação GET, analisa o caminho para selecionar o nome do bucket e chama a API Google Cloud Storage para receber uma lista de objetos armazenados nesse caminho. A função (get_object_list
) aceita uma solicitação que é um objeto Flask como argumento de entrada e retorna os nomes dos objetos como uma matriz JSON.
7. Selecione o arquivo requirements.txt
na lista de arquivos deixadas no Inline Editor. Substitua a lista atual de dependências pela nova copiando o código abaixo no editor in-line.
google-cloud-storage
8. Para implantar a função do Cloud, clique em IMPLANTAR no canto inferior esquerdo.
Talvez seja necessário aguardar alguns minutos até que o processo de implantação seja concluído. Se você tiver seguido as instruções de configuração, a implantação será reportada como falha.
3. Como encontrar e resolver o problema
Nesta seção, você vai usar o recurso de explicações de registro e outras orientações de suporte do Gemini para identificar o problema e a solução.
1. A implantação falha. Você verá uma mensagem de erro informando isso, com mais informações e uma opção para ver os registros de implantação. Clique em "VIEW LOGS" para conferir os registros da implantação.
OBSERVAÇÃO: os registros de implantação serão abertos em uma guia separada no mesmo navegador. É preciso navegar entre as guias para concluir este codelab.
OBSERVAÇÃO: é possível que você não veja linhas de registro ao clicar em VER REGISTROS ou veja apenas algumas linhas. Nesse caso, use o seletor de período no painel de consulta da Análise de registros e selecione Últimos 30 minutos.
2. Revise os registros na guia aberta. Observe que os resumos de registros parecem várias linhas da pilha de chamadas da exceção. Isso ocorre porque a função do Cloud captura textos impressos em stdout
ou stderr
e grava cada linha como uma entrada de registro separada. Outras linhas de registro resumem as informações sobre o código de erro de saída, além de outras informações relatadas pelas APIs do Cloud Functions e do Cloud Run.
Clique em qualquer uma das linhas para conferir mais informações sobre um registro específico. Os registros expandidos têm outros elementos da interface que permitem que você copie todas as informações sobre o registro, expanda todos os campos para mostrar todos os dados da entrada e explique a entrada usando o Gemini.
4. A pilha de chamadas de exceção não é muito informativa. Procure nos registros para encontrar o fim do registro de stack trace da exceção. É a linha que diz "Container called exit(1)
". O resumo de registro a seguir diz:
functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...
Parece um bom candidato para investigação. Clique nessa linha para expandir a entrada de registro. Depois clique em "Explicar esta entrada de registro". para conferir mais informações sobre o registro selecionado.
Se o Gemini não tiver sido usado anteriormente neste projeto, você vai receber uma solicitação para ativar uma API obrigatória. Se for solicitado que você ative a API, clique em "ATIVAR" para continuar.
OBSERVAÇÃO: às vezes, aparece um erro nas solicitações do Gemini. Nesse caso, repita a operação de solicitação mais uma vez para receber a resposta. Por exemplo, clique em "Explicar esta entrada de registro". novamente.
5. Revise a explicação fornecida pelo Gemini. Se a explicação não for suficiente ou estiver clara, peça para o Gemini dar mais informações usando um dos comandos a seguir ou escrevendo sua própria pergunta
Você pode fornecer mais informações sobre esse registro?
Você pode fornecer mais informações sobre o erro?
6. Em seguida, peça sugestões ao Gemini para resolver o problema. Por exemplo, pergunte ao Gemini
Como resolver o problema?
Sugira uma solução para resolver o erro
Sugira como corrigir o erro
A resposta do Gemini pode variar de acordo com o contexto atual, bem como a redação e o formato do comando. O Gemini pode recomendar que o código-fonte da função do Cloud tenha uma função com o nome hello_http
.
7. Esta é a guia que mostra os registros do Cloud Functions. Selecione a guia anterior que mostra a página de implantação da função do Cloud com o erro e clique em EDITAR.
8. Confirme se a autenticação ainda está definida como Permitir invocações não autenticadas e atualize a seleção, se necessário.
9. Clique em PRÓXIMO na parte inferior para ver o Editor in-line. Siga a recomendação do Gemini e mude o nome da função de get_order_list
para hello_http
.
Depois de concluir a edição, clique em IMPLANTAR.
Talvez seja necessário aguardar alguns minutos até que o processo de implantação seja concluído. Confirme se a implantação foi concluída com êxito e se nenhuma mensagem de erro é exibida.
OBSERVAÇÃO: o Console pode continuar mostrando a última mensagem de erro até que o processo de implantação seja concluído.
10. Verifique se a função do Cloud está operacional enviando a seguinte solicitação HTTPS usando curl
. É possível usar o Cloud Shell ou qualquer terminal que tenha a CLI curl
e gcloud
instaladas.Execute o comando a seguir no terminal do Cloud Shell.
curl -m 70 -X GET \
https://us-central1-${GOOGLE_CLOUD_PROJECT}.cloudfunctions.net/\
codelab-cf?path=gs://cloud-samples-data/generative-ai/image/ \
-H "Authorization: bearer $(gcloud auth print-identity-token)"
OBSERVAÇÃO: para executar esse comando em um terminal, você precisará se autenticar usando a gcloud CLI e definir o valor do ID do projeto como a variável de ambiente GOOGLE_CLOUD_PROJECT
.
Bônus
O nome da função hello_http
foi definido como um ponto de entrada padrão para a função do Cloud acionada por HTTP quando o ambiente de execução do Python foi selecionado. Uma solução alternativa é manter get_order_list
como o nome da função no código-fonte e atualizar o campo do ponto de entrada da função do Cloud localizada acima do editor inline à direita do campo "Ambiente de execução":
Alterar o ponto de entrada de hello_http
para get_order_list
resolverá o problema com a implantação.
4. Limpeza
Para fazer a limpeza, encerre o projeto ou exclua a instância da função do Cloud. É possível excluir o Cloud Functions usando o console ou com o comando da CLI, como no exemplo abaixo:
gcloud functions delete codelab-cf --region=us-central1
5. Parabéns!
Parabéns! Você já usou o Gemini para resolver os problemas do seu aplicativo e agora sabe como ele pode ajudar a entender os registros e a encontrar respostas para perguntas sobre o Google Cloud.