Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы можете включить Application Insights Profiler для .NET в приложениях, работающих в вашем контейнере практически без кода. Чтобы активировать функционал .NET Profiler в экземпляре контейнера, необходимо:
- Добавьте ссылку на пакет NuGet
Microsoft.ApplicationInsights.Profiler.AspNetCore. - Обновите код, чтобы включить Профилировщик для .NET.
- Настройте строку подключения Application Insights.
Из этой статьи вы узнаете о различных способах:
- Установка пакета NuGet в проекте.
- Настройка переменной среды с помощью оркестратора (например, Kubernetes).
- Ознакомьтесь с рекомендациями по обеспечению безопасности в рабочей среде, например о защите строки подключения Application Insights.
Предварительные условия
- Ресурс Application Insights. Запишите строку подключения.
- Docker Desktop для создания образов Docker.
- Установлен .NET 6 SDK.
Настройка среды
Клонируйте и используйте следующий пример проекта:
git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.gitПерейдите к примеру контейнерного приложения:
cd examples/EnableServiceProfilerForContainerAppNet6Этот пример представляет собой проект barebones, созданный путем вызова следующей команды CLI:
dotnet new mvc -n EnableServiceProfilerForContainerAppВ проекте
Controllers/WeatherForecastController.csнаблюдается задержка для имитации узкого места.[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)); }Добавьте пакет NuGet, чтобы собирать трассировки профилировщика .NET.
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCoreВключите Application Insights и профилировщик .NET.
Добавьте
builder.Services.AddApplicationInsightsTelemetry()иbuilder.Services.AddServiceProfiler()послеWebApplication.CreateBuilder()метода в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();Вы также можете добавить настраиваемые параметры профилировщика, если это применимо.
Извлечение последних образов сборки и среды выполнения ASP.NET Core
Перейдите в пример каталога .NET Core 6.0:
cd examples/EnableServiceProfilerForContainerAppNet6Загрузите последние образы ASP.NET Core:
docker pull mcr.microsoft.com/dotnet/sdk:6.0 docker pull mcr.microsoft.com/dotnet/aspnet:6.0
Добавьте ключ Application Insights
Используя ресурс Application Insights на портале Azure, обратите внимание на строку подключения Application Insights.
Откройте
appsettings.jsonи добавьте строку подключения Application Insights в этот раздел кода:{ "ApplicationInsights": { "InstrumentationKey": "Your connection string" } }
Сборка и запуск образа Docker
Просмотрите файл Docker.
Создайте пример образа:
docker build -t profilerapp .Запустите контейнер:
docker run -d -p 8080:80 --name testapp profilerapp
Просмотр контейнера через браузер
Чтобы попасть в конечную точку, у вас есть два варианта:
Откройте
http://localhost:8080/weatherforecastв вашем браузере.Используйте curl:
curl http://localhost:8080/weatherforecast
Проверьте журналы
При необходимости проверьте локальный журнал, чтобы узнать, завершился ли сеанс профилирования:
docker logs testapp
В локальных журналах обратите внимание на следующие события:
Starting application insights profiler with connection string: your-connection string # Double check the connection string
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.
Устранение неполадок
Если вы не можете найти следы из вашего приложения, продолжите шаги, описанные в этом руководстве по устранению неполадок.
Просмотр трасс профилировщика .NET
Подождите 2–5 минут, чтобы события можно было агрегировать в Application Insights.
Откройте область "Производительность" в ресурсе Application Insights.
После завершения процесса трассировки появится кнопка "Трассировка профилировщика".
Очистка ресурсов
Чтобы остановить пример проекта, выполните следующую команду:
docker rm -f testapp