Configura en Google Kubernetes Engine

Puedes enviar errores de tus aplicaciones de Google Kubernetes Engine a Error Reporting de una de estas dos formas:

Usa Logging para informar sobre errores

El agente de registro predeterminado de GKE proporciona una solución administrada para implementar y administrar los agentes que envían los registros de los clústeres a Cloud Logging. La estructura del agente depende de la versión del clúster. Para obtener información sobre este agente, consulta Administra los registros de GKE.

Error Reporting requiere que las excepciones o los seguimientos de pila se incluyan en una sola entrada de registro. La mayoría de los agentes de Logging pueden reconocer que varias líneas de registro (marcos de pila impresos cada uno en una línea nueva) representan un seguimiento de pila y lo envían a Cloud Logging como una sola entrada de registro. Si el agente no puede reconstruir varias líneas como un solo error, usa el endpoint de API de projects.events.report, que te permite controlar el contenido de un error.

Usa la API de Error Reporting para escribir errores

La API de Error Reporting proporciona un extremo report para escribir información de error en el servicio.

  1. Habilita la API de Error Reporting si aún no está habilitada.

    Roles necesarios para habilitar las APIs

    Para habilitar APIs, necesitas el permiso serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.

    Habilitar la API

  2. Informa errores a la API con la API de REST o una biblioteca cliente.

Ejemplos

ASP.NET

El paquete NuGet de ASP.NET informa las excepciones no detectadas de las aplicaciones web de ASP.NET a Error Reporting.

Instala el paquete NuGet

Para instalar el paquete Stackdriver ASP.NET NuGet en Visual Studio, haz lo siguiente:

  1. Haz clic con el botón derecho en tu solución y selecciona Administrar paquetes de NuGet para la solución.
  2. Selecciona la casilla de verificación Incluir lanzamiento anticipado.
  3. Busca y, luego, instala el paquete llamado Google.Cloud.Diagnostics.AspNet.

Uso

Una vez que hayas instalado el paquete NuGet de Stackdriver ASP.NET, agrega la siguiente sentencia al código de la aplicación para comenzar a enviar errores a Stackdriver:

using Google.Cloud.Diagnostics.AspNet;

Agrega el siguiente código HttpConfiguration al método Register de tu app web de .NET después de reemplazar your-project-id por tu ID del proyecto real para habilitar el registro de excepciones:

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

Una vez que hayas agregado este método a tu aplicación ASP.NET, podrás ver las excepciones no detectadas que se produzcan a medida que se informen a Google Clouden la sección Error Reporting de la consola de Google Cloud .

C#

El siguiente ejemplo se puede encontrar en el repositorio GoogleCloudPlatform/dotnet-docs-samples. Para usarlo, luego de compilar el proyecto, especifica el ID del proyecto:

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

Asegúrate de reemplazar [YOUR_PROJECT_ID] por el valor correcto de la consola deGoogle Cloud .

Luego, envía datos de excepciones con un código similar al siguiente:

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

Consulta Configura Error Reporting para Go.

Java

Consulta Configura Error Reporting para Java.

Node.js

Consulta Configura Error Reporting para Node.js.

Ruby

Consulta Configura Error Reporting para Ruby.

Python

Consulta Configura Error Reporting para Python.

PHP

Consulta Configura Error Reporting para PHP.

Cómo ver grupos de errores

En la consola de Google Cloud , ve a la página Error Reporting:

Ir a Error Reporting

También puedes usar la barra de búsqueda para encontrar esta página.