Instrumenter des applications Go pour Error Reporting

Vous pouvez envoyer des événements associés à des erreurs dans Error Reporting depuis des applications Go à l'aide du package Error Reporting pour Go. Utilisez le package Error Reporting pour Go afin de créer des groupes d'erreurs dans les cas suivants :

  • Un bucket de journaux contenant vos entrées de journal dispose de clés de chiffrement gérées par le client (CMEK).
  • Le bucket de journaux répond à l'une des conditions suivantes :
    • Le bucket de journaux est stocké dans le même projet que celui d'où proviennent les entrées de journal.
    • Les entrées de journal ont été acheminées vers un projet, puis ce projet les a stockées dans un bucket de journaux dont il est propriétaire.
  • Vous souhaitez signaler des événements d'erreur personnalisés.

Error Reporting est intégré à certainsservices, tels que Cloud Run Functions et App Engine, Compute Engine, et Google Kubernetes Engine. Google Cloud Error Reporting vous permet d'afficher les événements associés à des erreurs qui sont consignés dans Cloud Logging par les applications exécutées sur ces services. Pour en savoir plus, consultez la section Exécuter sur Google Cloud de cette page.

Vous pouvez également envoyer des événements associés à des erreurs dans Error Reporting à l'aide de Logging. Pour en savoir plus sur les exigences en matière de mise en forme des données, consultez la page Mettre en forme une entrée de journal pour signaler des événements associés à des erreurs.

Avant de commencer

  1. Connectez-vous à votre Google Cloud compte. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $de crédits sans frais pour exécuter, tester et déployer des charges de travail.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Error Reporting API .

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Error Reporting API .

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

Installer la bibliothèque cliente

Le package Error Reporting pour Go vous permet de surveiller et d'afficher les événements associés à des erreurs signalés par les applications Go exécutées sur n'importe quel emplacement ou presque.

  1. Installez le package à l'aide de go get :

    go get cloud.google.com/go/errorreporting

Pour en savoir plus sur l'installation, consultez la documentation sur le package Error Reporting pour Go. Vous pouvez également signaler d'éventuels problèmes à l'aide de l' outil de suivi des problèmes.

Configurer la bibliothèque cliente

Vous pouvez personnaliser le comportement du package Error Reporting pour Go. Pour cela, consultez godoc.

Exécuter des applications sur Google Cloud

Pour créer des groupes d'erreurs à l'aide de projects.events.report, votre compte de service doit disposer du rôle Rédacteur Error Reporting (roles/errorreporting.writer).

Certains Google Cloud services attribuent automatiquement le rôle Rédacteur Error Reporting (roles/errorreporting.writer) au compte de service approprié. Toutefois, vous devez attribuer ce rôle au compte de service approprié pour certains services.

Cloud Run et Cloud Run Functions

Le compte de service par défaut utilisé par Cloud Run dispose des autorisations du rôle Rédacteur Error Reporting (roles/errorreporting.writer).

Le package Error Reporting pour Go peut être utilisé sans avoir à fournir explicitement des identifiants.

Cloud Run est configuré pour utiliser Error Reporting automatiquement. Les exceptions JavaScript non gérées apparaîtront dans Logging et seront traitées par Error Reporting sans avoir à utiliser le package Error Reporting pour Go.

Environnement flexible App Engine

App Engine attribue automatiquement le rôle Rédacteur Error Reporting (roles/errorreporting.writer) à votre compte de service par défaut.

Le package Error Reporting pour Go peut être utilisé sans avoir à fournir explicitement des identifiants.

Error Reporting est automatiquement activé pour les applications de l'environnement flexible App Engine. Aucune configuration supplémentaire n'est requise.

Google Kubernetes Engine

Pour utiliser Error Reporting avec Google Kubernetes Engine, procédez comme suit :

  1. Assurez-vous que le compte de service à utiliser par votre conteneur dispose du rôle Rédacteur Error Reporting (roles/errorreporting.writer).

    Vous pouvez utiliser le compte de service Compute Engine par défaut ou un compte de service personnalisé.

    Pour plus d'informations sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

  2. Créez votre cluster et accordez-lui le cloud-platform champ d'application d'accès.

    Par exemple, la commande de création suivante spécifie le niveau d'accès cloud-platform et un compte de service :

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

Compute Engine

Pour utiliser Error Reporting avec des instances de VM Compute Engine, procédez comme suit :

  1. Assurez-vous que le compte de service à utiliser par votre instance de VM dispose du rôle Rédacteur Error Reporting (roles/errorreporting.writer).

    Vous pouvez utiliser le compte de service Compute Engine par défaut ou un compte de service personnalisé.

    Pour plus d'informations sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

  2. Dans la Google Cloud console, accédez à la page Instances de VM.

    Accéder à la page Instances de VM

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Compute Engine.

  3. Sélectionnez l'instance de VM à laquelle vous souhaitez attribuer le cloud-platform champ d'application d'accès.

  4. Cliquez sur Arrêter, puis sur Modifier.

  5. Dans la section Identité et accès à l'API, sélectionnez un compte de service doté du rôle Rédacteur Error Reporting (roles/errorreporting.writer).

  6. Dans la section Niveaux d'accès , sélectionnez Autoriser l'accès complet à l'ensemble des API Cloud, puis enregistrez vos modifications.

  7. Cliquez sur Démarrer/Réactiver.

Exemple

L'exemple suivant illustre l'utilisation de la bibliothèque cliente Go pour signaler un événement d'erreur personnalisé :


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

Consultez godoc pour découvrir, à l'aide d'exemples, comment signaler des problèmes et des erreurs.

Exécuter des applications dans un environnement de développement local

Pour utiliser le package Error Reporting pour Go dans un environnement de développement local, par exemple en exécutant la bibliothèque sur votre propre poste de travail, vous devez fournir à votre package Error Reporting pour Go les identifiants par défaut de l'application locale. Pour en savoir plus, consultez S'authentifier auprès d'Error Reporting.

Pour utiliser les exemples Go de cette page dans un environnement de développement local, installez et initialisez la gcloud CLI, puis configurez le service Identifiants par défaut de l'application avec vos identifiants utilisateur.

  1. Installez la Google Cloud CLI.

  2. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  3. Si vous utilisez un shell local, créez des identifiants d'authentification locaux pour votre compte utilisateur : Créer des identifiants d'authentification locaux pour votre compte utilisateur :

    gcloud auth application-default login

    Vous n'avez pas besoin de le faire si vous utilisez Cloud Shell.

    Si une erreur d'authentification est renvoyée et que vous utilisez un fournisseur d'identité (IdP) externe, vérifiez que vous vous êtes connecté à la gcloud CLI avec votre identité fédérée.

Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

La méthode projects.events.report est également compatible avec les clés API. Si vous souhaitez utiliser des clés API pour l'authentification, vous n'avez pas besoin de configurer un fichier d'identifiants par défaut de l'application local. Pour en savoir plus, consultez Créer une clé API dans la documentation sur l'authentification. Google Cloud

Afficher les groupes d'erreurs

Dans la Google Cloud console, accédez à la page Error Reporting :

Accéder à Error Reporting

Vous pouvez également accéder à cette page à l'aide de la barre de recherche.

Pour en savoir plus, consultez Afficher et filtrer les groupes d'erreurs.