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 du cluster. Pour en savoir plus sur cet agent, consultez la page Gérer les journaux GKE.

Error Reporting exige que les exceptions ou les traces de pile soient contenues dans une seule entrée de journal. La plupart des agents de journalisation sont capables de reconnaître que plusieurs lignes de journal (des blocs de pile imprimés sur une nouvelle ligne) représentent une trace de la pile et l'envoient à Cloud Logging sous la forme d'une seule entrée de journal. Si l'agent n'est pas capable de reconstituer plusieurs lignes en une seule erreur, utilisez le point de terminaison de l'API projects.events.report, ce 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 détectées depuis les applications Web ASP.NET à 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 l'application Web .NET (en remplaçant your-project-id par votre ID de projet) pour autoriser le signalement 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 toutes 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#

L'exemple suivant est disponible dans le dépôt GoogleCloudPlatform/dotnet-docs-samples. 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 dans la 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 le panneau de navigation de la console Google Cloud, sélectionnez Error Reporting, puis votre projet Google Cloud :

Accéder à Error Reporting