创建和配置 Application Insights 资源

重要

本文适用于 基于工作区的 Application Insights 资源。 经典 Application Insights 资源已停用。 过渡到基于工作区的 Application Insights ,以利用新功能。

Application InsightsLog Analytics 集成,并将遥测数据发送到常见的 Log Analytics 工作区。 此设置提供对 Log Analytics 功能的完全访问权限,将日志合并到一个位置,并允许使用统一的 Azure 基于角色的访问控制 ,从而无需跨应用/工作区查询。

增强的功能包括:

  • 客户管理的密钥 - 使用仅可访问的密钥加密静态数据。
  • Azure 专用链接 - 使用专用终结点将 Azure PaaS 服务安全连接到虚拟网络。
  • - 此层级提供的定价相对于即用即付定价而言可以节省高达 30% 的费用。

本文介绍如何创建和配置 Application Insights 资源。 除了 Application Insights 资源本身,还可以添加各种配置,例如设置 每日 上限和 定价计划。 还可以使用 Azure 资源管理器创建可用性测试、设置指标警报并自动执行该过程。

注意

基于工作区的 Application Insights 资源的数据引入和保留操作通过数据所在的 Log Analytics 工作区计费。 若要了解有关计费的详细信息,请参阅 Azure Monitor 日志定价详细信息

先决条件

  • 有效的 Azure 订阅。
  • 创建资源所需的权限。

其他需求

没有其他要求。

创建 Application Insights 资源

  1. 登录到 Azure 门户
  2. 选择“创建资源”。
  3. 然后选择 Application Insights
  4. 输入所有相关信息,然后 审核并创建 Application Insights 资源。

显示 Application Insights 资源的屏幕截图。

注意

如果在创建资源期间未连接到现有的 Log Analytics 工作区,则会随 Application Insights 资源一起自动创建新的 Log Analytics 资源。

创建资源后,可以在 Application Insights “概述 ”窗格中找到相应的工作区信息。

显示工作区名称的屏幕截图。

选择蓝色的链接文本会转到关联的 Log Analytics 工作区,可以在其中利用新的统一工作区查询环境。

备注

我们仍为 Application Insights 经典资源查询、工作簿和基于日志的警报提供完全后向兼容性。 若要查询或查看新的基于工作区的表结构或架构,必须先转到 Log Analytics 工作区。 在“Application Insights”窗格中选择“日志(分析)”访问经典 Application Insights 查询体验。

配置监控

创建 Application Insights 资源后,可以配置监视。

获取连接字符串

连接字符串用于标识要与遥测数据关联的资源。 还可以使用它来修改你的资源用作遥测目标的终结点。 必须复制连接字符串,并将其添加到应用程序的代码或添加到环境变量中。

若要获取 Application Insights 资源的连接字符串,请执行以下操作:

  1. 在 Azure 门户中打开 Application Insights 资源。
  2. “概要”部分中的“概述”窗格中,查找连接字符串
  3. 如果将鼠标悬停在连接字符串上,将显示一个图标,用于将其复制到剪贴板。

使用 OpenTelemetry 进行应用程序监视

若要使用 OpenTelemetry 进行应用程序监视,请安装相应的 Azure Monitor OpenTelemetry 发行版,并将连接字符串指向新创建的资源。

有关如何使用 OpenTelemetry 设置应用程序监视的信息,请参阅特定于语言的以下文档:

注意

对于面向浏览器的 Web 应用,我们建议使用 Application Insights JavaScript SDK

自动化仪器

对于 Azure FunctionsAzure 应用服务等监视服务,可以先创建 Application Insights 资源,然后在启用监视时指向它。 或者,可以在启用过程中创建新的 Application Insights 资源。

配置 Application Insights 资源

修改关联的工作区

创建 Application Insights 资源后,可以修改关联的 Log Analytics 工作区。

在 Application Insights 资源中,选择 属性>更改工作区>Log Analytics 工作区

导出遥测数据

基于工作区的资源不支持旧版连续导出功能。 请改用 诊断设置

注意

导出诊断设置可能会增加成本。 有关详细信息,请参阅从 Application Insights 导出遥测数据。 有关此功能的定价信息,请参阅 Azure Monitor 定价页。 在开始计费之前,会发送通知。 如果在通知期过后继续使用遥测数据导出,你将按适用的费率付费。

在 Application Insights 资源中,选择“ 诊断设置>添加诊断设置”。

可以选择要存档到存储帐户的所有表或表子集。 还可以将其流式传输到事件中心

设置数据保留期

可以在关联的 Log Analytics 工作区中设置 Application Insights 资源的数据保留期。

有关详细信息,请参阅 配置 Analytics 表的默认交互式保留期

设置每日上限

必须为 Application Insights 和基础 Log Analytics 工作区单独设置每日上限。 有效的每日上限是两个设置的最小值。

若要了解如何在 Azure 门户中设置 每日上限,请参阅在 Log Analytics 工作区上设置每日上限

设置定价计划

可以在关联的 Log Analytics 工作区中设置 Application Insights 资源的定价计划。 有关可用定价计划的详细信息,请参阅 Azure Monitor 日志成本计算和选项

若要了解如何在 Azure 门户中设置定价计划,请参阅 Application Insights 计费

禁用 IP 掩码

默认情况下,Application Insights 不会存储 IP 地址。 若要了解如何禁用 IP 掩码,请参阅 地理位置和 IP 地址处理

创建其他资源

创建可用性测试

若要了解如何在 Azure 门户中创建可用性测试,请参阅 Application Insights 可用性测试

添加指标警报

小窍门

每个 Application Insights 资源都附带了现成可用的指标。 如果不同的组件向同一个 Application Insights 资源报告,那么基于这些指标发出警报可能没有意义。

若要了解如何在 Azure 门户中创建指标警报,请参阅 教程:为 Azure 资源创建指标警报

若要自动创建指标警报,请参阅指标警报模板一文。

创建更多 Application Insights 资源

应该部署多少个 Application Insights 资源?

部署 Web 应用程序的下一个版本时,不希望将新版本和已发布的版本中的 Application Insights 遥测混合使用。

为了避免混淆,请使用单独的连接字符串将来自不同开发阶段的遥测数据发送到单独的 Application Insights 资源。

如果系统是 Azure 云服务的实例,有另一种设置单独连接字符串的方法

何时使用单个 Application Insights 资源

将单个 Application Insights 资源用于:

  • 为部署在一起的应用程序(通常由同一团队开发和管理)简化 DevOps/ITOps 管理。
  • 将响应时间和故障率等关键性能指标集中在一个仪表板中(默认情况下)。 如有必要,按指标资源管理器中的角色名分段。
  • 不需要在应用程序组件之间进行不同的 Azure 基于角色的访问控制管理。
  • 当跨组件有相同的指标警报条件、连续导出和计费/配额管理都足够时。
  • 一个 API 密钥可以平等地访问所有组件的数据且 10 个 API 密钥就能满足所有组件的需求。
  • 可以对所有角色使用相同的智能检测和工作项集成设置时。

注意

如果要整合多个 Application Insights 资源,可以将现有的应用程序组件指向新的、合并的 Application Insights 资源。 存储在旧资源中的遥测数据不会传输到新资源。 仅当新资源中有了足够的遥测数据时才会删除旧资源,这样能保证业务连续性。

其他注意事项

若要激活门户体验,请添加自定义代码以将有意义的值分配给 Cloud_RoleName 属性。 如果没有这些值,门户功能将不起作用。

对于 Azure Service Fabric 应用程序和经典云服务,SDK 通过从 Azure 角色环境读取来自动配置服务。 对于不同类型的应用,通常需要显式地进行设置。

实时指标无法按角色名称拆分数据。

版本和发行版本跟踪

发布应用程序的新版本时,希望能够将遥测数据与不同的版本分开。 可以设置 应用程序版本 属性,以便筛选 搜索指标资源管理器 结果。

可通过多种不同的方法设置“应用程序版本”属性。

  • 选项 1: 直接设置版本

    将行 telemetryClient.Context.Component.Version = typeof(MyProject.MyClass).Assembly.GetName().Version; 添加到应用程序的初始化代码。

    若要确保以一致的方式设置所有 TelemetryClient 实例,请在遥测初始化表达式中将该行换行。

  • 选项 2:BuildInfo.config 中设置版本(仅限于 ASP.NET)

    Application Insights Web 模块从 BuildLabel 节点中选取版本。 在项目中包含此文件,并记得在解决方案资源管理器中设置“始终复制”属性。

    <?xml version="1.0" encoding="utf-8"?>
    <DeploymentEvent xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/VisualStudio/DeploymentEvent/2013/06">
      <ProjectName>AppVersionExpt</ProjectName>
      <Build type="MSBuild">
        <MSBuild>
          <BuildLabel kind="label">1.0.0.2</BuildLabel>
        </MSBuild>
      </Build>
    </DeploymentEvent>
    
    

    在 Microsoft 生成引擎中自动生成 BuildInfo.config。 将以下行添加到 .csproj 文件:

    <PropertyGroup>
      <GenerateBuildInfoConfigFile>true</GenerateBuildInfoConfigFile>
      <IncludeServerNameInBuildInfo>true</IncludeServerNameInBuildInfo>
    </PropertyGroup>
    

    此步骤会生成一个名为 yourProjectName 的文件。 发布过程会将此文件重命名为 BuildInfo.config

    当使用 Visual Studio 生成时,生成标签包含一个占位符 (*AutoGen_...*)。 使用 Microsoft Build 引擎构建时,占位符将填充正确的版本号。

    若要让 Microsoft 生成引擎生成版本号,请在 1.0.* 中设置类似于 AssemblyReference.cs 的版本。

版本注释

如果使用 Azure DevOps,则可以在每次发布新版本时将批注标记添加到图表中。

自动化资源创建过程

可以通过将 Bicep 或 JSON 模板与 Azure 资源管理器配合使用来自动执行资源创建过程。 可以将多个资源打包在一起,以在一个部署中创建它们。 例如,可以使用可用性测试、指标警报和诊断设置创建 Application Insights 资源,以便将遥测数据发送到 Azure 存储帐户。

在 Azure 门户中生成模板

可以从现有资源生成模板。

仅 Application Insights

  1. 转到 Azure 门户中的 Application Insights 资源。
  2. 在左侧导航栏的“自动化”下打开“导出”模板
  3. (可选):若要使用自己的参数,请取消选中 “包括”参数
  4. 下载 模板文件或直接在 Azure 门户中 部署 它。

多个资源

  1. 转到你的 Application Insights 资源的资源组。
  2. 在“ 概述 ”窗格中,标记要包含在模板中的所有资源,然后选择顶部导航栏中的 “导出模板 ”。
  3. (可选):若要使用自己的参数,请取消选中 “包括”参数
  4. 下载 模板文件或直接在 Azure 门户中 部署 它。

从头开始创建模板

若要了解如何从头开始创建 ARM 模板,请访问 ARM 模板文档 ,其中包含用于 创建模板添加资源添加参数等的教程。

可以在我们的 Azure 资源参考文档的“参考”“监视器”“见解”节点下找到 >、可用性测试、>、诊断设置和其他资源的可用属性。

小窍门

还可以使用快速入门模板,可在本部分链接的每个 Azure 资源参考文档页面底部使用。 若要了解如何使用模板,请访问 教程:使用 Azure 快速入门模板

常见问题

本部分提供常见问题的解答。

如何将 Application Insights 资源移动到新区域?

在区域之间传输现有的 Application Insights 资源不受支持,并且你无法将历史数据迁移到新区域。 解决方法包括:

  • 在所需区域中创建新的 Application Insights 资源。
  • 在新资源中重新创建原始资源中的任何唯一自定义项。
  • 使用新区域资源的连接字符串更新应用程序。
  • 进行测试以确保新的 Application Insights 资源一切都按预期运行。
  • 决定保留还是删除原始 Application Insights 资源。 删除经典资源意味着丢失所有历史数据。 如果资源基于工作区,则数据将保留在 Log Analytics 中,从而使用户可以访问历史数据,直到保留期到期。

通常需要在新区域中为资源手动重新创建或更新的唯一自定义项包括但不限于:

  • 重新创建自定义仪表板和工作簿。
  • 重新创建或更新任何自定义日志/指标警报的范围。
  • 重新创建可用性警报。
  • 重新创建用户访问新资源所需的任何 Azure 基于角色的访问控制自定义设置。
  • 复制那些涉及引入采样、数据保留、每日上限和自定义指标启用的设置。 可通过“使用情况和预估成本”窗格控制这些设置。
  • 依赖 API 密钥(例如版本注释实时指标安全控制通道)的任何集成。 你需要生成新的 API 密钥并更新关联的集成。
  • 必须重新配置经典资源中的连续导出。
  • 必须重新配置基于工作区资源中的诊断设置。

能否在 Azure 资源管理器部署中使用 providers('Microsoft.Insights', 'components').apiVersions[0]?

不建议使用此方法来填充 API 版本。 最新版本可以表示预览版本,该版本可能包含重大更改。 即使使用较新的非预览版本,API 版本也并不总是与现有模板向后兼容。 在某些情况下,API 版本可能并不适用于所有订阅。

后续步骤