Instrumentar apps Go para o Error Reporting

É possível enviar relatórios de erros para o Error Reporting a partir de aplicativos Go usando o pacote do Error Reporting para Go. Use o pacote do Error Reporting para Go a fim de criar grupos de erros para os seguintes casos:

  • Um bucket de registros que contém suas entradas de registro tem chaves de criptografia gerenciadas pelo cliente (CMEK).
  • 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.
  • Você quer informar eventos de erro personalizados.

O Error Reporting é integrado a alguns Google Cloud serviços, como o Cloud Functions, o App Engine, o Compute Engine e o Google Kubernetes Engine. Essa ferramenta exibe os erros registrados no Cloud Logging por aplicativos em execução nesses serviços. Para mais informações, consulte a seção Como executar no Google Cloud nesta página.

Também é possível enviar dados de erros para o Error Reporting usando o Logging. Para mais informações sobre os requisitos de formatação de dados, leia Como formatar mensagens de erro no Logging (em inglês).

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Error Reporting API .

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Error Reporting API .

    Enable the API

  8. Instale a biblioteca de cliente

    Com o pacote do Error Reporting para Go, você consegue monitorar e visualizar os erros relatados por aplicativos Go executados em praticamente qualquer lugar.

    1. Use go get para instalar o pacote:

      go get cloud.google.com/go/errorreporting

    Para mais informações sobre a instalação, leia a documentação (em inglês) do pacote do Error Reporting para Go. Também é possível relatar problemas usando o Issue Tracker (em inglês).

    Configurar a biblioteca de cliente

    É possível personalizar o comportamento do pacote do Error Reporting para Go. Consulte o godoc (em inglês).

    Executar apps no Google Cloud

    Para criar grupos de erros usando projects.events.report, sua conta de serviço precisa ter o papel de gravador do Error Reporting (roles/errorreporting.writer).

    Alguns serviços do Google Cloud concedem automaticamente o papel de gravador do Error Reporting (roles/errorreporting.writer) à conta de serviço apropriada. No entanto, é preciso conceder esse papel à conta de serviço adequada para alguns serviços.

    Cloud Run e Cloud Run functions

    A conta de serviço padrão usada pelo Cloud Run tem as permissões do papel Gravador do Error Reporting (roles/errorreporting.writer).

    O pacote do Error Reporting para Go pode ser usado sem a necessidade de fornecer credenciais explicitamente.

    O Cloud Run está configurado para usar o Error Reporting automaticamente. As exceções de JavaScript não processadas serão exibidas no Logging e processadas pelo Error Reporting sem a necessidade de usar o pacote dessa ferramenta para Go.

    Ambiente flexível do App Engine

    O App Engine concede o papel Gravador do Error Reporting (roles/errorreporting.writer) à sua conta de serviço padrão automaticamente.

    O pacote do Error Reporting para Go pode ser usado sem a necessidade de fornecer credenciais explicitamente.

    O Error Reporting é ativado automaticamente para aplicativos do ambiente flexível do App Engine. Nenhuma outra configuração é necessária.

    Google Kubernetes Engine

    Para usar o Error Reporting com o Google Kubernetes Engine, faça o seguinte:

    1. Verifique se a conta de serviço que será usada pelo contêiner tem o papel de Gravador do Error Reporting (roles/errorreporting.writer).

      É possível usar a conta de serviço padrão do Compute Engine ou uma conta de serviço personalizada.

      Para saber mais sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

    2. Crie o cluster e conceda a ele o escopo de acesso cloud-platform.

      Por exemplo, o comando de criação a seguir especifica o escopo de acesso cloud-platform e uma conta de serviço:

      gcloud container clusters create CLUSTER_NAME --service-account  SERVICE_ACCT_NAME --scopes=cloud-platform
      

    Compute Engine

    Para usar o Error Reporting com instâncias de VM do Compute Engine, faça o seguinte:

    1. Verifique se a conta de serviço que será usada pela instância de VM recebeu o papel Gravador do Error Reporting (roles/errorreporting.writer).

      É possível usar a conta de serviço padrão do Compute Engine ou uma conta de serviço personalizada.

      Para saber mais sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

    2. No Google Cloud console, acesse a página Instâncias de VM:

      Acessar Instâncias de VM

      Se você usar a barra de pesquisa para encontrar a página, selecione o resultado com o subtítulo Compute Engine.

    3. Selecione a instância de VM que vai receber o cloud-platform escopo de acesso.

    4. Clique em Parar e em Editar.

    5. Na seção Identidade e acesso à API, selecione uma conta de serviço que tenha o papel de gravador do Error Reporting (roles/errorreporting.writer).

    6. Na seção Escopos de acesso, selecione Permitir acesso total a todas as APIs do Cloud e salve as mudanças.

    7. Clique em Iniciar / retomar.

    Exemplo

    O exemplo a seguir demonstra o uso da biblioteca de cliente Go para relatar um evento de erro personalizado:

    
    // Sample errorreporting_quickstart contains is a quickstart
    // example for the Google Cloud Error Reporting API.
    package main
    
    import (
    	"context"
    	"errors"
    	"log"
    	"os"
    
    	"cloud.google.com/go/errorreporting"
    )
    
    var errorClient *errorreporting.Client
    
    func main() {
    	// Set your Google Cloud Platform project ID via environment or explicitly
    	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
    	args := os.Args[1:]
    	if len(args) > 0 && args[0] != "" {
    		projectID = args[0]
    	}
    
    	ctx := context.Background()
    	var err error
    	errorClient, err = errorreporting.NewClient(ctx, projectID, errorreporting.Config{
    		ServiceName:    "errorreporting_quickstart",
    		ServiceVersion: "0.0.0",
    		OnError: func(err error) {
    			log.Printf("Could not report the error: %v", err)
    		},
    	})
    	if err != nil {
    		log.Fatal(err)
    	}
    	defer errorClient.Close()
    
    	err = errors.New("something went wrong")
    	if err != nil {
    		logAndPrintError(err)
    		return
    	}
    }
    
    func logAndPrintError(err error) {
    	/// Client autopopulates the error context of the error. For more details about the context see:
    	/// https://cloud.google.com/error-reporting/reference/rest/v1beta1/ErrorContext
    	errorClient.Report(errorreporting.Entry{
    		Error: err,
    	})
    	log.Print(err)
    }
    

    Para mais exemplos sobre como relatar panes e erros, consulte o godoc.

    Executar apps em um ambiente de desenvolvimento local

    Para usar o pacote do Error Reporting para Go em um ambiente de desenvolvimento local, como executar a biblioteca na sua estação de trabalho, forneça ao pacote do Error Reporting para Go as credenciais padrão do aplicativo local. Para mais informações, consulte Autenticar no Error Reporting.

    Para usar os exemplos Go desta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e e configure o Application Default Credentials com suas credenciais de usuário.

    1. Install the Google Cloud CLI.

    2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    3. To initialize the gcloud CLI, run the following command:

      gcloud init
    4. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Confira mais informações em Set up authentication for a local development environment.

    O projects.events.report método também aceita chaves de API. Se você quiser usar chaves de API na autenticação, não será necessário configurar um arquivo local do Application Default Credentials. Confira mais informações em Crie uma chave de API na Google Cloud documentação de autenticação.

    Como visualizar relatórios de erros

    No console Google Cloud , acesse a página Error Reporting:

    Acessar o Error Reporting

    Também é possível encontrar essa página usando a barra de pesquisa.

    Para mais informações, consulte Como visualizar erros.