Resolver problemas

Se os erros do seu aplicativo não estiverem aparecendo no Error Reporting, use as etapas a seguir para solucionar o problema.

Antes de começar

  1. Verifique se o Error Reporting pode analisar seus registros.

    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 entradas de registro são armazenadas em um bucket de registros no local global.
    • As chaves de criptografia gerenciadas pelo cliente (CMEK) estão desativadas no bucket de registros. 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 um dos seguintes critérios:
      • O bucket de registros é armazenado no mesmo projeto de origem dos registros.
      • Os registros foram roteados para um projeto, e esse projeto os armazenou em um bucket de registros de sua propriedade.

    Para ver se o Error Reporting pode analisar seus registros, verifique se você os está armazenando em buckets na região global, em que os projetos de origem e destino do Google Cloud são os mesmos.

    Para ver uma lista dos coletores configurados, execute o seguinte comando:

    gcloud logging sinks list
    

    O comando retorna uma resposta 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 de origem do Google Cloud dos registros é my-team-project. O resultado disso é o seguinte:

    • O Error Reporting pode analisar os registros roteados pelos coletores _Default, _Required e logs-from-samples porque eles estão encaminhando registros para buckets que estão na região global no mesmo projeto.
    • O Error Reporting não pode analisar os registros armazenados no bucket de registros chamado test-logs porque o coletor em my-team-project encaminha os registros para um bucket de registros em um projeto diferente.
    • O Error Reporting não pode analisar os registros roteados pelo coletor regional_logs porque ele encaminha os registros para um bucket regional na região europe-west1.
  2. Verifique se você tem a Google Cloud CLI instalada.

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

Ao usar os registros

Esta seção fornece suporte para solução de problemas quando seus 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 projeto, é possível gerar de maneira programática uma entrada de registro que será captada 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. Ative a API necessária.

    Ative a 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 para a API no formato correto e se ele tem os atributos necessários.