Este documento descreve cenários comuns de resolução de problemas para os relatórios de erros.
Os eventos de erro enviados para a API Error Reporting não são apresentados
Envie eventos de erro para o seu Google Cloud projeto através da API Error Reporting. No entanto, esses eventos não são apresentados na página Relatórios de erros.
Para resolver este problema, faça o seguinte:
Certifique-se de que a API Error Reporting está ativada.
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.Abra o Cloud Shell e use a Google Cloud CLI para verificar se consegue enviar eventos de erro para o seu projeto:
Execute o seguinte comando:
gcloud beta error-reporting events report --service Manual --service-version test1 \ --message "java.lang.TestError: msg at com.example.TestClass.test(TestClass.java:51) at com.example.AnotherClass(AnotherClass.java:25)"Aceda à página Relatório de erros e verifique se a página apresenta um erro com o título
TestError: msg.Aceda à página do Explorador de registos e pesquise as entradas de registo de
TestError. A entrada do registo é criada automaticamente.
Verifique se a sua aplicação está a enviar o evento de erro para o ponto final
reporte se a aplicação está a formatar o corpo do pedido como um objetoReportedErrorEvent. Também deve verificar se estão a ser criadas entradas de registo. Quando usa a API Error Reporting, as entradas de registo com mensagens de erro formatadas corretamente são geradas e escritas automaticamente no Cloud Logging. Estas entradas de registo são escritas num registo cujologNameestá formatado da seguinte forma:projects/PROJECT_ID/clouderrorreporting.googleapis.com%2Freported_errors
Os eventos de erro são apresentados, mas a API Error Reporting está desativada
Desativou a API Error Reporting. No entanto, a página Relatórios de erros da consola está a mostrar eventos de erro. Google Cloud
Este comportamento é o esperado. Os eventos de erro são criados em resposta a chamadas da API Error Reporting feitas ao ponto final report.
No entanto, os eventos de erro também são inferidos quando os Relatórios de erros conseguem analisar os seus dados de registo.
Os eventos de erro não são inferidos a partir dos dados de registo
Espera que os relatórios de erros analisem os dados de registo e infiram eventos de erro. No entanto, a página Relatórios de erros não mostra nenhum evento de erro, apesar de as entradas de registo registarem dados de erros.
Para resolver esta situação, faça o seguinte:
Verifique se os relatórios de erros conseguem analisar as suas entradas de registo.
O Relatório de erros é um serviço global criado no Cloud Logging e pode analisar entradas de registo quando todas as seguintes condições são verdadeiras:
- Os Assured Workloads estão desativados. Para mais informações, consulte o artigo Vista geral das Assured Workloads.
- As chaves de encriptação geridas pelo cliente (CMEK) estão desativadas em todos os contentores de registos que armazenam a entrada de registo. Os relatórios de erros não podem armazenar entradas de registo em contentores de registos com a CMEK ativada. Para obter informações sobre como determinar a configuração da CMEK para um contentor de registos, consulte Verifique a ativação da chave.
- O contentor de registos cumpre um dos seguintes requisitos:
- O contentor de registos é armazenado no mesmo projeto onde as entradas de registo tiveram origem.
- As entradas de registo foram encaminhadas para um projeto e, em seguida, esse projeto armazenou essas entradas de registo num contentor de registos que lhe pertence.
Para ver uma lista dos destinos que configurou, execute o seguinte comando:
gcloud logging sinks listO comando devolve um resultado semelhante ao seguinte:
NAME DESTINATION FILTER _Default logging.googleapis.com/projects/my-team-project/locations/global/buckets/_Default NOT LOG_ID("cloudaudit.googleapis.com/activity") AND NOT LOG_ID("externalaudit.googleapis.com/activity") AND NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND NOT LOG_ID("externalaudit.googleapis.com/system_event") AND NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND NOT LOG_ID("externalaudit.googleapis.com/access_transparency") _Required logging.googleapis.com/projects/my-team-project/locations/global/buckets/_Required LOG_ID("cloudaudit.googleapis.com/activity") OR LOG_ID("externalaudit.googleapis.com/activity") OR LOG_ID("cloudaudit.googleapis.com/system_event") OR LOG_ID("externalaudit.googleapis.com/system_event") OR LOG_ID("cloudaudit.googleapis.com/access_transparency") OR LOG_ID("externalaudit.googleapis.com/access_transparency") logs-from-samples logging.googleapis.com/projects/my-team-project/locations/global/buckets/sample-bucket (empty filter) regional_logs logging.googleapis.com/projects/my-team-project/locations/europe-west1/buckets/bucket_for_regional_logs (empty filter) test-logs logging.googleapis.com/projects/team-b-project/locations/global/buckets/test-bucket (empty filter)Neste exemplo, o Google Cloud projeto de origem das entradas do registo é
my-team-project. Consequentemente:- Os Relatórios de erros podem analisar as entradas de registo encaminhadas pelos destinos
_Default,_Requiredelogs-from-samplesporque o contentor de registos é armazenado pelo mesmo projeto que encaminha as entradas de registo. - O Relatório de erros não consegue analisar as entradas de registo armazenadas no contentor de registos denominado
test-logsporque o destino emmy-team-projectencaminha as entradas de registo para um contentor de registos num projeto diferente.
Use a CLI do Google Cloud para verificar se pode escrever entradas de registo que geram um evento de erro.
Execute o seguinte comando:
gcloud logging write --payload-type=json test-errors-log \ '{"serviceContext": {"service": "manual-testing"}, "message": "Test Error\n at /test.js:42:42", "context": {"httpRequest": {"url": "/test","method": "GET","responseStatusCode": 500}}}'Aceda à página do Explorador de registos e pesquise as entradas de registo de
Test Error.Aceda ao Explorador de registos
Esta entrada de registo é gerada pela CLI gcloud. Se a entrada de registo não estiver associada a um grupo de erros, aguarde cerca de um minuto e atualize a página. Os eventos de erro são detetados depois de uma entrada de registo ser carregada.
Aceda à página Relatório de erros e verifique se a página apresenta um erro com o título
Test Error.
Aceda à página Explorador de registos e verifique se a sua aplicação está a escrever entradas de registo com o formato esperado.
Aceda ao Explorador de registos
Localize uma entrada de registo que contenha dados de exceção enviados a partir da sua aplicação e valide o formato. Se o formato não estiver correto, atualize a sua aplicação.
Uma entrada de registo contém um rastreio de pilha, mas não é criado nenhum evento de erro
Gera uma entrada de registo cujo campo message contém um rastreio de pilha.
No entanto, a página Relatório de erros não apresenta um evento de erro correspondente.
Para resolver esta falha, experimente o seguinte:
Certifique-se de que o
jsonPayloadnão inclui um campostack_traceouexception. Quando esses campos estão presentes, o campomessagenão é avaliado.Certifique-se de que a estrutura do rastreio da pilha está num dos formatos de linguagem de programação suportados. O rastreio da pilha não é capturado pelo relatório de erros quando é usado um formato não suportado.
Para mais informações, consulte o artigo Formate uma entrada de registo para comunicar eventos de erro.