Application Insights ile canlı Azure kapsayıcılarının profilini oluşturma

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

  • Başvuruyu NuGet paketine Microsoft.ApplicationInsights.Profiler.AspNetCore ekleyin.
  • Profiler'ı etkinleştirmek için kodu güncelleştirin.
  • Application Insights izleme anahtarını ayarlayın.

Bu makalede, yapabileceğiniz çeşitli yollar hakkında bilgi edinebilirsiniz:

  • NuGet paketini projeye yükleyin.
  • Ortam değişkenini düzenleyici (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. Profil Oluşturucu izlemelerini toplamak için NuGet paketini ekleyin:

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

    builder.Services.AddServiceProfiler() içinde ve yönteminin WebApplication.CreateBuilder()Program.csarkasına 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üleri ç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 Application Insights kaynağınız aracılığıyla Application Insights izleme anahtarınızı not alın.

    Azure portal 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ın:

    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.

Hizmet Profili 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 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