Como configurar o Stackdriver Trace em C# ASP.NET

É possível ativar o Stackdriver Trace para aplicativos do ASP.NET framework, basta usar a biblioteca de cliente do Google.Cloud.Diagnostics.AspNet em C#.

Como instalar a biblioteca de cliente

Para usar a biblioteca de cliente do Google.Cloud.Diagnostics.AspNet no Visual Studio, siga as seguintes etapas:

  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 .

Para mais informações, consulte 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. Adicione o seguinte elemento XML à seção <appSettings> do arquivo Web.config do aplicativo e atualize o YOUR-GOOGLE-PROJECT-ID para ser o código ou número do seu projeto:

    <add key="projectId" value="YOUR-GOOGLE-PROJECT-ID" />
  2. Adicione as diretivas using a seguir ao arquivo Global.asax.cs do aplicativo:

    using Google.Cloud.Diagnostics.AspNet;
    using Google.Cloud.Diagnostics.Common;
    
  3. Na classe WebApiApplication do arquivo Global.asax.cs, adicione o bloco de código Init a seguir para inicializar o trace:

    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 executar no Google Cloud Platform

Não será preciso fornecer credenciais de autenticação para instâncias em execução no Google Cloud Platform se o escopo de acesso da API Stackdriver Trace estiver ativado nessa instância. No entanto, recomendamos configurar o escopo de acesso mais amplo possível para sua instância e, em seguida, usar o Cloud Identity and Access Management para restringir o acesso.

Ambiente flexível do App Engine

No ambiente flexível do App Engine, o escopo de acesso da API Stackdriver Trace é ativado por padrão e a biblioteca de cliente do Google.Cloud.Diagnostics.AspNet pode ser usada sem fornecer credenciais ou um ID do projeto.

Ambiente padrão do App Engine

Atualmente, o padrão do Google App Engine não é compatível com o C #.

GKE

Para usar o Trace no GKE, adicione o escopo de acesso do OAuth trace.append ao criar um cluster.

Para criar um cluster usando o gcloud, faça o seguinte:

  1. Atualize o gcloud para a versão mais recente (opcional):
    gcloud components update
  2. Defina o código do projeto padrão:
    gcloud config set project [PROJECT_ID]
  3. Se você estiver trabalhando com clusters zonais, defina a zona de computação padrão:
    gcloud config set compute/zone [COMPUTE_ZONE]
  4. Se você estiver trabalhando com clusters regionais, defina a região de computação padrão:
    gcloud config set compute/region [COMPUTE_REGION]
  5. Execute o comando de criação:
    gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/trace.append

Para informações mais detalhadas sobre como criar um cluster, consulte Como criar um cluster.

Compute Engine

Para as instâncias do Compute Engine, é preciso ativar explicitamente o escopo de acesso trace.append da API Stackdriver Trace para cada instância de VM. Ao criar uma nova instância por meio do Console do Google Cloud Platform, selecione os seguintes valores na seção Identidade e acesso à API do painel Criar uma instância:

  1. Selecione a Conta de serviço padrão do Compute Engine como a Conta de serviço
  2. Selecione Permitir acesso completo a todas as APIs do Cloud em Escopos de acesso.

Para usar algo diferente da conta de serviço padrão do Compute Engine, consulte as seções Como criar e ativar contas de serviços para instâncias e Como executar localmente e em outro local. O importante é que a conta de serviço que você usa tenha o papel de agente do Cloud Trace.

Como executar localmente e em outro local

Para executar o Stackdriver Trace fora do GCP, forneça o ID do projeto do GCP e as credenciais da conta de serviço apropriadas diretamente à biblioteca de cliente do Google.Cloud.Diagnostics.AspNet. Sua conta de serviço precisa conter o papel de agente do Cloud Trace. Para mais instruções, consulte Como criar uma conta de serviço.

Código do projeto

Forneça um ID do projeto para a biblioteca de cliente do Google.Cloud.Diagnostics.AspNet. Para isso, basta inserir o código do projeto no arquivo Web.config conforme descrito na seção Como configurar a biblioteca de cliente.

Credenciais

As bibliotecas de cliente do GCP usam o Application Default Credentials (ADC, na sigla em inglês) para localizar as credenciais do aplicativo. Forneça as credenciais à biblioteca de cliente do Google.Cloud.Diagnostics.AspNet ao definir a variável de ambiente do 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, você pode consultar os traces no visualizador de traces do Console do GCP.

Acesse a página do visualizador do Trace

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.