从 Application Insights 检测密钥迁移到连接字符串

Application Insights 正在从全局引入终结点更改为使用连接字符串的区域终结点,这些连接字符串提供其他功能

受此更改影响最大的方案:

  • 防火墙例外或代理重定向 - 如果需要监视 Intranet Web 服务器,我们的早期解决方案会要求将各个服务终结点添加到配置中。 有关详细信息,请参阅是否可以监视 Intranet Web 服务器?。 连接字符串只需进行单个设置,简化了此工作,因此是一种更好的选择。 简单的前缀后缀修正,允许自动填充所有终结点并将其重定向到正确的服务。

  • 主权云或混合云环境 - 用户可以将数据发送到定义的区域。 使用连接字符串,你可以定义 Intranet 服务器或混合云设置的终结点设置。

本文逐步讲解如何从检测密钥迁移到连接字符串。

先决条件

迁移

屏幕截图显示 Application Insights 概述和连接字符串。

  1. 转到 Application Insights 资源的“概述”窗格。

  2. 找到右侧显示的连接字符串。

  3. 将鼠标指针悬停在连接字符串上,并选择“复制到剪贴板”图标。

  4. 按照如何设置连接字符串来配置 Application Insights SDK。

重要

不要同时使用连接字符串和检测密钥。 检测密钥集将取代连接字符串集,且可能导致遥测未显示在门户中。 请参阅缺少数据

大规模迁移

使用环境变量将连接字符串传递到 Application Insights SDK 或代理。

若要通过环境变量设置连接字符串,请将连接字符串的值放到名为 APPLICATIONINSIGHTS_CONNECTION_STRING 的环境变量中。

可以在 Azure 部署中自动完成此过程。 例如,以下 Azure 资源管理器模板演示如何使用 Azure 应用服务部署自动包含正确的连接字符串。 请务必包含应用所需的任何其他应用设置:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "appServiceName": {
            "type": "string",
            "metadata": {
                "description": "Name of the App Services resource"
            }
        },
        "appServiceLocation": {
            "type": "string",
            "metadata": {
                "description": "Location to deploy the App Services resource"
            }
        },
        "appInsightsName": {
            "type": "string",
            "metadata": {
                "description": "Name of the existing Application Insights resource to use with this App Service. Expected to be in the same Resource Group."
            }
        }
    },
    "resources": [
        {
            "apiVersion": "2016-03-01",
            "name": "[parameters('appServiceName')]",
            "type": "microsoft.web/sites",
            "location": "[parameters('appServiceLocation')]",
            "properties": {
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
                            "value": "[reference(concat('microsoft.insights/components/', parameters('appInsightsName')), '2015-05-01').ConnectionString]"
                        }
                    ]
                },
                "name": "[parameters('appServiceName')]"
            }
        }
    ]
}

支持的 SDK 版本

  • .NET 和 .NET Core v2.12.0+
  • Java v2.5.1 和 Java 3.0+
  • JavaScript v2.3.0+
  • NodeJS v1.5.0+
  • Python v1.0.0+

故障排除

本部分提供故障排除解决方案。

警报:“转换到使用连接字符串来进行数据引入”

请按照本文中的迁移步骤来解决此警报。

缺少数据

  • 确认使用的是支持的 SDK 版本。 如果在其他 Azure 产品/服务中使用 Application Insights 集成,请参阅有关如何正确配置连接字符串的文档。
  • 确认没有同时设置检测密钥和连接字符串。 应从配置中删除检测密钥设置。
  • 确认连接字符串与 Azure 门户中提供的完全一致。

环境变量不正常运作

如果对应用程序代码中的检测密钥进行硬编码,则该编程可能优先于环境变量。

常见问题

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

在哪里可以找到我的连接字符串?

连接字符串也包含在 Application Insights 资源的资源管理器资源属性中的 ConnectionString 字段名称下。

这对自动检测有什么影响?

自动检测方案不受影响。

全局引入和区域引入之间的区别是什么?

全局引入会将所有遥测数据发送到单个终结点,无论这些数据将存储在哪个位置。 通过区域引入,可以为数据引入定义每个区域的特定终结点。 该功能可确保数据在处理和存储期间保持在特定的区域内。

连接字符串对费用有何影响?

费用不受影响。

Microsoft Q&A

答案论坛发布问题。