桌面应用中的Application Insights不会发送性能计数器

时间:2015-09-06 00:38:46

标签: c# azure azure-application-insights

我正在关注these instructions 将App Insights添加到Windows桌面应用。我在我的代码中添加了一些TrackMetric和TrackException调用,这些数据在门户网站中显示得很好,所以我知道基本的管道工作正常。

基于these instructions,然后我将AI.Web NuGet包添加到我的项目中(是的,我知道这听起来很奇怪,但是特别推荐)并禁用所有以下内容配置文件中的模块/初始化器:

  • DiagnosticsTelemetryModule
  • DependencyTrackingTelemetryModule
  • PerformanceCollectorModule
  • DeviceTelemetryInitializer

我的遥测数据中显示了其他设备信息,因此我知道应用程序至少会提取配置文件设置。

不幸的是,无论我做什么,都没有出现任何标准效果计数器指标。

在桌面应用程序中启用perf计数器收集还需要做些什么吗?

提前感谢任何,呃,见解......:)

编辑:“标准性能计数器”是指默认情况下Windows性能计数器PerformanceCollectorModule根据之前链接的instructions进行跟踪,其状态为:

  

PerformanceCollectorModule跟踪许多Windows性能计数器。单击Metric Explorer中的图表以打开其详细信息刀片时,可以看到这些计数器。

     

您可以监控其他性能计数器 - 标准Windows计数器和您添加的任何其他计数器......

很明显,我不应该将标准文件添加到配置文件中 - 只需要包含任何其他计数器。

2 个答案:

答案 0 :(得分:2)

理想情况下,您应该只能在应用的基础Application Insights包之上使用Perf Counter Collector nuget package

您仍然需要在appinsights.config文件中设置要监控的性能计数器,或者通过instructions you linked中记录的代码来设置,例如:

<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector">
  <Counters>
    <Add PerformanceCounter="\MyCategory\MyCounter" />
    <Add PerformanceCounter="\Process(??APP_WIN32_PROC??)\Handle Count" ReportAs="Process handle count" />
    <!-- ... -->
  </Counters>
</Add>

我相信web sdk只是设置了一堆ASP.NET管道/ w3wp性能计数器,它们在标准的Windows应用程序中无法做任何事情。

答案 1 :(得分:2)

确保帐户(您的应用程序在其下运行)可以访问该计算机上的性能计数器(通常它应该只是Performance Monitor Users组的成员)。