Mengaktifkan .NET Profiler pada kontainer Azure
Anda dapat mengaktifkan Profiler Application Insights untuk .NET pada aplikasi yang berjalan di kontainer Anda hampir tanpa kode. Untuk mengaktifkan .NET Profiler pada instans kontainer, Anda perlu:
- Menambahkan referensi ke paket NuGet
Microsoft.ApplicationInsights.Profiler.AspNetCore
. - Perbarui kode untuk mengaktifkan Profiler untuk .NET.
- 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
- Sumber daya Application Insights. Catat kunci instrumentasi.
- Docker Desktop untuk membangun gambar Docker.
- .NET 6 SDK terinstal.
Menyiapkan lingkungan
Klon dan gunakan proyek sampel berikut:
git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
Buka contoh Aplikasi Kontainer:
cd examples/EnableServiceProfilerForContainerAppNet6
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)); }
Tambahkan paket NuGet untuk mengumpulkan jejak .NET Profiler:
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
Aktifkan Application Insights dan .NET Profiler.
Tambahkan
builder.Services.AddApplicationInsightsTelemetry()
danbuilder.Services.AddServiceProfiler()
setelahWebApplication.CreateBuilder()
metode diProgram.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
Buka direktori contoh .NET Core 6.0:
cd examples/EnableServiceProfilerForContainerAppNet6
Tarik gambar ASP.NET Core terbaru:
docker pull mcr.microsoft.com/dotnet/sdk:6.0 docker pull mcr.microsoft.com/dotnet/aspnet:6.0
Menambahkan kunci Application Insights Anda
Melalui sumber daya Application Insights Anda di portal Azure, perhatikan kunci instrumentasi Application Insights Anda.
Buka
appsettings.json
dan tambahkan kunci instrumentasi Application Insights Anda ke bagian kode ini:{ "ApplicationInsights": { "InstrumentationKey": "Your instrumentation key" } }
Membuat dan menjalankan gambar Docker
Tinjau file Docker.
Buat gambar contoh:
docker build -t profilerapp .
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.
Lihat jejak .NET Profiler
Tunggu selama 2 hingga 5 menit sehingga peristiwa dapat diagregasi ke Application Insights.
Buka panel Performa di sumber daya Application Insights Anda.
Setelah proses pelacakan selesai, tombol Jejak Profiler muncul.
Membersihkan sumber daya
Jalankan perintah berikut untuk menghentikan proyek contoh:
docker rm -f testapp