连接字符串

概述

连接字符串为 Application Insight 用户提供了单个配置设置,无需多个代理设置。 对于希望向监视服务发送数据的 Intranet Web 服务器、主权云或混合云环境非常有用。

键值对为用户提供了一种简单的方式来为每个 Application Insights (AI) 服务/产品定义前缀后缀组合。

重要

建议不要同时设置连接字符串和检测密钥。 如果用户同时设置了这两个值,则以最后设置的值为准。

提示

建议对检测密钥使用连接字符串。

方案概述

我们在其中将影响最大的此项设置可视化的客户方案:

  • 防火墙例外或代理重定向

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

  • 主权云或混合云环境

    用户可以将数据发送到已定义的 Azure 中国区。 使用连接字符串可以定义 Intranet 服务器或混合云设置的终结点设置。

入门

如何查找我的连接字符串?

连接字符串显示在 Application Insights 资源的“概览”边栏选项卡上。

“概览”边栏选项卡上的连接字符串

架构

最大长度

连接的最大支持长度为 4096 个字符。

键值对

连接字符串由以分号分隔的键/值对表示的设置列表组成:key1=value1;key2=value2;key3=value3

语法

  • InstrumentationKey(例如:00000000-0000-0000-0000-000000000000)连接字符串是必填字段。
  • Authorization(例如:ikey)(此设置为可选,因为目前我们仅支持 ikey 授权。)
  • EndpointSuffix(例如:applicationinsights.azure.cn)设置终结点后缀将指示 SDK 连接到哪个 Azure 云。 SDK 将为各个服务组装终结点的其余部分。
  • 显式终结点。 任何服务均可在连接字符串中显式重写。
    • IngestionEndpoint(例如:https://dc.applicationinsights.azure.cn
    • LiveEndpoint(例如:https://live.applicationinsights.azure.cn
    • ProfilerEndpoint(例如:https://profiler.monitor.azure.cn
    • SnapshotEndpoint(例如:https://snapshot.monitor.azure.cn

终结点架构

<prefix>.<suffix>

  • 前缀:定义某个服务。
  • 后缀:定义公共域名。
有效后缀

下面是有效后缀的列表

  • applicationinsights.azure.cn
  • applicationinsights.us

另请参阅:需要修改终结点的区域

有效的前缀

连接字符串示例

最小有效连接字符串

InstrumentationKey=00000000-0000-0000-0000-000000000000;

在此示例中,仅设置了检测密钥。

  • 授权方案默认为“ikey”
  • 检测密钥:00000000-0000-0000-0000-000000000000
  • 区域服务 URI 基于 SDK 默认值,并将连接到公共全局 Azure:
    • 引入:https://dc.services.visualstudio.com/
    • 实时指标:https://rt.services.visualstudio.com/
    • 探查器:https://profiler.monitor.azure.com/
    • 调试程序:https://snapshot.monitor.azure.com/

Azure 中国中带终结点后缀的连接字符串

InstrumentationKey=00000000-0000-0000-0000-000000000000;EndpointSuffix=applicationinsights.azure.cn;

在此示例中,此连接字符串指定 Azure 中国中的终结点后缀,SDK 会构造服务终结点。

  • 授权方案默认为“ikey”
  • 检测密钥:00000000-0000-0000-0000-000000000000
  • 区域服务 URI 基于所提供的终结点后缀:
    • 引入:https://dc.applicationinsights.azure.cn
    • 实时指标:https://live.applicationinsights.azure.cn
    • 探查器:https://profiler.applicationinsights.azure.cn
    • 调试程序:https://snapshot.applicationinsights.azure.cn

带有显式终结点重写的连接字符串

InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://custom.com:111/;LiveEndpoint=https://custom.com:222/;ProfilerEndpoint=https://custom.com:333/;SnapshotEndpoint=https://custom.com:444/;

在此示例中,此连接字符串指定每个服务的显式重写。 SDK 将使用所提供的确切终结点而不进行修改。

  • 授权方案默认为“ikey”
  • 检测密钥:00000000-0000-0000-0000-000000000000
  • 区域服务 URI 基于显式重写值:
    • 引入:https://custom.com:111/
    • 实时指标:https://custom.com:222/
    • 探查器:https://custom.com:333/
    • 调试程序:https://custom.com:444/

如何设置连接字符串

以下 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

可以通过代码、环境变量或配置文件设置连接字符串。

环境变量

  • 连接字符串: APPLICATIONINSIGHTS_CONNECTION_STRING

代码示例

设置属性 TelemetryConfiguration.ConnectionStringApplicationInsightsServiceOptions.ConnectionString

.NET 显式设置:

var configuration = new TelemetryConfiguration
{
    ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;EndpointSuffix=applicationinsights.azure.cn;"
};

.NET 配置文件:

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
    <ConnectionString>InstrumentationKey=00000000-0000-0000-0000-000000000000;EndpointSuffix=applicationinsights.azure.cn;</ConnectionString>
</ApplicationInsights>

NetCore 显式设置:

public void ConfigureServices(IServiceCollection services)
{
    var options = new ApplicationInsightsServiceOptions { ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;EndpointSuffix=applicationinsights.azure.cn;" };
    services.AddApplicationInsightsTelemetry(options: options);
}

NetCore config.json:

{
  "ApplicationInsights": {
    "ConnectionString" : "InstrumentationKey=00000000-0000-0000-0000-000000000000;EndpointSuffix=applicationinsights.azure.cn;"
    }
  }

后续步骤

在运行时开始使用:

在开发时开始使用: