为多个客户端服务的 Web api 的 Application Insights 策略

Application Insights strategies for web api serving multiple clients

我们有一个后端 API、运行 ASP.Net 核心,有两个前端:一个 SPA 网站 (Vuejs) 和一个渐进式网页(针对移动用户) .前端基本上只是客户端代码,所有服务都在不同的域中。我们不使用 cookie,因为身份验证使用不记名令牌。

我们一直在使用 Application Insights 进行监控,但由于文档对我们的情况的描述不是很清楚,我想获得更多关于什么是最佳策略和可能性的信息:

如果您想了解其中任何一个的细节,这可能值得提出几个独立的问题。 (通常你的最后一个项目符号总是暗示的,不是吗?:))

到目前为止你尝试了什么?不过,大多数 "best way for you" 类型的事情都会成为意见。

一般答案:

  • 回复:跟踪用户...

如果您已经将用户 info/auth 用于其他目的,您只需使用传入请求的遥测上下文中的信息设置各种 context.user.* 字段。使用相同遥测上下文发生的所有其他遥测随后将初始化您已有的任何用户信息。

  • 回复:将移动电话和标准电话分开...

如果您已经以不同的方式执行此操作 services/domains,并且您已经在两个地方使用相同的检测密钥,那么 domain/host 页面浏览量或请求的信息已经存在,您可以 filter/group 在门户中对此进行分析,或者在分析门户中进行自定义查询以进行分析。如果您知道它是哪个站点而不管主机,您可以将其添加为遥测上下文中的自定义属性,您也可以这样做以避免处理主机信息。

  • 回复:外部呼叫者通过 api

类似地,如果您已经公开 api 并使用身份验证,您应该(理想情况下)已经知道入站呼叫者是谁,并且您也可以在自定义属性中设置该信息。

一般来说custom properties(字符串:字符串键值对)和自定义指标(字符串:双键值对)是你的朋友。您可以在上下文中设置它们,以便在该上下文中生成的所有事件都继承相同的属性,您可以在单个 TrackEvent(或任何其他 Track* 调用)上明确设置它们以发送特定的 properties/metrics 与任何单个事件。

您还可以使用 telemetry initializers 来增强或过滤任何自动生成的遥测数据(例如服务器端的请求或依赖项,或页面视图和 ajax 依赖项客户端)