Resolver problemas

Se os erros do aplicativo não estiverem aparecendo no Error Reporting, siga as etapas abaixo para resolver o problema.

Antes de começar

  1. 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 são verdadeiras:

    • O Assured Workloads está desativado. 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 registros que armazenam a entrada de registro. O Error Reporting não pode armazenar entradas de registro em buckets com a CMEK ativada. Para saber como determinar a configuração da CMEK de 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 criadas.
      • As entradas de registro foram encaminhadas para um projeto, que as armazenou em um bucket de registros de propriedade dele.

    Para conferir uma lista de coletores configurados, execute o seguinte comando:

    gcloud logging sinks list
    

    O 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, _Required e logs-from-samples porque 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-logs porque o coletor em my-team-project encaminha as entradas de registro para um bucket de registros em um projeto diferente.
  2. Confirme se você instalou a Google Cloud CLI.

  3. Verifique se o componente beta está ativado para a gcloud CLI.

Ao usar os registros

Esta seção oferece suporte para solução de problemas quando os dados de erro são gravados em buckets do Cloud Logging e você depende do Error Reporting para analisar automaticamente esses buckets de registros.

Gerar uma amostra de entrada de registro

Para confirmar as configurações do seu projeto, você pode gerar uma entrada de registro programada que será capturada pelo Error Reporting com o seguinte comando gcloud:

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}}}'

Em seguida, abra o Error Reporting e confirme que você vê o erro recém-criado.

Confirmar o formato da entrada de registro

Navegue até a página do Cloud Logging e localize uma entrada de registro que contenha dados de exceção enviados do seu aplicativo.

Verifique se a entrada de registro usa o formato esperado.

Ao usar a Error Reporting API

  1. Enable the required API.

    Enable the API

  2. Enviar um erro de teste

    Tente enviar manualmente um erro para o serviço.

    Você pode informar um erro de teste ao Error Reporting usando o seguinte comando gcloud:

    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)"
    

    Use um comando cURL para testar suas solicitações da REST API. Substitua PROJECT_ID e API_KEY pelos seus valores válidos antes de enviar este comando:

    curl -X POST -H "Content-Type: application/json" \
      -d '{"message":"java.lang.TestError: msg\n\tat com.example.TestClass.test(TestClass.java:51)\n\tat com.example.AnotherClass(AnotherClass.java:25)","serviceContext":{"service":"manual-testing"}}' \
      https://clouderrorreporting.googleapis.com/v1beta1/projects/PROJECT_ID/events:report?key=API_KEY
    
  3. Confirmar o payload enviado

    Verifique se o aplicativo está enviando dados de exceção à API no formato correto e se ele tem os atributos necessários.

Um stack trace é registrado, mas não reconhecido pelo Error Reporting

Você registra um erro usando o campo message de um jsonPayload e espera que o Error Reporting capture o erro. No entanto, os dados de erro não são capturados.

Para resolver essa falha, tente o seguinte:

  • Verifique se o jsonPayload não inclui um campo stack_trace ou exception. Quando esses campos estão presentes, o campo message nã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 Erros de formato nos registros.