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 Application Insights Profiler pada instans kontainer, Anda harus:

  • Menambahkan referensi ke paket NuGet Microsoft.ApplicationInsights.Profiler.AspNetCore.
  • Mengatur variabel lingkungan untuk mengaktifkannya.

Dalam artikel ini, Anda akan mempelajari beberapa 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 tulang telanjang yang dibuat dengan memanggil perintah CLI berikut:

    dotnet new mvc -n EnableServiceProfilerForContainerApp
    

    Perhatikan bahwa 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. Mengaktifkan Application Insights dan Profiler di Startup.cs:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddApplicationInsightsTelemetry(); // Add this line of code to enable Application Insights.
        services.AddServiceProfiler(); // Add this line of code to Enable Profiler
        services.AddControllersWithViews();
    }
    

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 SDK dan runtime Docker.

Menambahkan kunci Application Insights Anda

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

    Find instrumentation key in Azure portal

  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 Dockerfile.

  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:

  • Kunjungi http://localhost:8080/weatherforecast di browser Anda, atau

  • 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-5 menit sehingga peristiwa dapat diagregasi ke Application Insights.

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

  3. Setelah proses pelacakan selesai, Anda akan melihat tombol Jejak Profiler seperti di bawah ini:

    Profile traces in the performance blade

Membersihkan sumber daya

Jalankan perintah berikut untuk menghentikan proyek contoh:

docker rm -f testapp

Langkah berikutnya