我对Application Insights非常陌生,我正在考虑将它用于我计划用asp.net webapi实现的一组服务。我能够非常轻松地启动和运行基本遥测(右键单击VS上的项目,添加应用程序洞察),但随后我遇到了阻塞。我计划在请求标头中设置一个相关ID来调用下游服务,我想标记与一个具有相同相关ID的外部呼叫相关的所有遥测。
到目前为止,我发现有一种方法可以配置TelemetryInitializer
,但如果我理解正确,这是在我访问请求之前运行的,这意味着我无法检查如果存在我应该附加的相关ID。
所以我猜可能有两种方法可以解决这个问题:1)如果我能以某种方式在初始化程序之前实际访问请求标头,那么显然可以解决问题,或者2)以某种方式获取TelemetryClient实例用于报告自动生成的遥测。
当我可以控制TelemetryClient
上设置的属性时,也许最后的手段是关闭所有自动内容并手动执行所有操作。但这将是一项相当多的工作,所以我更愿意找到其他解决方案。
答案 0 :(得分:3)
你是权利说你应该使用TelemetryInitializer。在任何遥测项目上调用Track方法时,将调用所有TelemetryInitializers。根据请求“跟踪”自动生成的请求遥测OnEnd,您应该在那时为您提供所有自定义标头。
答案 1 :(得分:0)
请同时查看OperationId - 这是App Inisghts管理的标准上下文的一部分,用于将请求与下游执行相关联。这是自动创建和传递的,包括跟踪(如果使用trackTrace)。
此外,我们在UX中有内置支持,可以轻松查看特定操作的所有遥测 - 可在“搜索 - >详细信息 - >相关项目 - >此操作的所有遥测中找到“