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:

  • Fazendo login no Cloud Logging. Se você já estiver usando o Cloud Logging, o único requisito adicional é que as entradas de registro sejam reconhecíveis pelo Error Reporting. Para mais informações sobre requisitos de erros de formatação, leia Erros de formatação no Cloud Logging (em inglês).

  • Usando a API Error Reporting. Seu aplicativo pode enviar solicitações HTTP por meio da API REST ou usar bibliotecas experimentais em diversas linguagens. Seu aplicativo pode enviar solicitações HTTP por meio da API REST ou usar bibliotecas experimentais em diversas linguagens.

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 as exceções ou stack traces estejam contidos em uma única entrada de registro. A maioria dos agentes de geração de registros é capaz de reconhecer que várias linhas de registro (frames de pilha impressos em cada nova linha) 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 projects.events.report endpoint de API, 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. Ative a API Error Reporting.

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    Ativar a API

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

Amostras

ASP.NET

O pacote NuGet para ASP.NET (em inglês) relata ao Error Reporting exceções não identificadas em aplicativos da Web da ASP.NET.

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 a instrução 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 HttpConfiguration código ao método Register do seu app da Web .NET depois de substituir your-project-id pelo seu 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 doconsole. 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 ID do projeto:

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

Lembre-se de substituir [YOUR_PROJECT_ID] pelo valor correto do Google Cloud console.

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.

Ver grupos de erros

Noconsoledo Cloud, acesse a página Error Reporting : Google Cloud

Acessar o Error Reporting

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