如何将请求组合到不同的Application Insights实例中的不同服务或一起分析它们

时间:2017-09-25 06:25:52

标签: azure azure-application-insights

让这样的后端api结构:
1.具有帐户数据的独立服务器#1。它有自己的AI仪表键 2.具有订单数据的独立服务器#2。它有自己的AI仪表键 3.具有Courier服务数据的独立服务器#3。它有自己的AI检测键。

来自客户端的请求来到服务器#2。它向自己的数据库和其他资源发出请求,并通过HTTP向服务器#1,#3发出请求。 服务器#1和#3通过HTTP向其自己的数据库和其他资源以及彼此发出请求。

如何在Azure Portal中的AI Explorer中将其请求合并到一个跟踪中,或者从客户端请求到服务器#2的那一刻到响应客户端的时刻一起分析它们?

2 个答案:

答案 0 :(得分:3)

我认为cross-application queries有预览版,因此可以跨多个资源在Application Insights Analytics中进行查询。 以下是一个示例查询:

union app('fabrikamstage').requests, app('fabrikamprod').requests | where ..

使用最新的AI .NET Web SDK,AI ASP.NET Core SDK,node.js SDK,操作信息在服务器with the correlation headers之间传播,因此相关的遥测将在服务之间具有相同的Operation_Id,从而更容易查询。

答案 1 :(得分:0)

你还不能。您必须使用一个Application Insights资源。然后,您可以使用自定义属性或标记细分遥测,请参阅this blogpost

  

...如果你想比较它们之间的遥测。例如,您可能在多个群集上运行相同的应用程序,并希望比较它们的性能;或者您可以构建一个本地应用程序,并希望每个本地安装的每个遥测项目都使用CustomerID进行标记。   Application Insights SDK允许您通过使用任意标记标记从特定环境发送的所有遥测数据来执行此操作。然后在Metrics Explorer或Diagnostic Search中,您可以选择全部聚合,或按标签值分段或过滤数据。

替代方案可能使用多组件应用程序,如概述here

  

此处的关键技术是将应用程序中每个组件的遥测数据发送到同一个Application Insights资源,但必要时使用cloud_RoleName属性来区分组件。 Application Insights SDK将cloud_RoleName属性添加到遥测组件的发射中。例如,SDK将向cloud_RoleName属性添加网站名称或服务角色名称。您可以使用遥测初始化器覆盖此值。 Application Map使用cloud_RoleName属性来标识地图上的组件。

     

在某些情况下,这可能不合适,您可能更喜欢为不同的组件组使用单独的资源。例如,您可能需要使用不同的资源进行管理或计费。使用单独的资源意味着您没有看到单个Application Map上显示的所有组件;并且您无法在Analytics中跨组件进行查询。您还必须设置单独的资源。

如果您不介意自己完成大部分工作,可以使用不同AI资源的 rest api's ,并在您自己的应用/网站中粘贴一些内容