使用 Application Insights 探查实时 Azure 容器
几乎无需代码即可对容器中运行的 ASP.NET Core 应用程序启用 Application Insights Profiler。 若要在容器实例上启用 Application Insights Profiler,需要:
- 添加对 NuGet 包的引用。
- 设置用于启用它的环境变量。
在本文中,你将了解可以执行以下操作的各种方式:
- 在项目中安装 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
此示例是通过调用以下 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)); }
拉取最新的 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 密钥
通过 Azure 门户中的 Application Insights 资源,记下你的 Application Insights 检测密钥。
打开
appsettings.json
并将 Application Insights 检测密钥添加到此代码部分:{ "ApplicationInsights": { "InstrumentationKey": "Your instrumentation key" } }
生成并运行 Docker 映像
查看
Dockerfile
。生成示例映像:
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 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.
查看 Service Profiler 跟踪
等待 2-5 分钟,以便可以将事件聚合到 Application Insights。
在 Application Insights 资源中打开“性能”边栏选项卡。
跟踪过程完成后,你将看到“探查器跟踪”按钮,如下所示:
清理资源
运行以下命令停止示例项目:
docker rm -f testapp
后续步骤
- 了解有关 Application Insights Profiler 的详细信息。