Configura Cloud Trace para C# ASP.NET

Puedes habilitar Cloud Trace para aplicaciones de ASP.NET Framework mediante la biblioteca cliente Google.Cloud.Diagnostics.AspNet destinada a C#.

Instala la biblioteca cliente

Para usar la biblioteca cliente Google.Cloud.Diagnostics.AspNet en Visual Studio, haz lo siguiente:

  1. En Visual Studio, haz clic derecho en tu solución y selecciona Administrar paquetes de NugGet 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.

Configura la biblioteca cliente

Después de que se haya instalado Google.Cloud.Diagnostics.AspNet, completa los siguientes pasos para habilitar y configurar Trace:

  1. Si no estás ejecutando en la infraestructura de Google Cloud o si deseas especificar tu ID del proyecto de Google Cloud en tu aplicación, agrega el siguiente elemento XML a la sección <appSettings> de tu aplicación Web.config. Reemplaza YOUR-GOOGLE-PROJECT-ID por el ID de tu proyecto de Google Cloud.

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

    Si ejecutas en la infraestructura de Google Cloud, este paso es opcional, ya que la biblioteca cliente para C# recopila automáticamente el ID del proyecto de Google Cloud desde un servidor de metadatos de Google Cloud.

  2. Agrega las siguientes directivas using al archivo Global.asax.cs de tu aplicación:

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

    Si no tienes el archivo Global.asax en tu aplicación de ASP.NET, crea uno y agrégale las directivas using. Para obtener más información sobre archivos Global.asax, ve a Sintaxis de Global.asax.

  3. Para inicializar Trace, agrega lo siguiente a la función Init en la clase WebApiApplication de tu archivo 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);
    }
    

Trace ya está configurado para realizar el muestreo de las solicitudes HTTP que recibe tu aplicación. Con el fin de iniciar los seguimientos desde tu aplicación, consulta aplicación de ejemplo para ASP.NET Framework.

Configura tu plataforma

Puedes usar Cloud Trace en Google Cloud y otras plataformas.

Ejecuta en Google Cloud

Cuando tu aplicación se ejecuta en Google Cloud, no necesitas proporcionar credenciales de autenticación en formato de una cuenta de servicio a la biblioteca cliente. Sin embargo, debes asegurarte de que tu plataforma de Google Cloud tenga habilitado el nivel de acceso a la API de Cloud Trace.

Para las siguientes opciones de configuración, la configuración predeterminada del permiso de acceso habilita la API de Cloud Trace:

  • Entorno flexible de App Engine
  • Google Kubernetes Engine (GKE)

  • Compute Engine

Si usas niveles de acceso personalizados, debes asegurarte de que el nivel de acceso a la API de Cloud Trace esté habilitado. Para los usuarios de gcloud, especifica los niveles de acceso con la marca --scopes y, luego, incluye el nivel de acceso a la API de Cloud Trace trace.append. Por ejemplo, para crear un clúster de GKE solo con la API de Cloud Trace habilitada, haz lo siguiente:

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

Ejecuta de forma local y en otros lugares

Si tu aplicación se ejecuta fuera de Google Cloud, debes proporcionar credenciales de autenticación con el formato de una cuenta de servicio a la biblioteca cliente. La cuenta de servicio debe contener la función de agente de Cloud Trace. Para obtener más instrucciones, consulta Cómo crear una cuenta de servicio.

Las bibliotecas cliente de Google Cloud usan credenciales predeterminadas de la aplicación (ADC) para encontrar las credenciales de tu aplicación. Proporciona estas credenciales mediante la configuración de la variable de entorno 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"

Aplicación de Trace de muestra para 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();
                }
            }
        }
    }
}

Cómo ver los seguimientos

Después de la implementación, puedes ver los seguimientos en el visor de seguimientos de Cloud Console.

Ir a la página del Lector de seguimiento

Soluciona problemas

Para obtener información sobre cómo solucionar problemas con Cloud Trace, ve a la página de solución de problemas.

Recursos