我创建了一个具有以下角色的云服务项目:
- 一个网络角色
- 一个 Worker 角色
对于这两个角色,我添加了 Azure Application Insights SDK/Nuget pkg。我还将状态监视器添加到了它们的启动任务中。两个角色指向不同的AI资源。对于 Worker 角色,我还在 csdef 文件中添加了以下三个环境变量。
<Environment>
<Variable name="COR_ENABLE_PROFILING" value="1" />
<Variable name="COR_PROFILER" value="{324F817A-7420-4E6D-B3C1-143FBED6D855}" />
<Variable name="MicrosoftInstrumentationEngine_Host" value="{CA487940-57D2-10BF-11B2-A3AD5A13CBC0}" />
</Environment>
问题与 Web 角色不同,辅助角色不会填充 Application Insights 中的 CPU 使用率/可用内存,如下所示。
辅助角色的 Application Insights 资源:
这可能是什么问题,我可以在上面显示的环境变量中使用任何 GUID 吗?
此外,对于辅助角色,我们似乎需要将 ApplicationInsights.config 文件设置为始终复制到输出目录。但是,当我这样做时,辅助角色会抛出任务异常并不断重新启动,最终导致部署失败。
最佳答案
1) 为了收集性能计数器,运行的辅助角色进程 (WaWorkerHost.exe) 帐户应属于性能监视器用户组的一部分。
看一下下面的线程:它解释了如何修改启动任务(InstallAgent.ps1)以授予正确的权限。它是针对网络角色完成的,因此您需要将 $user = "Network Service"替换为适合您情况的帐户。
add Azure Application insight Status Monitor from command line
2) 不可以,您不能对环境变量使用任何 GUID。它是 AppInsights 探查器的预定义 COM 对象 GUID。
关于Azure Application Insights - 辅助角色中的进程 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31496061/