Configurer Error Reporting sur Google Kubernetes Engine

Vous pouvez envoyer des erreurs depuis les applications Google Kubernetes Engine à Error Reporting à l'aide de l'une des deux méthodes suivantes :

Utiliser Logging pour signaler des erreurs

L'agent de journalisation par défaut de GKE fournit une solution gérée pour déployer et gérer les agents qui envoient les journaux de vos clusters à Cloud Logging. La structure de l'agent dépend de la version de cluster. Pour en savoir plus sur cet agent, consultez Gérer les journaux GKE

Error Reporting requiert la présence d'exceptions ou de traces de la pile dans une seule entrée de journal. La plupart des agents Logging sont capables de reconnaître plusieurs lignes de journal (des blocs de pile imprimés chacun sur une nouvelle ligne) représentent une trace de la pile et l'envoyer à Cloud Logging en tant qu'entrée de journal unique. Si l'agent n'est pas capable de reconstruire plusieurs lignes en une seule erreur, utilisez la commande Point de terminaison de l'API projects.events.report, qui vous permet de contrôler le contenu d'une erreur.

Utiliser l'API Error Reporting pour écrire des erreurs

L'API Error Reporting fournit un point de terminaison report pour écrire les informations d'erreur à destination du service.

  1. Activez l'API Error Reporting

    Activer l'API

  2. Signalez les erreurs à l'API à l'aide de l'API REST ou d'une bibliothèque cliente.

Exemples

ASP.NET

Le package NuGet ASP.NET signale les exceptions non interceptées depuis des applications Web ASP.NET vers Error Reporting.

Installer le package NuGet

Pour installer le package NuGet ASP.NET Stackdriver dans Visual Studio :

  1. Cliquez avec le bouton droit sur votre solution et sélectionnez Gérer les packages NuGet pour la solution.
  2. Cochez la case Inclure la version préliminaire.
  3. Recherchez et installez le package nommé Google.Cloud.Diagnostics.AspNet.

Utilisation

Une fois que vous avez installé le package NuGet ASP.NET Stackdriver, ajoutez la déclaration suivante à votre code d'application pour commencer à envoyer des erreurs à Stackdriver :

using Google.Cloud.Diagnostics.AspNet;

Ajoutez le code HttpConfiguration suivant à la méthode Register de votre Application Web .NET (remplacez your-project-id par votre application ID du projet pour pouvoir signaler des exceptions:

public static void Register(HttpConfiguration config)
{
    string projectId = "YOUR-PROJECT-ID";
    string serviceName = "NAME-OF-YOUR-SERVICE";
    string version = "VERSION-OF-YOUR-SERVCICE";
    // ...
    // Add a catch all for the uncaught exceptions.
    config.Services.Add(typeof(IExceptionLogger),
        ErrorReportingExceptionLogger.Create(projectId, serviceName, version));
    // ...
}

Une fois que vous avez ajouté cette méthode à votre application ASP.NET, vous pouvez afficher les exceptions non détectées qui se produisent lorsqu'elles sont signalées à Google Cloud. dans la section Error Reporting de la console Google Cloud.

C#

Vous trouverez l'exemple suivant dans le GoogleCloudPlatform/dotnet-docs-samples de ce dépôt. Pour l'utiliser après avoir créé le projet, spécifiez votre ID de projet :

C:\...\bin\Debug> set GOOGLE_PROJECT_ID=[YOUR_PROJECT_ID]

Veillez à remplacer [YOUR_PROJECT_ID] par la valeur correcte issue de console Google Cloud.

Ensuite, envoyez les données d'exception avec le code suivant :

public class ErrorReportingSample
{
    public static void Main(string[] args)
    {
        try
        {
            throw new Exception("Generic exception for testing Stackdriver Error Reporting");
        }
        catch (Exception e)
        {
            report(e);
            Console.WriteLine("Stackdriver Error Report Sent");
        }
    }

    /// <summary>
    /// Create the Error Reporting service (<seealso cref="ClouderrorreportingService"/>)
    /// with the Application Default Credentials and the proper scopes.
    /// See: https://developers.google.com/identity/protocols/application-default-credentials.
    /// </summary>
    private static ClouderrorreportingService CreateErrorReportingClient()
    {
        // Get the Application Default Credentials.
        GoogleCredential credential = GoogleCredential.GetApplicationDefaultAsync().Result;

        // Add the needed scope to the credentials.
        credential.CreateScoped(ClouderrorreportingService.Scope.CloudPlatform);

        // Create the Error Reporting Service.
        ClouderrorreportingService service = new ClouderrorreportingService(new BaseClientService.Initializer
        {
            HttpClientInitializer = credential,
        });
        return service;
    }

    /// <summary>
    /// Creates a <seealso cref="ReportRequest"/> from a given exception.
    /// </summary>
    private static ReportRequest CreateReportRequest(Exception e)
    {
        // Create the service.
        ClouderrorreportingService service = CreateErrorReportingClient();

        // Get the project ID from the environement variables.
        string projectId = Environment.GetEnvironmentVariable("GOOGLE_PROJECT_ID");

        // Format the project id to the format Error Reporting expects. See:
        // https://cloud.google.com/error-reporting/reference/rest/v1beta1/projects.events/report
        string formattedProjectId = string.Format("projects/{0}", projectId);

        // Add a service context to the report.  For more details see:
        // https://cloud.google.com/error-reporting/reference/rest/v1beta1/projects.events#ServiceContext
        ServiceContext serviceContext = new ServiceContext()
        {
            Service = "myapp",
            Version = "8c1917a9eca3475b5a3686d1d44b52908463b989",
        };
        ReportedErrorEvent errorEvent = new ReportedErrorEvent()
        {
            Message = e.ToString(),
            ServiceContext = serviceContext,
        };
        return new ReportRequest(service, errorEvent, formattedProjectId);
    }

    /// <summary>
    /// Report an exception to the Error Reporting service.
    /// </summary>
    private static void report(Exception e)
    {
        // Create the report and execute the request.
        ReportRequest request = CreateReportRequest(e);
        request.Execute();
    }
}

Go

Consultez la page Configurer Error Reporting pour Go.

Java

Consultez la page Configurer Error Reporting pour Java.

Node.js

Consultez la page Configurer Error Reporting pour Node.js.

Ruby

Consultez la page Configurer Error Reporting pour Ruby.

Python

Consultez la page Configurer Error Reporting pour Python.

PHP

Consultez la page Configurer Error Reporting pour PHP.

Afficher les groupes d'erreurs

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

Accéder à Error Reporting

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