Como configurar o Cloud Trace em C# ASP.NET

É possível ativar o Cloud Trace para aplicativos para framework ASP.NET usando a biblioteca de cliente Google.Cloud.Diagnostics.AspNet para C#.

Instalar a biblioteca de cliente

Para usar a biblioteca de cliente Google.Cloud.Diagnostics.AspNet no Visual Studio, faça o seguinte:

  1. No Visual Studio, 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.

Como configurar a biblioteca de cliente

Após a instalação do Google.Cloud.Diagnostics.AspNet, conclua as etapas a seguir para ativar e configurar o Trace:

  1. Se você não estiver executando na infraestrutura do Google Cloud ou se quiser especificar o ID do projeto do Google Cloud no aplicativo, adicione o seguinte elemento XML à seção "appSettings" no arquivo Web.config do aplicativo. Substitua YOUR-GOOGLE-PROJECT-ID pelo ID do projeto do Google Cloud:

    <add key="projectId" value="YOUR-GOOGLE-PROJECT-ID" />

    Se você estiver executando na infraestrutura do Google Cloud, esta etapa será opcional porque a biblioteca de cliente para C# coleta automaticamente o código do projeto do Google Cloud de um servidor de metadados.

  2. Adicione as seguintes diretivas using ao arquivo Global.asax.cs do aplicativo:

    
    using Google.Cloud.Diagnostics.AspNet;
    using Google.Cloud.Diagnostics.Common;
    

    Se você não tiver o arquivo Global.asax no aplicativo ASP.NET, crie um e adicione-o as diretivas using. Para mais informações sobre arquivos Global.asax, acesse Sintaxe Global.asax.

  3. Para inicializar o Trace, adicione o seguinte à função Init na classe WebApiApplication do arquivo Global.asax.cs:

    public override void Init()
    {
        string projectId = ConfigurationManager.AppSettings["projectId"];
        // ...
        base.Init();
        TraceConfiguration traceConfig = TraceConfiguration
            .Create(bufferOptions: BufferOptions.NoBuffer());
        CloudTrace.Initialize(this, projectId, traceConfig);
    }
    

O Trace agora está configurado para criar amostras das solicitações HTTP recebidas pelo seu aplicativo. Para iniciar traces do seu aplicativo, consulte Aplicativo de amostra para o ASP.NET Framework.

Como configurar sua plataforma

Você pode usar o Cloud Trace no Google Cloud e em outras plataformas.

Como executar no Google Cloud

Quando seu aplicativo está em execução no Google Cloud, não é necessário fornecer credenciais de autenticação na forma de uma conta de serviço para a biblioteca de cliente. No entanto, verifique se o escopo de acesso da API Cloud Trace está ativado no Google Cloud Platform.

Para as seguintes configurações, as definições de escopo de acesso padrão ativam a API Cloud Trace:

  • Ambiente flexível do App Engine
  • Google Kubernetes Engine (GKE)

  • Compute Engine

Se você usar escopos de acesso personalizados, verifique se o escopo de acesso da API Cloud Trace está ativado. Para usuários do gcloud, especifique os escopos de acesso usando a sinalização --scopes e inclua o escopo de acesso da API Cloud Trace trace.append. Por exemplo, para criar um cluster do GKE com apenas a API Cloud Trace ativada, faça o seguinte:

gcloud container clusters create example-cluster-name --scopes=https://www.googleapis.com/auth/trace.append

Execução local e em outro lugar

Se o aplicativo estiver em execução fora do Google Cloud, forneça as credenciais de autenticação na forma de uma conta de serviço para a biblioteca de cliente. A conta de serviço precisa conter o papel de agente do Cloud Trace. Para instruções, consulte Como criar uma conta de serviço.

As bibliotecas de cliente do Google Cloud usam o Application Default Credentials (ADC) para encontrar as credenciais do aplicativo. Forneça essas credenciais definindo a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS:

Linux/macOS

    export GOOGLE_APPLICATION_CREDENTIALS=path-to-your-service-accounts-private-key

Windows

    set GOOGLE_APPLICATION_CREDENTIALS=path-to-your-service-accounts-private-key

PowerShell:

    $env:GOOGLE_APPLICATION_CREDENTIALS="path-to-your-service-accounts-private-key"

Amostra do aplicativo do Trace para o ASP.NET Framework

public class TraceController : Controller
{
    // This incoming HTTP request should be captured by Trace.
    public ActionResult Index()
    {
        using (CloudTrace.Tracer.StartSpan(nameof(Index)))
        {
            string url = "https://www.googleapis.com/discovery/v1/apis";
            var response = TraceOutgoing(url);
            ViewData["text"] = response.Result.ToString();
            return View();
        }
    }

    public async Task<string> TraceOutgoing(string url)
    {
        // Manually trace a specific operation.
        using (CloudTrace.Tracer.StartSpan("get-api-discovery-doc"))
        {
            using (var httpClient = new HttpClient())
            {
                // This outgoing HTTP request should be captured by Trace.
                using (var response = await httpClient.GetAsync(url)
                    .ConfigureAwait(false))
                {
                    return await response.Content.ReadAsStringAsync();
                }
            }
        }
    }
}

Como visualizar os traces

Após a implantação, é possível ver os traces no Visualizador de traces do Console do Cloud.

Acesse a página do visualizador do Trace

Resolver problemas

Para informações sobre como solucionar problemas com o Cloud Trace, acesse a página de solução de problemas.

Recursos