2017-04-05 66 views
2

我无法弄清楚如何为aspnetcore项目配置AI。我已经做了以下内容:ApplicationInsights dotnet核心自定义初始化程序

services.AddSingleton<ITelemetryInitializer, AppInsightsInitializer>(); 
services.AddApplicationInsightsTelemetry(Configuration); 

当我需要的用户的loggedIn和服务名,所以我有了这个初始化:

public class AppInsightsInitializer : ITelemetryInitializer 
{ 
    private IHttpContextAccessor _httpContextAccessor; 
    public AppInsightsInitializer(IHttpContextAccessor httpContextAccessor) 
    { 
     _httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException("httpContextAccessor"); 
    } 
    public void Initialize(ITelemetry telemetry) 
    { 
     var httpContext = _httpContextAccessor.HttpContext; 
     telemetry.Context.Properties["appname"] = "MyCoolService"; 

     if (httpContext != null && httpContext.User.Identity.IsAuthenticated == true && httpContext.User.Identity.Name != null) 
     { 
      telemetry.Context.User.AuthenticatedUserId = httpContext.User.Identity.Name; 
     } 
    } 

} 

我没有applicationinights.config文件(我的理解他们是不需要的)

问题:我有4个条目的每个日志(相同的ID)。数据是正确的。我也有在日志下面errror:

AI: Error collecting 9 of the configured performance counters. Please check the configuration. Counter \Process(??APP_WIN32_PROC??)\% Processor Time: Failed to perform the first read for performance counter. Please make sure it exists. 
Category: Process, counter: % Processor Time, instance Counter \Memory\Available Bytes: Failed to register performance counter. 
Category: Memory, counter: Available Bytes, instance: . 
Counter \ASP.NET Applications(??APP_W3SVC_PROC??)\Requests/Sec: Failed to perform the first read for performance counter. Please make sure it exists. 
Category: ASP.NET Applications, counter: Requests/Sec, instance MyCoolv3.Api.exe Counter \.NET CLR Exceptions(??APP_CLR_PROC??)\# of Exceps Thrown/sec: Failed to perform the first read for performance counter. Please make sure it exists. 
Category: .NET CLR Exceptions, counter: # of Exceps Thrown/sec, instance Counter \ASP.NET Applications(??APP_W3SVC_PROC??)\Request Execution Time: Failed to perform the first read for performance counter. Please make sure it exists. 
Category: ASP.NET Applications, counter: Request Execution Time, instance MyCoolv3.Api.exe Counter \Process(??APP_WIN32_PROC??)\Private Bytes: Failed to perform the first read for performance counter. Please make sure it exists. Category: Process, counter: Private Bytes, instance Counter \Process(??APP_WIN32_PROC??)\IO Data Bytes/sec: Failed to perform the first read for performance counter. Please make sure it exists. 
Category: Process, counter: IO Data Bytes/sec, instance Counter \ASP.NET Applications(??APP_W3SVC_PROC??)\Requests In Application Queue: Failed to perform the first read for performance counter. Please make sure it exists. Category: ASP.NET Applications, counter: Requests In Application Queue, instance MyCoolv3.Api.exe 
Counter \Processor(_Total)\% Processor Time: Failed to register performance counter. Category: Processor, counter: % Processor Time, instance: _Total. 

我使用:

<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.1.0-beta1" /> 
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" /> 
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" /> 

回答

1
services.AddApplicationInsightsTelemetry(Configuration); 

不需要了(只是假设,你应该甚至可以在该行获得废弃警告?)

如果你在VS2017中创建了一个asp.net核心新项目,AI已经在包引用中(尽管2.0版本,而不是2.1 beta版本),并且所有的连接都已经在program.cs和其他一些文件。

如果要移植现有一个,然后代替上述AddApplicationInsights...线,而是你必须

.UseApplicationInsights() 

program.cs启动您的应用程序,而不是。更多详细信息,请参阅2.1 beta release notes on github

我们也在更新VS2017中的“配置应用程序洞察”工具,以便在未来的更新中正确“迁移”这样的应用程序。

我不确定为什么你会得到任何事件的多个实例,除非你明确地记录它们,或者如果你可能有多个调用启动(这也应该不会影响任何东西)。你在哪里看到多个实例?在VS的appinsights工具?在门户网站?

+0

相关问题:如果我想以编程方式在Program.cs中的WebBuilder上使用UseApplicationInsights()时添加遥测密钥,但在启动配置(这是我从keyvault加载遥测密钥的位置)之前执行的。我想过在WebBuilder上调用UseConfiguration(xx)并从xx中检索配置,然后将其用作UseApplicationInsights的参数......想法? – MarkD