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

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

先决条件

迁移

Screenshot that shows Application Insights overview and connection string.

  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')]"
            }
        }
    ]
}

新功能

连接字符串提供了单个配置设置,无需多个代理设置。

  • 可靠性:连接字符串通过删除全局引入终结点上的依赖项提高遥测引入的可靠性。
  • 自定义终结点(主权或混合云环境):终结点设置支持将数据发送到由世纪互联运营的特定 Microsoft Azure。 (请参阅示例。)
  • 隐私(区域终结点):连接字符串通过将数据发送到区域终结点来解决隐私问题,从而确保数据不会离开某一地理区域。

支持的 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

答案论坛发布问题。