Integra le app Go per Error Reporting

Puoi inviare report sugli errori a Error Reporting dalle applicazioni Go utilizzando il pacchetto Error Reporting per Go. Utilizza il pacchetto Error Reporting per Go per creare gruppi di errori per i seguenti casi:

  • Il bucket di log ha chiavi di crittografia gestite dal cliente (CMEK).
  • I bucket di log non si trovano nella regione global.
  • Vuoi segnalare eventi di errore personalizzati.

Error Reporting è integrato con alcuni servizi Google Cloud, come App Engine, Compute Engine e Google Kubernetes Engine. Error Reporting visualizza gli errori registrati in Cloud Logging dalle applicazioni in esecuzione su questi servizi. Per ulteriori informazioni, vai ad In esecuzione su Google Cloud in questa pagina.

Puoi anche inviare i dati sugli errori a Error Reporting utilizzando Logging. Per informazioni sui requisiti di formattazione dei dati, consulta Formattazione dei messaggi di errore in Logging.

Prima di iniziare

  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

Installa la libreria client

Il pacchetto Error Reporting per Go consente di monitorare e visualizzare gli errori segnalati dalle applicazioni Go che vengono eseguite praticamente ovunque.

  1. Usa go get per installare il pacchetto:

    go get cloud.google.com/go/errorreporting

Per ulteriori informazioni sull'installazione, consulta la documentazione relativa al pacchetto di Error Reporting per Go. Puoi anche segnalare i problemi utilizzando lo strumento Issue Tracker.

Configura la libreria client

Puoi personalizzare il comportamento del pacchetto Error Reporting per Go. Consulta la godoc.

Esegui app su Google Cloud

Per creare gruppi di errori utilizzando projects.events.report, il tuo account di servizio richiede il ruolo Writer Error Reporting (roles/errorreporting.writer).

Alcuni servizi Google Cloud concedono automaticamente il ruolo Writer Error Reporting (roles/errorreporting.writer) all'account di servizio appropriato. Tuttavia, devi concedere questo ruolo all'account di servizio appropriato per alcuni servizi.

Ambiente flessibile di App Engine

App Engine concede automaticamente il ruolo Writer Error Reporting (roles/errorreporting.writer) al tuo account di servizio predefinito.

Il pacchetto Error Reporting per Go può essere utilizzato senza dover fornire esplicitamente le credenziali.

Error Reporting è abilitato automaticamente per le applicazioni nell'ambiente flessibile di App Engine. Non è richiesta alcuna ulteriore configurazione.

Google Kubernetes Engine

Per utilizzare Error Reporting con Google Kubernetes Engine:

  1. Assicurati che all'account di servizio che deve essere utilizzato dal container sia stato concesso il ruolo Writer Error Reporting (roles/errorreporting.writer).

    Puoi utilizzare l'account di servizio predefinito di Compute Engine o un account di servizio personalizzato.

    Per informazioni sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

  2. Crea il cluster e concedi al cluster l'ambito di accesso cloud-platform.

    Ad esempio, il seguente comando create specifica l'ambito di accesso cloud-platform e un account di servizio:

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

Compute Engine

Per utilizzare Error Reporting con le istanze VM di Compute Engine:

  1. Assicurati che all'account di servizio che deve essere utilizzato dall'istanza VM sia stato concesso il ruolo Writer Error Reporting (roles/errorreporting.writer).

    Puoi utilizzare l'account di servizio predefinito di Compute Engine o un account di servizio personalizzato.

    Per informazioni sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

  2. Nella console Google Cloud, seleziona Compute Engine e poi Istanze VM, oppure fai clic sul pulsante seguente:

    Vai a Istanze VM

  3. Seleziona l'istanza VM che vuoi ricevere l'ambito di accesso cloud-platform.

  4. Fai clic su Interrompi e poi su Modifica.

  5. Nella sezione Identità e accesso API, seleziona un account di servizio con il ruolo Writer Error Reporting (roles/errorreporting.writer).

  6. Nella sezione Ambiti di accesso, seleziona Consenti l'accesso completo a tutte le API Cloud, quindi salva le modifiche.

  7. Fai clic su Avvia/Riprendi.

Esempio

L'esempio seguente mostra l'utilizzo della libreria client Go per segnalare un evento di errore personalizzato:


// 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)
}

Consulta il godoc per altri esempi su come segnalare panico ed errori.

Eseguire app in un ambiente di sviluppo locale

Per utilizzare il pacchetto Error Reporting per Go in un ambiente di sviluppo locale, ad esempio l'esecuzione della libreria sulla tua workstation, devi fornire il pacchetto Error Reporting per Go con le credenziali predefinite dell'applicazione locale. Per ulteriori informazioni, vedi Eseguire l'autenticazione in Error Reporting.

Per utilizzare gli Go esempi in questa pagina in un ambiente di sviluppo locale, installa e inizializza l'interfaccia a riga di comando gcloud, quindi configura le credenziali predefinite dell'applicazione con le tue credenziali utente.

  1. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

    gcloud init
  3. 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.

Per ulteriori informazioni, consulta Set up authentication for a local development environment.

Anche il metodo projects.events.report supporta le chiavi API. Se vuoi utilizzare le chiavi API per l'autenticazione, non è necessario configurare un file Credenziali predefinite dell'applicazione locale. Per ulteriori informazioni, consulta Crea una chiave API nella documentazione sull'autenticazione di Google Cloud.

Visualizzazione dei rapporti degli errori

Nella console Google Cloud, seleziona Error Reporting oppure fai clic sul pulsante seguente e seleziona un progetto:

Vai a Error Reporting

Per ulteriori informazioni, consulta la sezione Visualizzazione degli errori.