Application Insights SDK - 映射资源间依赖关系

Application insights SDK - Map inter-resource dependencies

我正在尝试使用 Application Insights 创建一个端到端的应用程序映射。请注意,所有依赖项和指标都是使用 SDK 捕获和发送的。

假设以下场景: Windows 服务(批处理)>(调用)WebAPI >(查询数据库)

我有 2 个 Application Insight 资源 - Windows 服务和 WebAPI。两者都在捕获指标,但都是孤立的。如何使用 SDK 在资源 1(即服务)和资源 2(即 WebAPI)之间创建依赖关系?我需要能够查看资源 1 的应用程序映射,并能够查看 windows 服务 > 网络服务 > 数据库的整个端到端视图。

我目前只能看到 windows service > WebApi(App Map 资源 1)或 WebApi > db(App Map 资源 2)。需要以某种方式将两者结合在一起?

我的建议是为您的 Windows 服务和 Web API.
使用相同的 Application Insights 资源(例如检测密钥) 您可以通过添加自定义 属性 指示您发出的所有遥测数据的服务来分离这两项服务的遥测数据。最简单的方法是实现遥测初始化程序(参见 here 文档)。

今天不可能。可能的方式-

  • 使用单个 InstrumentationKey 并通过自定义 属性 标识(如 @EranG
  • 建议
  • 导出两个应用程序的数据并做您自己的事情

请对此投票uservoice。产品团队已经在考虑在未来实现此功能。

Application Insights sdk 仅自动收集 HTTP 依赖项的依赖项。此外,它仅在应用程序洞察分析器在机器上 运行 时有效(通常通过 Application Insights 扩展安装在 Azure 网站上)。

如果您恰好处于新版beta sdk没有为您收集依赖的情况之一。您可以自己编写一些代码来自行完成此操作。

sdk 的自动收集代码是开源的,您可以使用它来指导您如何跟踪这些依赖项。这个想法是将目标组件的检测密钥的哈希附加到依赖项遥测的目标字段,并将依赖项类型设置为 "Application Insights"。

计算散列的方法如下:Compute Hash

以下是如何将其添加到目标字段并在依赖项遥测对象上设置正确的依赖项类型:Add component correlation to DependencyTelemetryTarget

注意一点。捕获目标字段的格式/依赖类型的名称可能很快就会发生变化(参见 this discussion)。如果发生这种情况,那么这对您来说也是一个很容易的改变。