ServiceFabric ApiGateway 上的 ApplicationInsights 端到端中断

问题描述

全部,

我在 ApplicationInsights 中设置端到端事务监控时遇到一些问题,它似乎破坏了我的 ServiceFabric ApiGateway 服务 (.net CORE) 上的端到端视图。这导致 AppInsights 中有 2 条跟踪,而不是 1 条(我想要 ;-)。

好的,我的设置:

enter image description here

因此,外部 API(.net 核心)通过 HTTP 与 SF 集群中的 ApiGateway(.net 核心无状态服务)通信。在 SF 集群内,所有服务(无状态全 .net)通信都是通过 Remoting V2 进行的。

我使用 ex 设置了 ApplicationInsights。 :https://github.com/yantang-msft/service-fabric-application-insights-example

在 ApplicationInsights 中,我看到 2 个跟踪(应该是一个),分别是:

  • 包含外部 API 和 ApiGateWay 以及对无状态服务的请求的跟踪
  • 包含无状态服务(多个)之间通信的跟踪

从 APIGateway 向下发送消息时,似乎未重用“操作 ID”。 AppInsights 是不是我可以看到“操作 ID”不同。

有人有想法吗?我错过了什么?我是否应该在 ApiGateway 中的传出请求上设置操作 ID(以及我该怎么做 ;-))

解决方法

经过一些接触 (https://github.com/microsoft/ApplicationInsights-ServiceFabric/issues/115) 后,问题变得清晰起来。

这是因为新版本的 AppInsight 使用了新的协议,该协议位于库的 .net 版本中。 您可以强制 AppInsights 使用“旧”协议,然后端到端跟踪再次工作。您可以通过将 ActivityIDformat 属性设置为如下所示的旧属性来实现这一点。 (在应用启动的某个地方)

Activity.DefaultIdFormat = ActivityIdFormat.Hierrachical;
Activity.ForceDefaultIdFormat = true;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...