Application Insights - 没有“进程 cpu”的数据
Posted
技术标签:
【中文标题】Application Insights - 没有“进程 cpu”的数据【英文标题】:Application Insights - No data for 'process cpu' 【发布时间】:2016-02-17 11:51:03 【问题描述】:我正在为 WCF 项目设置应用洞察。我遇到的问题是我似乎无法让它报告进程 cpu、可用内存等。图表只是说没有数据。
我有
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector">
包含在我的 applicationinsights.config 文件中,正如我在另一篇文章中看到的那样,这是必需的,但这似乎没有对其进行排序。
有谁知道我是否需要在我的项目中添加任何其他内容才能使其正常工作?我假设默认情况下会收集这些信息。
【问题讨论】:
要补充一点,我一直在查看输出窗口,并且不断看到以下错误,重复抛出异常:Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.dll 中的“System.NullReferenceException”抛出异常:Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.dll 中的“System.InvalidOperationException” 是否正在收集其他性能计数器,还是全部丢失? 好吧,我发誓我什么都没做,但我刚刚回到了 azure 门户,我所期望的一切都在那里,处理 CPU,利用内存。等 【参考方案1】:我遇到了非常相似的问题。获取有关应用程序洞察力的所有其他数据,但没有服务器数据,例如平均进程 CPU、可用内存、进程 IO 速率等。
我发现在服务器上,我在应用程序池下运行的应用程序没有足够的权限来收集性能数据。(您可以在 Application Insights 状态监视器预览中查看这一点,通常如果您有权限问题,会有关于它的警告消息)
进行这两个步骤:
-
在 IIS 管理器中,选择您的应用程序池,打开高级设置,然后在进程模型下记下标识。
在计算机管理控制面板中,将此身份添加到性能监视器用户组。
一旦应用程序池有足够的权限收集性能数据。服务器的所有数据都显示在洞察力上。
https://azure.microsoft.com/en-us/documentation/articles/app-insights-monitor-performance-live-website-now/
【讨论】:
我也必须回收应用程序池才能将统计信息用于应用洞察 很糟糕,将 appPool 用户添加到性能监视器用户还没有为我修复它。我有其他三台服务器都正确报告。这个盒子不能这样做肯定是有原因的。【参考方案2】:因为您说您手动将性能计数器模块添加到配置文件中,所以我假设您没有使用应该自动添加该模块的 Web SDK nuget 包。如果是这样,您需要在代码中配置它,而不是创建配置文件。您需要在代码中创建此模块并设置检测密钥。
TelemetryConfiguration.Active.InstrumentationKey = "Foo";
this.perfCounterCollectorModule = new PerformanceCollectorModule();
更多here.
【讨论】:
仅使用 Visual Studio 2015 中的上下文菜单将见解添加到项目中,我认为这将创建我需要的一切。 是的,如果您添加了 VS,它应该自动配置所有内容。据我了解,您对这个问题的评论不再重复。【参考方案3】:我必须将 appPool 用户添加到“Performance Log Users”和“Performance Monitor Users”组并循环 appPool。
【讨论】:
【参考方案4】:我可以让 Application Insights 从 Azure 或我的本地计算机中的 IIS 托管 .NET Framework 应用程序收集 performanceCounters 的唯一方法是 install the Microsoft.Azure.Diagnostics.ApplicationMonitoringWindows agent。
我发现可能需要这个的唯一迹象是AIS troubleshooting docs 中的这个小消息:
没有性能数据
性能数据(CPU、IO 速率等)可用于 Java Web 服务、Windows 桌面应用程序、IIS web apps and services if you install Application Insights Agent 和 Azure 云服务。您可以在“设置”、“服务器”下找到它。
按照ASP.NET App Insights 一行一行的采样...我没有看到收集到性能计数器
我觉得这个模块在 IIS 中运行有些不兼容
Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector
这似乎工作的唯一时间是如果我将我的应用程序作为 .exe 托管在 Windows 服务中......此时我终于通过 SDK 在没有安装代理的情况下看到 perfCounters。
并显示在性能刀片/角色选项卡中
【讨论】:
以上是关于Application Insights - 没有“进程 cpu”的数据的主要内容,如果未能解决你的问题,请参考以下文章
ILogger 到 Application Insights
Azure Application Insights 不显示数据
TelemetryClient 在 Application Insights 中产生不一致的结果