Tutorial: Como depurar um serviço do Cloud Run usando o Eventarc
Neste tutorial, você verá como solucionar erros de ambiente de execução encontrados ao implantar eventos do Cloud Storage usando os registros de auditoria do Cloud em um serviço não autenticado do Cloud Run.
Criar um bucket do Cloud Storage para ser a origem do evento.
Crie, faça upload e implante uma imagem de contêiner no Cloud Run.
Criar gatilhos do Eventarc
Solucione problemas e corrija erros de ambiente de execução.
Siga os pré-requisitos em Como receber um evento de registros de auditoria do Cloud.
Crie dois buckets de armazenamento em duas regiões como a origem do evento para o serviço do Cloud Run:
Depois que a origem do evento for criada, implante o serviço de receptor de eventos no Cloud Run.
Como revisar o código
O código deste tutorial consiste em:
Um servidor que processa mensagens recebidas encapsuladas em um CloudEvent dentro da solicitação HTTP POST:
Um Dockerfile que define o ambiente operacional do serviço. O conteúdo do Dockerfile varia por linguagem.
Para enviar o código, siga estas etapas:
Crie a imagem do contêiner com o Cloud Build e faça o upload para o Container Registry:
Substitua PROJECT_ID pelo ID do projeto do Google Cloud. Verifique o ID do projeto atual com gcloud config get-value project.
Após a conclusão, uma mensagem de "SUCESSO" é exibida com o ID, o horário de criação e o nome da imagem. A imagem é armazenada no Container Registry e poderá ser reutilizada, se você quiser.
Use o auxiliar de credencial gcloud para autorizar o Docker a enviar o contêiner para o Container Registry.
audit-storage é o nome do contêiner. Verifique o ID do projeto atual com gcloud config get-value project. Após a conclusão, uma mensagem de "SUCESSO" é exibida. A imagem é armazenada no Container Registry e poderá ser reutilizada, se você quiser.
Implante a imagem do contêiner no Cloud Run:
Substitua PROJECT_ID pelo ID do projeto do GCP.
audit-storage é o nome do contêiner e troubleshoot-service é o nome do serviço do Cloud Run.
Observe que a imagem do contêiner é implantada no serviço e no cluster que você configurou anteriormente em Como configurar os padrões do gcloud.
Ao implantar no Cloud Run, responda y, "Sim", ao prompt permitir não autenticado. Para mais detalhes sobre a autenticação baseada em IAM, consulte Papéis e permissões do Eventarc.
Quando a implantação for bem-sucedida, a linha de comando exibirá o URL de serviço.
Agora que você implantou um serviço do Cloud Run, configure um gatilho para detectar eventos do Cloud Storage por meio de registros de auditoria.
Crie um gatilho de registro de auditoria para detectar eventos do Cloud Storage:
Isso cria um gatilho chamado troubleshoot-trigger.
Para confirmar se troubleshoot-trigger foi criado, execute:
troubleshoot-trigger é exibido listado com um destino de troubleshoot-service.
Como gerar e ver um evento
Para confirmar que você implantou o serviço e pode receber eventos do Cloud Storage:
Crie e faça upload de um arquivo no primeiro bucket de armazenamento:
Monitore os registros para verificar se o serviço recebeu um evento. Os registros de serviço mostram que o serviço está detectando eventos, indicando um problema na configuração:
Como investigar o problema
Agora é possível passar pelo processo de investigação do motivo pelo qual o serviço não está recebendo eventos.
Neste tutorial, os eventos do Cloud Storage são emitidos por meio de registros de auditoria e enviados ao Cloud Run. Verifique se os registros de auditoria estão ativados para o Cloud Storage.
Acesse IAM e administrador > Registros de auditoria e marque a caixa de seleção Google Cloud Storage. Acessar o console de registros de auditoria do Cloud
Verifique se os tipos de registro de leitura, leitura e gravação dos registros de auditoria do Cloud estão selecionados.
Depois de ativar os registros de auditoria do Cloud, faça upload do arquivo novamente e verifique os registros. O serviço ainda não recebe eventos e isso pode estar relacionado à localização do gatilho.
Local do gatilho
Pode haver vários recursos em locais diferentes, e você precisa filtrar eventos de origens que estão na mesma região que o destino do Cloud Run. Para mais informações, consulte Locais compatíveis com o Eventarc.
Neste tutorial, você implantou o serviço do Cloud Run em us-central1. Você também criou um gatilho no mesmo local porque eventarc/location estava definido como us-central1.
Para listar o local do gatilho, descreva o gatilho:
No entanto, você criou dois buckets em locais us-east1 e us-west1. Para receber eventos desses locais, é necessário criar acionadores neles. Vamos criar um gatilho em us-east1.
Exclua o gatilho existente no local us-central1:
Defina o local e a região como us-east1:
Envie o código novamente.
Crie um novo gatilho no local us-east1:
Verifique se o gatilho foi criado:
Um gatilho pode levar até 10 minutos para ser inicializado antes de começar a entregar eventos.
Depois que os gatilhos são criados, há até 10 minutos de tempo de inicialização antes do início dos eventos. Execute o seguinte comando para confirmar se os gatilhos estão ativos:
Uma resposta semelhante é exibida para indicar o status do acionador:
Após 10 minutos, faça upload de um arquivo novamente para cada bucket. Os eventos de cada arquivo são gravados nos registros de serviço do Cloud Run. Se o serviço não receber eventos, ele poderá estar relacionado ao tamanho dos eventos.
Os eventos enviados não podem exceder os limites de tamanho do evento (512 KB).
Um gatilho que enviou eventos anteriormente parou de funcionar
Verifique se a origem está gerando eventos. Verifique os registros de auditoria do Cloud e se o serviço monitorado está emitindo registros. Se os registros forem gravados, mas os eventos não forem entregues, entre em contato com o suporte.
Verifique se existe um tópico do Pub/Sub com o mesmo nome de gatilho.
Para listar acionadores, consulte a lista de gatilhos do gcloud eventarc.
Para listar os tópicos do Pub/Sub, execute:
Verifique se o nome do tópico do Pub/Sub inclui o nome do gatilho criado. Se o tópico do Pub/Sub estiver ausente, crie um tópico ao criar o gatilho.
Verifique a integridade do tópico do Pub/Sub:
Verifique se há uma marca de seleção check_circle na guia Gatilhos. No Console do Cloud, acesse Cloud Run e selecione o serviço criado. e acesse a guia Gatilhos.
Acesse Pub/Sub > Tópicos e clique no tópico do Pub/Sub.
Monitore se as mensagens forem publicadas no tópico com a métrica: topic/send_message_operation_count. Se as mensagens não forem publicadas no tópico, verifique os Registros de auditoria do Cloud e se o serviço monitorado está emitindo registros. Se os registros forem gravados, mas os eventos não forem entregues, entre em contato com o suporte.
Monitore se as mensagens forem enviadas por push para o Cloud Run com a métrica: subscription/push_request_count por response_code.
No Console do Cloud, acesse o Cloud Monitoring.
Adicione seu projeto a um novo espaço de trabalho.
Clique em Painéis e selecione o painel Cloud Pub/Sub.
No painel Cloud Pub/Sub, clique no tópico do Pub/Sub que você criou.
Na seção Incidents, clique em Create Policy.
Na página Criar política de alertas, clique em Adicionar condição.
Na guia Métrica, forneça as seguintes condições:
Assinatura do Cloud Pub/Sub como o Tipo de recurso.
Solicitações de envio como a Métrica.
response_code como o Agrupar por.
0 como o Limite de configuração. Para mais informações sobre métricas de uso do Pub/Sub, consulte Como monitorar assinaturas de push.
Clique em Add para acessar a página Create alerting policy.
Na seção Quais são as etapas para corrigir o problema?, forneça um nome de alerta, por exemplo, samplealert, e clique em Salvar.
Para ver o alerta, acesse Monitoring > Dashboard > Cloud Pub/Sub. Clique no tópico Pub/Sub e na guia Assinatura.
Se os erros de push forem informados, verifique os registros de serviço do Cloud Run. Se o endpoint de recebimento retornar um código de status não OK, isso indica que o código do Cloud Run não está funcionando como esperado e você precisa entrar em contato com o suporte.
Remova a configuração da região:
Exclua o gatilho:
Substitua TRIGGER_NAME pelo nome da sua Entrada.
Exclua a imagem de contêiner denominada gcr.io/PROJECT_ID/audit-storage do Container Registry. Substitua PROJECT_ID pelo ID do projeto do Google Cloud.
Para resolver outros problemas que você pode encontrar ao usar o Eventarc, consulte Solução de problemas.