Como fazer configurações no Google Kubernetes Engine

É possível enviar erros dos aplicativos do Google Kubernetes Engine para o Error Reporting de duas maneiras:

Usar o Logging para relatar erros

O agente de geração de registros padrão do GKE fornece uma solução gerenciada para implantar e gerenciar os agentes que enviam os registros dos clusters para o Cloud Logging. A estrutura do agente depende da versão do cluster. Para mais informações sobre esse agente, consulte Gerenciar registros do GKE.

O Error Reporting exige que exceções ou stack traces sejam contidos em uma única entrada de registro. A maioria dos agentes de registro é capaz de reconhecer que várias linhas de registro (frames de pilha impressos em cada linha nova) representam um stack trace e o enviam ao Cloud Logging como uma única entrada de registro. Se o agente não for capaz de reconstruir várias linhas como um único erro, use o endpoint da API projects.events.report, que permite controlar o conteúdo de um erro.

Usar a API Error Reporting para gravar erros

A API Error Reporting fornece um endpoint report para gravar informações de erro no serviço.

  1. Enable the Error Reporting API.

    Enable the API

  2. Informe erros na API usando a API REST ou uma biblioteca de cliente.

Amostras

ASP.NET

O pacote NuGet do ASP.NET relata exceções não identificadas de aplicativos da Web do ASP.NET ao Error Reporting.

Instalar o pacote NuGet

Para instalar o pacote NuGet para ASP.NET do Stackdriver no Visual Studio:

  1. Clique com o botão direito do mouse em sua solução e selecione Gerenciar pacotes NuGet para solução.
  2. Marque a caixa de seleção Incluir pré-lançamento.
  3. Pesquise e instale o pacote Google.Cloud.Diagnostics.AspNet.

Uso

Após instalar o pacote NuGet para ASP.NET do Stackdriver, adicione o comando a seguir ao código do seu aplicativo para começar a enviar os erros ao Stackdriver:

using Google.Cloud.Diagnostics.AspNet;

Adicione o seguinte código HttpConfiguration ao método Register do seu app da Web .NET, substituindo your-project-id pelo ID do projeto atual para ativar a geração de relatórios de exceções:

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

Depois de adicionar esse método ao aplicativo ASP.NET, é possível visualizar as exceções não identificadas assim que elas forem registradas no Google Cloud na seção Error Reporting do console do Google Cloud.

C#

O exemplo a seguir está localizado no repositório GoogleCloudPlatform/dotnet-docs-samples. Para usá-lo após a criação do projeto, especifique seu código do projeto:

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

Substitua [YOUR_PROJECT_ID] pelo valor correto do console do Google Cloud.

Em seguida, envie os dados da exceção com um código semelhante a este:

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

Consulte Como configurar o Error Reporting para Go.

Java

Consulte Como configurar o Error Reporting para Java.

Node.js

Consulte Como configurar o Error Reporting para Node.js.

Ruby

Consulte Como configurar o Error Reporting para Ruby.

Python

Consulte Como configurar o Error Reporting para Python.

PHP

Veja Como configurar o Error Reporting para PHP.

Acessar grupos de erros

No console do Google Cloud, acesse a página Error Reporting:

Acessar o Error Reporting

Também é possível encontrar essa página usando a barra de pesquisa.