应该使用哪个API来查询ApplicationInsights跟踪日志?

我们的 ASP.NET Core 应用将跟踪消息记录到 App Insights。我们需要能够查询它们并通过一些自定义维度进行过滤。但是,我找到了 3 个 API,但不确定要使用哪一个:

  1. 应用洞察 REST API
  2. Azure 日志分析 REST API
  3. Azure 数据资源管理器 .NET SDK(预览版)

首先,我不明白这些选项之间的关系。我认为 App Insights 将其数据保存到 Log Analytics;但如果是这种情况,我希望只能通过 Log Analytics 进行查询。

无论如何,我只需要知道哪个最好用,我希望文档更清晰。我的直觉是使用 App Insights API,因为我们只需要来自 App Insights 的数据,而不需要来自其他来源的数据。

回答

#1 和 #2 之间的差异主要是历史性的和趋同的。

  1. Application Insights 在日志分析之前作为产品存在,并且基于不同的底层数据库技术

  2. Application Insights 和 Log Analytics 融合为使用相同的底层数据库,基于 ADX(Azure 数据资源管理器)和相同的精确 REST API 服务来查询。因此,虽然您的 #1 和 #2 链接不同,但它们实际上指向同一团队的相同服务后端,但路径/语义在服务的外观上略有不同,具体取决于入站请求。

  • AI 和 LA 都在其 azure 资源之上引入了多租户的概念和一组特定的表/模式。它们有效地对您隐藏了整个数据库,使其看起来像一个巨大的数据库。

  • 现在甚至可以(建议)将 Application Insights 数据放置在 Log Analytics 工作区中:

    https://docs.microsoft.com/en-us/azure/azure-monitor/app/create-workspace-resource

    这使您可以将多个 AI 应用程序/组件的数据放入相同的日志分析工作区,以简化跨不同应用程序的查询等

  1. 将 ADX 视为任何其他类型的数据库产品。如果你创建一个 ADX 集群实例,你必须创建数据库、管理模式、管理用户等。 AI 和 LA 为你做这一切。因此,在您上面的问题中,指向 ADX SDK 的第三个链接将用于直接与 ADX 集群/数据库对话。我不相信你可以用它来直接与任何 AI/LA 资源对话,但有一些方法可以让 ADX 集群查询 AI/LA 数据:
  • https://docs.microsoft.com/en-us/azure/data-explorer/query-monitor-data

    以及使用adx查询中的关键字将 LA/AI 查询加入 ADX 集群的方法:

  • https://docs.microsoft.com/en-us/azure/azure-monitor/logs/azure-monitor-data-explorer-proxy


以上是应该使用哪个API来查询ApplicationInsights跟踪日志?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>