Membuat profil kontainer Azure langsung dengan Application Insights

Anda dapat mengaktifkan Application Insights Profiler untuk aplikasi ASP.NET Core yang berjalan di kontainer Anda hampir tanpa kode. Untuk mengaktifkan Profiler Application Insights pada instans kontainer, Anda perlu:

  • Menambahkan referensi ke paket NuGet Microsoft.ApplicationInsights.Profiler.AspNetCore.
  • Perbarui kode untuk mengaktifkan Profiler.
  • Siapkan kunci instrumentasi Application Insights.

Dalam artikel ini, Anda mempelajari berbagai cara untuk:

  • Menginstal paket NuGet dalam proyek.
  • Mengatur variabel lingkungan melalui orkestrator (seperti Kubernetes).
  • Pelajari pertimbangan keamanan sekeliling penyebaran produksi, seperti melindungi kunci instrumentasi Application Insights Anda.

Prasyarat

Menyiapkan lingkungan

  1. Klon dan gunakan proyek sampel berikut:

    git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
    
  2. Buka contoh Aplikasi Kontainer:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  3. Contoh ini adalah proyek barebones yang dibuat dengan memanggil perintah CLI berikut:

    dotnet new mvc -n EnableServiceProfilerForContainerApp
    

    Kami telah menambahkan penundaan dalam proyek Controllers/WeatherForecastController.cs untuk menyimulasikan penyempitan.

    [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. Tambahkan paket NuGet untuk mengumpulkan jejak Profiler:

    dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
    
  5. Aktifkan Application Insights dan Profiler.

    Tambahkan builder.Services.AddApplicationInsightsTelemetry() dan builder.Services.AddServiceProfiler() setelah WebApplication.CreateBuilder() metode di Program.cs:

    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();
    

Tarik gambar build/runtime ASP.NET Core terbaru

  1. Buka direktori contoh .NET Core 6.0:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  2. Tarik gambar ASP.NET Core terbaru:

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

Tip

Temukan gambar resmi untuk Docker SDK dan runtime.

Menambahkan kunci Application Insights Anda

  1. Melalui sumber daya Application Insights Anda di portal Azure, perhatikan kunci instrumentasi Application Insights Anda.

    Cuplikan layar yang memperlihatkan menemukan kunci instrumentasi di portal Azure.

  2. Buka appsettings.json dan tambahkan kunci instrumentasi Application Insights Anda ke bagian kode ini:

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

Membuat dan menjalankan gambar Docker

  1. Tinjau file Docker.

  2. Buat gambar contoh:

    docker build -t profilerapp .
    
  3. Jalankan kontainer:

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

Menampilkan kontainer melalui browser Anda

Untuk mencapai titik akhir, Anda memiliki dua opsi:

  • Kunjungi http://localhost:8080/weatherforecast di browser Anda.

  • Gunakan curl:

    curl http://localhost:8080/weatherforecast
    

Memeriksa log

Secara opsional, periksa log lokal untuk melihat apakah sesi pembuatan profil selesai:

docker logs testapp

Di log lokal, perhatikan peristiwa berikut:

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.

Melihat jejak Profiler Layanan

  1. Tunggu selama 2 hingga 5 menit sehingga peristiwa dapat diagregasi ke Application Insights.

  2. Buka panel Performa di sumber daya Application Insights Anda.

  3. Setelah proses pelacakan selesai, tombol Jejak Profiler muncul.

    Cuplikan layar yang memperlihatkan tombol Pelacakan Profiler di panel Performa.

Membersihkan sumber daya

Jalankan perintah berikut untuk menghentikan proyek contoh:

docker rm -f testapp

Langkah berikutnya