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
- 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 Profiler:
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
Aktifkan Application Insights dan 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
Tip
Temukan gambar resmi untuk Docker SDK dan runtime.
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.
Melihat jejak Profiler Layanan
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