问题描述
Web App 发布后, Application Insights 收集不到数据了
问题分析
在应用服务(App Service)中收集应用的监控数据(如Request,Exception,Trace等)时通过Agent(Application Insight Site Extension)来实现的。因更新迭代的关系,有些版本不再,或还没有被支持。如Agent(Application Insight Site Extension 2.8.38)支持.NET Core 2.1 and 3.1, 而 .Net Core 2.2不再被继续支持,而.Net 5却还没有被支持。
解决办法
一:使用基于代理(agent-based)模式修改.Net Core的版本和Application Agent版本。如:
ApplicationInsightsAgent_EXTENSIONVERSION=~2 同时 升级至.NET Core 3.1
ApplicationInsightsAgent_EXTENSIONVERSION=2.8.37 同时 继续使用.NET Core 2.2
二:使用基于代码模式的Application Insighs:
升级至.NET 5 并更新项目依赖:https://docs.microsoft.com/en-us/azure/azure-monitor/app/asp-net-core
2.1 安装Application Insights SDK,建议一直使用最新的稳定版Application Insights SDK NuGet package for ASP.NET Core。打开项目中的.csproj文件,以如下示例为参考添加Package引用。
2.2 在项目的Startup类中的 ConfigureServices()方法中,添加 services.AddApplicationInsightsTelemetry()。启动Application Insights
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// The following line enables Application Insights telemetry collection.
services.AddApplicationInsightsTelemetry();// This code adds other services for your application.
services.AddMvc();
}
2.3 设置Application Insights的 instrumentation Connection String。 这里有多种方式来设置Connection String, Connection String的值由Azure Application门户提供
a) 使用系统级环境变量
在系统中添加环境变量参数:APPLICATIONINSIGHTS_CONNECTION_STRING。
b) 在代码设置,使用TelemetryConfiguration对象或ApplicationInsightsServiceOptions
或者
c) 使用配置文件(官方推荐方式)
参考资料
How to set a connection string:https://docs.microsoft.com/en-us/azure/azure-monitor/app/sdk-connection-string?tabs=net#how-to-set-a-connection-string
Enable Application Insights server-side telemetry (no Visual Studio):https://docs.microsoft.com/en-us/azure/azure-monitor/app/asp-net-core#enable-application-insights-server-side-telemetry-no-visual-studio
Enable agent-based monitoring:https://docs.microsoft.com/en-us/azure/azure-monitor/app/azure-web-apps?tabs=netcore#enable-agent-based-monitoring
Microsoft.ApplicationInsights.AspNetCore package: https://www.nuget.org/packages/Microsoft.ApplicationInsights.AspNetCore