适用于多个客户的web api的Application Insights策略

时间:2017-05-02 12:29:57

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

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

我们一直在使用Application Insights进行监控,但由于文档对我们的情况并不十分具有描述性,因此我想获得更多关于什么是最佳策略和可能性的输入:

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

1 个答案:

答案 0 :(得分:2)

如果你想要任何一个问题的具体细节,这可能值得几个独立的问题。 (通常你的最后一颗子弹总是隐含的,不是吗?:))

到目前为止你尝试了什么?大部分"最适合你的方式"但是,有些事情会成为意见。

一般答案:

  • re:跟踪用户......

如果您已经将用户信息/身份验证用于其他目的,则只需使用您在传入请求的遥测上下文中提供的信息设置各种context.user.*字段。使用相同的遥测环境发生的所有其他遥测都将使您已经拥有的任何用户信息无效。

  • re:将来自移动和标准的呼叫分开......

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

  • re:外部来电者通过api

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

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

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