Cloud Trace für C# ASP.NET einrichten

Sie können Cloud Trace für ASP.NET Framework-Anwendungen mithilfe der Google.Cloud.Diagnostics.AspNet-Clientbibliothek für C# aktivieren.

Clientbibliothek installieren

So verwenden Sie die Clientbibliothek Google.Cloud.Diagnostics.AspNet in Visual Studio:

  1. Klicken Sie in Visual Studio mit der rechten Maustaste auf Ihre Lösung und wählen Sie NuGet-Pakete für Projektmappe verwalten aus.

  2. Wählen Sie das Kästchen Vorabversion einbeziehen aus.

  3. Suchen und installieren Sie das Paket Google.Cloud.Diagnostics.AspNet.

Clientbibliothek konfigurieren

Führen Sie nach der Installation von Google.Cloud.Diagnostics.AspNet die folgenden Schritte aus, um Trace zu aktivieren und konfigurieren:

  1. Wenn Sie nicht die Google Cloud-Infrastruktur ausführen oder Ihre Google Cloud-Projekt-ID in Ihrer Anwendung angeben möchten, fügen Sie der Datei Web.config Ihrer Anwendung das folgende XML-Element in den Abschnitt {appSettings} ein. Ersetzen Sie YOUR-GOOGLE-PROJECT-ID durch Ihre Google Cloud-Projekt-ID:

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

    Wenn Sie die Google Cloud-Infrastruktur ausführen, ist dieser Schritt optional, da die Clientbibliothek für C# Ihre Google Cloud-Projekt-ID automatisch von einem Google Cloud-Metadatenserver erfasst.

  2. Fügen Sie der Datei Global.asax.cs Ihrer Anwendung die folgenden using-Anweisungen hinzu:

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

    Wenn Sie die Datei Global.asax nicht in Ihrer ASP.NET-Anwendung haben, erstellen Sie eine und fügen Sie die using-Anweisungen hinzu. Weitere Informationen zu Global.asax-Dateien finden Sie unter Global.asax-Syntax.

  3. Um Trace zu initialisieren, fügen Sie der Funktion Init in der Klasse WebApiApplication der Datei Global.asax.cs Folgendes hinzu:

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

Trace ist jetzt so konfiguriert, dass Stichproben der von Ihrer Anwendung empfangenen HTTP-Anfragen genommen werden. Informationen zum Initiieren von Traces in Ihrer Anwendung finden Sie unter Beispielanwendung für ASP.NET Framework.

Ihre Plattform konfigurieren

Sie können Cloud Trace in Google Cloud und anderen Plattformen verwenden.

In Google Cloud ausführen

Wenn Ihre Anwendung in Google Cloud ausgeführt wird, müssen Sie keine Anmeldedaten zur Authentifizierung in Form eines Dienstkontos für die Clientbibliothek angeben. Sie müssen jedoch gewährleisten, dass auf Ihrer Google Cloud Platform der Zugriffsbereich der Cloud Trace API aktiviert ist.

Für die folgenden Konfigurationen wird die Cloud Trace API über die Standardeinstellungen für den Zugriffsbereich aktiviert:

  • Flexible App Engine-Umgebung
  • Google Kubernetes Engine (GKE)

  • Compute Engine

Wenn Sie benutzerdefinierte Zugriffsbereiche verwenden, muss der Zugriffsbereich der Cloud Trace API aktiviert sein. Geben Sie für gcloud-Nutzer Zugriffsbereiche mit dem Flag --scopes an und fügen Sie den Cloud Trace API-Zugriffsbereich trace.append hinzu. So erstellen Sie beispielsweise einen GKE-Cluster, bei dem nur die Cloud Trace API aktiviert ist:

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

Lokal und extern ausführen

Wenn Ihre Anwendung außerhalb von Google Cloud ausgeführt wird, müssen Sie Authentifizierungsdaten in Form eines Dienstkontos für die Clientbibliothek angeben. Das Dienstkonto muss die Cloud Trace-Agent-Rolle enthalten. Informationen dazu finden Sie unter Dienstkonto erstellen.

Google Cloud-Clientbibliotheken verwenden Standardanmeldedaten für Anwendungen (ADC), um die Anmeldedaten Ihrer Anwendung zu finden. Sie geben diese Anmeldedaten an, indem Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS festlegen:

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"

Trace-Beispielanwendung für 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();
                }
            }
        }
    }
}

Traces ansehen

Nach der Bereitstellung können Sie die Traces im Trace Viewer der Cloud Console anzeigen.

Trace-Anzeige öffnen

Fehlerbehebung

Informationen zur Behebung von Problemen mit Cloud Trace finden Sie auf der Seite zur Fehlerbehebung.

Ressourcen