Instrumentar os apps Go para o Error Reporting

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

  • Seu bucket de registros tem chaves de criptografia gerenciadas pelo cliente (CMEK).
  • Seus buckets de registros não estão na região global.
  • Você quer informar eventos de erro personalizados.

O Error Reporting é integrado a alguns serviços do Google Cloud, como App Engine, Compute Engine e Google Kubernetes Engine. Essa ferramenta exibe os erros registrados no Cloud Logging por aplicativos em execução nesses serviços. Para mais informações, acesse 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. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Ative a Error Reporting API .

    Ative a API

  5. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  6. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  7. Ative a Error Reporting API .

    Ative a API

Instale a biblioteca de cliente

O pacote do Error Reporting para Go permite monitorar e visualizar os erros relatados pelo 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 exige o Papel Gravador do Error Reporting (roles/errorreporting.writer).

Alguns serviços do Google Cloud concedem automaticamente Gravador do Error Reporting (roles/errorreporting.writer) ao nível apropriado conta de serviço. Porém, você precisa conceder esse papel ao serviço apropriado para alguns serviços.

Ambiente flexível do App Engine

O App Engine concede a Papel Gravador do Error Reporting (roles/errorreporting.writer) para a conta de serviço padrão.

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 a ser usada pelo contêiner foi concedeu o Papel Gravador do Error Reporting (roles/errorreporting.writer).

    Use a conta de serviço padrão do Compute Engine ou uma conta de serviço personalizada.

    Para informações sobre como conceder 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 "create" abaixo especifica a propriedade cloud-platform. escopo de acesso 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 a ser usada pela instância de VM foi concedeu o Papel Gravador do Error Reporting (roles/errorreporting.writer).

    Use a conta de serviço padrão do Compute Engine ou uma conta de serviço personalizada.

    Para informações sobre como conceder papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

  2. No Console do Google Cloud, 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 em que você quer receber os escopo de acesso cloud-platform.

  4. Clique em Interromper e Editar.

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

  6. Na seção Escopos de acesso, faça o seguinte: Selecione Permitir acesso completo a todas as APIs do Cloud e salve as alterações.

  7. Clique em Iniciar / retomar.

Exemplo

O exemplo a seguir demonstra o uso da biblioteca de cliente Go para informar 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 a execução da biblioteca na sua própria estação de trabalho, você precisa fornecer o pacote do Error Reporting para Go com as credenciais padrão do aplicativo local. Para mais informações, consulte Autenticar no Error Reporting.

Para usar as amostras de Go nesta página de um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure o Application Default Credentials com as credenciais de usuário.

  1. Instale a CLI do Google Cloud.
  2. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  3. Crie as credenciais de autenticação para sua Conta do Google:

    gcloud auth application-default login

Veja mais informações em: Configurar a autenticação para um ambiente de desenvolvimento local.

O método projects.events.report 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. Veja mais informações em Crie uma chave de API na documentação de autenticação do Google Cloud.

Como visualizar relatórios de erros

No console do 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.