Siga estas etapas de solução de problemas para diagnosticar e resolver problemas do Error Reporting quando os eventos de erro esperados não aparecem no console ou na API.
O Error Reporting captura erros por dois caminhos: chamadas diretas para a API Error Reporting e análise automática de entradas de registro ingeridas pelo Cloud Logging. Use as seções a seguir para verificar se as chamadas de API estão formatadas corretamente, se os coletores de registro são roteados para buckets compatíveis e se os payloads de exceção seguem as estruturas de linguagem compatíveis.
Os eventos de erro enviados para a API Error Reporting não são mostrados
Você envia eventos de erro para seu Google Cloud projeto usando a API Error Reporting. No entanto, esses eventos não são mostrados na página Error Reporting.
Para resolver esse problema, faça o seguinte:
Verifique se a API Error Reporting está ativada.
Ative a API Error Reporting.
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pela função de proprietário (roles/owner). Caso contrário, você pode receber essa permissão pela função de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin). Saiba como conceder funções.Abra o Cloud Shell e use a Google Cloud CLI para verificar se é possível enviar eventos de erro para seu projeto:
Execute este 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)"Acesse a página Error Reporting e verifique se ela mostra um erro intitulado
TestError: msg.Acesse a página Análise de registros e pesquise
TestErrornas entradas de registro. A entrada de registro é criada automaticamente.
Verifique se o aplicativo está enviando o evento de erro para o
reportendpoint, se o aplicativo está formatando o corpo da solicitação como um objetoReportedErrorEvent, e se as entradas de registro são criadas. Quando você usa a API Error Reporting, as entradas de registro com mensagens de erro formatadas corretamente são geradas e gravadas automaticamente em Cloud Logging. Essas entradas de registro são gravadas em um registro cujologNameé formatado da seguinte maneira:projects/PROJECT_ID/clouderrorreporting.googleapis.com%2Freported_errors
Os eventos de erro são mostrados, mas a API Error Reporting está desativada
Você desativou a API Error Reporting. No entanto, a página Error Reporting do Google Cloud console está mostrando eventos de erro.
Este é o comportamento esperado. Os eventos de erro são criados em resposta a
chamadas da API Error Reporting feitas para o report endpoint.
No entanto, os eventos de erro também são inferidos quando o Error Reporting pode analisar seus dados de registro.
Os eventos de erro não são inferidos dos dados de registro
Você espera que o Error Reporting analise seus dados de registro e infira eventos de erro. No entanto, a página Error Reporting não mostra nenhum evento de erro, mesmo que as entradas de registro gravem dados de erro.
Para resolver esse problema, faça o seguinte:
Verifique se o Error Reporting pode analisar suas entradas de registro.
O Error Reporting é um serviço global criado no Cloud Logging e pode analisar entradas de registro quando todas as condições a seguir forem verdadeiras:
- As cargas de trabalho protegidas estão desativadas. Para mais informações, consulte Visão geral do Assured Workloads.
- As chaves de criptografia gerenciadas pelo cliente (CMEK) estão desativadas em todos os buckets de registro que armazenam a entrada de registro. O Error Reporting não pode armazenar entradas de registro em buckets de registro que tenham a CMEK ativada. Para informações sobre como determinar a configuração da CMEK para um bucket de registros, consulte Verificar a ativação da chave.
- O bucket de registros atende a uma das seguintes condições:
- O bucket de registros é armazenado no mesmo projeto em que as entradas de registro foram originadas.
- As entradas de registro foram roteadas para um projeto, e esse projeto armazenou essas entradas de registro em um bucket de registros de propriedade dele.
Para conferir uma lista de coletores configurados, execute o seguinte comando:
gcloud logging sinks listO comando retorna uma saída semelhante a esta:
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 projeto Google Cloud de origem das entradas de registro é
my-team-project. O resultado disso é o seguinte:- O Error Reporting pode analisar as entradas de registro roteadas pelos coletores
_Default,_Requiredelogs-from-samplesporque o bucket de registros é armazenado pelo mesmo projeto que roteia as entradas de registro. - O Error Reporting não pode analisar as entradas de registro armazenadas no bucket de registro chamado
test-logsporque o coletor emmy-team-projectroteia as entradas de registro para um bucket de registros em um projeto diferente.
Use a Google Cloud CLI para verificar se é possível gravar entradas de registro que geram um evento de erro.
Execute este 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}}}'Acesse a página Análise de registros e pesquise
Test Errornas entradas de registro.Acessar a Análise de registros
Essa entrada de registro é gerada pela CLI gcloud. Se a entrada de registro não estiver vinculada a um grupo de erros, aguarde cerca de um minuto e atualize a página. Os eventos de erro são detectados depois que uma entrada de registro é ingerida.
Acesse a página Error Reporting e verifique se ela mostra um erro intitulado
Test Error.
Acesse a página Análise de registros e verifique se o aplicativo está gravando entradas de registro que têm o formato esperado.
Acessar a Análise de registros
Localize uma entrada de registro que contenha dados de exceção enviados do seu aplicativo e verifique o formato. Se o formato não estiver correto, atualize o aplicativo.
Uma entrada de registro contém um stack trace, mas nenhum evento de erro é criado
Você gera uma entrada de registro cujo campo message contém um stack trace.
No entanto, a página Error Reporting não lista um evento de erro correspondente.
Para resolver essa falha, tente o seguinte:
Verifique se o
jsonPayloadnão inclui um campostack_traceouexception. Quando esses campos estão presentes, o campomessagenão é avaliado.Verifique se a estrutura do stack trace está em um dos formatos de linguagem de programação compatíveis. O stack trace não é capturado pelo Error Reporting quando um formato sem suporte é usado.
Para mais informações, consulte Formatar uma entrada de registro para reportar eventos de erro.