【问题标题】:Application Insights strategies for web api serving multiple clients为多个客户端提供服务的 Web api 的 Application Insights 策略
【发布时间】:2017-05-02 12:29:56
【问题描述】:

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

我们一直在使用 Application Insights 进行监控,但由于文档无法很好地描述我们的情况,我想获得更多关于什么是最佳策略和可能性的意见:

  • 在没有 cookie 的情况下跟踪用户和指标,例如在应用程序中单击按钮以调用服务器、实体框架/SQL 查询(我看到目前不支持此功能,How to enable dependency tracking with Application Insights in an Asp.Net Core project)、处理数据并在客户端显示结果。
  • 在 Application Insights 查询中以简单的方式将来自移动和标准 Web 的呼叫分开。在最初显示的标准图表中显示这一点的任何方式都是有益的。
  • 确保我们的策略也适用于其他外部客户端将访问 API 的情况,并且我们应该能够轻松识别这些情况,并查看它们为系统创建了多少负载。
  • 用最少的代码完成上述所有工作。

【问题讨论】:

    标签: asp.net-core azure-application-insights


    【解决方案1】:

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

    到目前为止,您尝试过什么?不过,大多数“对你来说最好的方式”都是意见。

    一般答案:

    • re:跟踪用户...

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

    • re:将电话与移动电话和标准电话分开...

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

    • re:通过 api 的外部调用者

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 2023-03-13
      • 2019-09-22
      • 2018-09-27
      相关资源
      最近更新 更多