Configurer Cloud Trace pour C# ASP.NET

Vous pouvez activer Cloud Trace pour les applications ASP.NET Framework à l'aide de la bibliothèque cliente Google.Cloud.Diagnostics.AspNet pour C#.

Installer la bibliothèque cliente

Pour utiliser la bibliothèque cliente Google.Cloud.Diagnostics.AspNet dans Visual Studio, procédez comme suit :

  1. Dans Visual Studio, cliquez avec le bouton droit sur votre solution et sélectionnez Gérer les packages Nuget pour la solution.

  2. Cochez la case Inclure la version préliminaire.

  3. Recherchez et installez le package nommé Google.Cloud.Diagnostics.AspNet.

Configurer la bibliothèque cliente

Une fois le fichier Google.Cloud.Diagnostics.AspNet installé, procédez comme suit pour activer et configurer Trace :

  1. Si vous n'exécutez pas sur l'infrastructure Google Cloud ou si vous souhaitez spécifier votre ID de projet Google Cloud dans votre application, ajoutez l'élément XML suivant à la section <appSettings> du fichier Web.config de votre application. Remplacez YOUR-GOOGLE-PROJECT-ID par l'ID de votre projet Google Cloud :

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

    Si vous exécutez sur une infrastructure Google Cloud, cette étape est facultative, car la bibliothèque cliente pour C# collecte automatiquement l'ID de votre projet Google Cloud à partir d'un serveur de métadonnées Google Cloud.

  2. Ajoutez les directives using suivantes au fichier Global.asax.cs de votre application :

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

    Si votre application ASP.NET ne contient pas le fichier Global.asax, créez-en un et ajoutez-y les instructions using. Pour en savoir plus sur les fichiers Global.asax, consultez la page Syntaxe Global.asax.

  3. Pour initialiser Trace, ajoutez ce qui suit à la fonction Init dans la classe WebApiApplication de votre fichier 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 est maintenant configuré pour échantillonner les requêtes HTTP reçues par votre application. Pour initier des traces à partir de votre application, consultez un exemple d'application pour ASP.NET Framework.

Configurer votre plate-forme

Vous pouvez utiliser Cloud Trace sur Google Cloud et d'autres plates-formes.

Exécuter des applications sur Google Cloud

Lorsque votre application s'exécute sur Google Cloud, vous n'avez pas besoin de fournir des identifiants d'authentification sous la forme d'un compte de service à la bibliothèque cliente. Cependant, vous devez vous assurer que le niveau d'accès de l'API Cloud Trace est activé sur votre plate-forme Google Cloud.

Pour les configurations suivantes, les paramètres de niveau d'accès par défaut activent l'API Cloud Trace :

  • Environnement flexible App Engine
  • Google Kubernetes Engine (GKE)

  • Instance

Si vous utilisez des niveaux d'accès personnalisés, assurez-vous que le niveau d'accès de l'API Cloud Trace est activé. Pour les utilisateurs gcloud, spécifiez les niveaux d'accès à l'aide de l'indicateur --scopes et incluez le niveau d'accès à l'API Cloud Trace trace.append. Par exemple, pour créer un cluster GKE avec uniquement l'API Cloud Trace activée, procédez comme suit :

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

Exécuter en local et depuis un autre emplacement

Si votre application s'exécute en dehors de Google Cloud, vous devez fournir les identifiants d'authentification sous la forme d'un compte de service à la bibliothèque cliente. Le compte de service doit contenir le rôle d'agent Cloud Trace. Pour savoir comment faire, consultez la page Créer un compte de service.

Les bibliothèques clientes Google Cloud utilisent les identifiants par défaut de l'application (ADC) pour trouver les identifiants de votre application. Vous fournissez ces identifiants en définissant la variable d'environnement 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"

Exemple d'application Trace pour 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();
                }
            }
        }
    }
}

Afficher les traces

Après le déploiement, vous pouvez afficher les traces dans la visionneuse de journaux de Cloud Trace.

Accéder à la page Lecteur de traces

Dépannage

Pour en savoir plus sur la résolution des problèmes liés à Cloud Trace, consultez la page Dépannage.

Resources