在 Web 作业/应用程序中捕获性能计数器?

Capture Performance Counters in Web Job / App?

是否可以捕获当前 process/app 的性能计数器值?我正在尝试捕获关于我的 运行 Web 作业的指标,例如 GC 中的 % TIme、第 N 代堆大小、线程争用率/秒等。我看到 Application Insights 在我的应用程序中启用时可以捕获这些类型的指标网站。

var category = ".NET CLR Memory";
var counter = "% Time in GC";
var instance = Process.GetCurrentProcess().ProcessName;
var pc = new PerformanceCounter(category, counter, instance, true);

我明白为什么这会失败,因为 Auzre/kudu 运行时沙箱需要确保实例是我的进程而不是其他客户的进程。有没有办法访问我的进程的计数器,以便我可以报告 on/collect 它们?我希望在流程中进行收集。

如您所述,由于沙盒限制,目前无法收集性能计数器。我们正在研究以安全的方式实现这一目标的方法,但没有任何时间表可以分享。

此时你最好的选择可能是使用应用程序洞察,这是目前为你的应用程序收集诊断信息的推荐方法(他们有几乎所有应用程序类型的解决方案 - 不仅仅是网络应用程序):https://azure.microsoft.com/en-us/documentation/services/application-insights/