未连接Azure Application Map for Application Insight

时间:2019-10-18 22:32:43

标签: azure azure-application-insights azure-api-management

我们具有Azure云设置,因此我们的客户端SPA与Azure APIM进行对话,然后与Micro Service进行对话。我们已在每个级别上启用了Application Insights,以收集端到端遥测。

在Application Insights的Application Map中,我们确实看到了每个请求的端到端流程。

唯一的问题是AppInsight实例(图像中的数字3)与任何内容均不相关,并且显示在图表外部。

我希望在一行中看到No 1> No2,然后看到No 3箭头,显示端到端流。

有人在应用程序见解中处理过有关应用程序映射的此类问题吗?

Azure Application Map

2 个答案:

答案 0 :(得分:1)

我有同样的问题。对其进行修复有助于理解该图的工作原理:

在“应用程序映射”内部,将通过依赖项实体(由客户端发送)与请求实体(由服务器发送)之间的关联来连接项目:

  1. dependencyTelemetry.OperationId = requestTelemetry.OperationId
  2. dependencyTelemetry.Id = requestTelemetry.ParentId

http调用的常见方法似乎是客户端将所需的信息作为http请求标头的一部分发送。在两端,都将需要每种服务方法自己的代码或需要处理请求/发送管道的中间件服务。

使用与.NET Core 3.1相关的nuget Microsoft.ApplicationInsights.AspNetCore将添加此类服务。

此nuget包使用默认配置发送的HTTP标头示例2.13.0 +:

  • 请求上下文:appId = cid-v1:12345678-60ba-4f61-ae37-07da9dc13267
  • 请求ID:| abcdefdc99366a48a3886f34fb41c781.0102cca5a4ecc64f。
  • traceparent:00-abcdefdc99366a48a3886f34fb41c781-0102cca5a4ecc64f-00

其中

  • 请求上下文:appId,如AplicationInsights门户中所示。旧版+用于连接2种不同应用程序见解的方案
  • Request-Id:旧版,但当前使用的标头用于传输操作ID +父级
  • traceparent:增加了对即将到来的新W3C标准的支持

  • abcdefdc99366a48a3886f34fb41c781:OperationId,根据W3C标准,十六进制为16字节

  • 0102cca5a4ecc64f:ParentId,按照W3C标准为8字节,十六进制

另请参阅文档“ Application Insights中的遥测相关性” https://docs.microsoft.com/en-us/azure/azure-monitor/app/correlation

答案 1 :(得分:-1)

第一步,请运行App Map文档中提供的Troubleshooting guide,建议您仔细检查以下内容:

  • 请确保您使用的是官方支持的SDK,因为不受支持/社区的SDK可能不支持关联。
  • 所有组件升级到最新的SDK版本。
  • 如果您将Azure Functions与C#一起使用,请升级到Functions V2。
  • 确认云角色名称已正确配置。
  • 如果缺少依赖项,请确保它在自动收集的依赖项列表中。如果没有,您仍然可以通过TrackDependency调用对其进行手动跟踪。

如果所有这些看起来都不错,请详细说明您当前的应用环境以及@ZakiMa上面要求的详细信息。拥有这些详细信息将有助于进一步解决问题。回顾App Insights的Telemetry correlation模型也将有助于更好地了解其工作原理。