分层客户端-服务器项目中的 Application Insights 安装

Application Insights installation in layered client-server project

我正在从事一个结构为 N 层/3 层架构风格的项目。这些层(客户端-服务器)通过 HTTP 和 WCF 相互通信。我想使用 AppInsights 来跟踪项目中的所有内容。但是,我对在项目中的哪个位置创建或添加 AppInsight 包感到困惑。我在 Azure 上的一个资源组下创建了两个资源实例。然后,我配置了inst。关于解决方案中项目的关键和其他事情。尽管我用我的方法覆盖了 handle 属性(如 AppInsights 文档中所述),但我看不到从客户端到服务器的所有调用方法和异常跟踪以及层。无法跟踪该项目类型中的异常情况还是我弄错了?

更新以获取更多信息以清楚地定义问题:当我使用一个资源和一个检测密钥时,AppInsights 很好地定义了整个项目并显示了我的解决方案及其依赖项之间的关系。但是,当一个请求由于服务器中的异常而失败时,我无法访问整个异常跟踪,只能访问从服务器请求请求的最后一种方法。因此,我使用了两个资源实例,一个用于服务器,一个用于客户端(不是真正的客户端,它就像中间层)。

如果您使用多个 apps/keys 和多层,您可能需要通过 http headers 的 correlationId 之类的东西向 set/pass 引入自定义代码,以及读取和读取的代码将其用作应用程序见解 "operation id"。如果您跨不同的 applications/ikeys 进行工作,跨应用程序搜索将变得更加复杂。

相反,您可能希望在所有层中只使用一个 ikey,而不是针对不同的环境使用不同的 ikey,例如 dev/staging/prod。

有一些 reading/using operationId 的例子,比如这个博客 post: http://blog.marcinbudny.com/2016/04/application-insights-for-owin-based.html#.WBkL24WcFaQ

有人用 OWIN 做了类似的事情。

对于异常跟踪,如果异常发生在其他 asp.net 层之一,您可能需要启用一些额外的设置来收集异常或更多信息:

http://apmtips.com/blog/2016/06/21/application-insights-for-mvc-and-mvc-web-api/