Application Insights 概述
Application Insights 是 Azure Monitor 的一个扩展,提供应用程序性能监视 (APM) 功能。 APM 工具可用于通过以下方式监视从应用程序开发到测试,再到生产的整个生命周期:
- 主动了解应用程序的执行情况。
- 被动查看应用程序执行数据以确定事件的原因。
除了收集描述应用程序活动与运行状况的指标和应用程序遥测数据外,Application Insights 还可用于收集和存储应用程序跟踪日志记录数据。
日志跟踪与其他遥测数据相关联,以提供活动的详细视图。 只需提供日志的目标即可将跟踪日志记录添加到现有应用;日志记录框架很少需要更改。
Application Insights 提供其他功能,包括但不限于:
- 实时指标 - 实时观察部署的应用程序的活动,而不影响主机环境
- 可用性 - 也称为“综合事务监视”,可以探测应用程序外部终结点以测试不同时间的整体可用性和响应能力
- GitHub 或 Azure DevOps 集成 - 在 Application Insights 数据上下文中创建 GitHub 或 Azure DevOps 工作项
- 使用情况 - 了解哪些功能受用户欢迎,以及用户如何与应用程序交互和使用应用程序
- 智能检测 - 通过主动遥测分析自动检测故障和异常
此外,Application Insights 支持分布式跟踪(也称为“分布式组件关联”)。 使用此功能可以搜索和可视化给定执行或事务的端到端流。 对于构建为分布式组件或微服务的应用程序,端到端跟踪活动的能力越来越重要。
使用应用程序映射可以创建应用程序体系结构的概要性自顶向下的视图,以及查看组件运行状况和响应能力的概览式视觉参考信息。
若要了解需要多少 Application Insights 资源才能涵盖你的应用程序或不同环境中的组件,请参阅 Application Insights 部署规划指南。
如何使用 Application Insights?
通过自动检测(代理)或者通过将 Application Insights SDK 添加到应用程序代码来启用 Application Insights。 支持多种语言,应用程序可以位于 Azure、本地或由其他云托管。 若要确定哪种类型的检测最适合你,请参阅如何检测应用程序?。
Application Insights 代理或 SDK 在将数据发送到 Azure 之前会预处理遥测数据和指标,这些内容在引入到 Azure 并在其中进一步处理后,将存储在 Azure Monitor 日志 (Log Analytics) 中。 因此,需有一个 Azure 帐户才能使用 Application Insights。
开始使用 Application Insights 的最简单方法是通过 Azure 门户和内置的视觉体验来使用。 高级用户可以通过 Azure Monitor 仪表板和工作簿直接查询基础数据以生成自定义可视化效果。
考虑从应用程序映射开始以获得概要视图。 使用搜索体验按类型和日期/时间快速缩小遥测信息和数据的范围,或者在数据(例如日志跟踪)中搜索,然后进行筛选以仅显示所需的关联操作。
使用性能视图直接开始分析 - 获取有关应用程序或 API 和下游依赖项的执行情况的深入见解,并查找有代表性的示例来进行端到端探索。 此外,可以主动使用故障视图 - 了解哪些组件或操作正在生成故障,并就错误和异常展开会审。 内置视图有助于主动跟踪应用程序运行状况,以及进行反应式根本原因分析。
创建 Azure Monitor 警报来发出潜在问题的信号,以防应用程序或部件偏离所建立的基线。
Application Insights 定价基于消耗量;你只需为使用的服务付费。 有关定价的详细信息,请参阅 Azure Monitor 定价页和如何优化成本。
如何检测应用程序?
自动检测是首选的检测方法。 它不需要为开发人员投入资源,并且可以消除将来与更新 SDK 相关的开销。 它也是检测你无法访问其源代码的应用程序的唯一方法。
只有在以下情况下才需要安装 Application Insights SDK:
若要使用 SDK,需要在应用中安装一个小型检测包,然后检测 Web 应用、任何后台组件和网页中的 JavaScript。 应用及其组件无需托管在 Azure 中。 检测将使用唯一的令牌来监视应用,并将遥测数据定向到 Application Insights 资源。 它对应用的性能影响很小;跟踪调用是非阻塞性的,并且会分批以便在单独的线程中发送。
集成式自动检测适用于 Azure 应用服务 .NET、Azure 应用服务 .NET Core、Azure Functions 和 Azure 虚拟机。
Azure Monitor Application Insights 代理适用于在本地虚拟机中运行的工作负载。
此处提供了自动检测支持的所有环境、语言和资源提供程序的详细视图。
对于其他方案,需要 Application Insights SDK。
我们还提供了一个预览版 Open Telemetry 服务。
支持的语言
本部分概述了支持的场景。
支持的平台和框架
本部分列出了所有受支持的平台和框架。
Azure 服务集成(门户启用、Azure 资源管理部署)
- Azure 虚拟机和 Azure 虚拟机规模集
- Azure 应用服务
- Azure Functions
- Azure Spring Apps
- Azure 云服务,包括 Web 角色和辅助角色
自动检测(在不更改代码的情况下启用)
手动检测/SDK(需要更改一些代码)
- ASP.NET
- ASP.NET Core
- Node.js
- Python
- JavaScript - Web
- Windows 桌面应用程序、服务和辅助角色
- 通用 Windows 应用 (App Center)
- Android (App Center)
- iOS (App Center)
注意
基于 OpenTelemetry 的检测面向 C#、Node.js 和 Python 提供预览版。 请查看每种语言的官方文档开头部分所述的限制。 如果需要完全功能体验,请使用现有 Application Insights SDK。
记录框架
- ILogger
- Log4Net、NLog 或 System.Diagnostics.Trace
- Log4J、Logback 或 java.util.logging
- LogStash 插件
- Azure Monitor
导出和数据分析
不受支持的 SDK
存在其他多个社区支持的 Application Insights SDK。 但是,Azure Monitor 仅在使用此页上列出的受支持检测选项时提供支持。 我们正在不断地评估扩展其他语言支持的机会。 查看 Azure Application Insights 更新,了解最新的 SDK 动态。
常见问题
查看常见问题解答。
故障排除
查看 Application Insights 的专用故障排除文章。
UserVoice
在 UserVoice 上为工程团队提供产品反馈。