Aracılığıyla paylaş


Azure kapsayıcılarında .NET Profiler'ı etkinleştirme

Kapsayıcınızda neredeyse kod olmadan çalışan uygulamalarda .NET için Application Insights Profiler'ı etkinleştirebilirsiniz. Kapsayıcı örneğinizde .NET Profiler'ı etkinleştirmek için şunları yapmanız gerekir:

  • NuGet paketine Microsoft.ApplicationInsights.Profiler.AspNetCore başvuruyu ekleyin.
  • .NET için Profil Oluşturucu'nun etkinleştirilmesi için kodu güncelleştirin.
  • Application Insights izleme anahtarını ayarlayın.

Bu makalede, şunları yapmanın çeşitli yolları hakkında bilgi edinebilirsiniz:

  • Projeye NuGet paketini yükleyin.
  • Ortam değişkenini orchestrator (Kubernetes gibi) aracılığıyla ayarlayın.
  • Application Insights izleme anahtarınızı koruma gibi üretim dağıtımıyla ilgili güvenlik konuları hakkında bilgi edinin.

Önkoşullar

Ortamı ayarlama

  1. Aşağıdaki örnek projeyi kopyalayıp kullanın:

    git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
    
  2. Kapsayıcı Uygulaması örneğine gidin:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  3. Bu örnek, aşağıdaki CLI komutu çağrılarak oluşturulan bir barebones projesidir:

    dotnet new mvc -n EnableServiceProfilerForContainerApp
    

    Performans sorununun benzetimini Controllers/WeatherForecastController.cs yapmak için projeye gecikme ekledik.

    [HttpGet(Name = "GetWeatherForecast")]
    public IEnumerable<WeatherForecast> Get()
    {
        SimulateDelay();
        ...
        // Other existing code.
    }
    private void SimulateDelay()
    {
        // Delay for 500ms to 2s to simulate a bottleneck.
        Thread.Sleep((new Random()).Next(500, 2000));
    }
    
  4. .NET Profiler izlemelerini toplamak için NuGet paketini ekleyin:

    dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
    
  5. Application Insights'ı ve .NET Profiler'ı etkinleştirin.

    yönteminde Program.csve builder.Services.AddServiceProfiler() sonrasını WebApplication.CreateBuilder() ekleyinbuilder.Services.AddApplicationInsightsTelemetry():

    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.AddApplicationInsightsTelemetry(); // Add this line of code to enable Application Insights.
    builder.Services.AddServiceProfiler(); // Add this line of code to enable Profiler
    builder.Services.AddControllersWithViews();
    
    var app = builder.Build();
    

En son ASP.NET Core derleme/çalışma zamanı görüntülerini çekme

  1. .NET Core 6.0 örnek dizinine gidin:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  2. En son ASP.NET Core görüntülerini çekin:

    docker pull mcr.microsoft.com/dotnet/sdk:6.0
    docker pull mcr.microsoft.com/dotnet/aspnet:6.0
    

İpucu

Docker SDK'sı ve çalışma zamanı için resmi görüntüleri bulun.

Application Insights anahtarınızı ekleme

  1. Azure portalındaki Application Insights kaynağınız aracılığıyla Application Insights izleme anahtarınızı not alın.

    Azure portalında izleme anahtarını bulmayı gösteren ekran görüntüsü.

  2. Application Insights izleme anahtarınızı açın appsettings.json ve bu kod bölümüne ekleyin:

    {
        "ApplicationInsights":
        {
            "InstrumentationKey": "Your instrumentation key"
        }
    }
    

Docker görüntüsünü derleme ve çalıştırma

  1. Docker dosyasını gözden geçirin.

  2. Örnek görüntüyü oluşturun:

    docker build -t profilerapp .
    
  3. Kapsayıcıyı çalıştırın:

    docker run -d -p 8080:80 --name testapp profilerapp
    

Kapsayıcıyı tarayıcınız aracılığıyla görüntüleme

Uç noktaya gitmek için iki seçeneğiniz vardır:

  • Tarayıcınızda ziyaret edin http://localhost:8080/weatherforecast .

  • Curl kullan:

    curl http://localhost:8080/weatherforecast
    

Günlükleri inceleme

İsteğe bağlı olarak, profil oluşturma oturumunun tamam olup olmadığını görmek için yerel günlüğü inceleyin:

docker logs testapp

Yerel günlüklerde aşağıdaki olayları not edin:

Starting application insights profiler with instrumentation key: your-instrumentation key # Double check the instrumentation key
Service Profiler session started.               # Profiler started.
Finished calling trace uploader. Exit code: 0   # Uploader is called with exit code 0.
Service Profiler session finished.              # A profiling session is completed.

.NET Profil Oluşturucu izlemelerini görüntüleme

  1. Olayların Application Insights'a toplanmasını sağlamak için 2-5 dakika bekleyin.

  2. Application Insights kaynağınızda Performans bölmesini açın.

  3. İzleme işlemi tamamlandıktan sonra Profil Oluşturucu İzlemeleri düğmesi görüntülenir.

    Performans bölmesindeki .NET Profil Oluşturucu izlemeleri düğmesini gösteren ekran görüntüsü.

Kaynakları temizleme

Örnek projeyi durdurmak için aşağıdaki komutu çalıştırın:

docker rm -f testapp

Sonraki adımlar