示例:将 OpenTelemetry 与 Azure Monitor 和 Application Insights 配合使用

有许多商业应用程序性能管理(APM)系统可供选择。 在 Azure 中,主要应用程序监视产品是 Application Insights,它是 Azure Monitor 的一部分。 集成 APM 产品的优点之一是它可以关联不同的可观测性数据源。 Application Insights 具有丰富的视图和分析功能。

1.添加 Application Insights 发行版

为了简化 Azure Monitor 的 ASP.NET 体验,提供了包装包(称为 OTel 分析中的发行版),执行了大部分配置 OpenTelemetry 的繁重任务。

此示例基于 OTLP 演练。 按照步骤 1-5 使用 OTLP 导出程序创建应用程序代码。 在此示例中,我们将扩展代码以将数据发送到 Application Insights。

步骤 5 获取相同的项目,并添加以下 NuGet 包:

<ItemGroup>
  <PackageReference Include="Azure.Monitor.OpenTelemetry.AspNetCore" Version="1.3.0-beta.1" />
</ItemGroup>

注意

将版本替换为最新可用版本

2. 设置导出程序

在以下 OTel 初始化代码之前 builder.Build();添加:

if (!string.IsNullOrEmpty(builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"]))
{
    otel.UseAzureMonitor();
}

UseAzureMonitor() 是为 Application Insights 添加通用检测库和导出程序的神奇工具。 只需要将自定义 MeterActivitySource 名称添加到注册中即可。

与 Application Insights 相同的 OTel 初始化适用于 OTLP,区别在于你选择的导出程序。 可以在同一应用程序中同时使用这两者,并通过定义相应的环境变量在它们之间进行选择。

3. 指定连接字符串

如果你还不是 Azure 客户,可以在 https://azure.microsoft.com/free/ 创建免费帐户。 登录 Azure 门户,然后选择现有 Application Insights 资源或使用 https://ms.portal.azure.com/#create/Microsoft.AppInsights 创建新资源。

Application Insights 通过位于门户 UI 右上角的检测密钥和连接字符串来确定要使用哪个实例来存储和处理数据。

Azure 门户中的连接字符串

如果正在使用 Azure 应用服务,则此连接字符串将作为环境变量自动传递给应用程序。 对于其他服务或在本地运行时,需要使用环境变量或在appsettings.json传递它APPLICATIONINSIGHTS_CONNECTION_STRING。 若要在本地运行,最简单的方法是将值添加到 appsettings.development.json

"AzureMonitor": {
    "ConnectionString": "InstrumentationKey=12345678-abcd-abcd-abcd-12345678..."
}

注意

将值替换为实例中的值。

4.在 Application Insights 中检查应用

运行应用程序时,遥测将发送到 Application Insights。 现在,应该获得应用程序的日志、指标和分布式跟踪。 在 Azure 门户中打开 Application Insights 资源。

日志

App Insights 记录视图

度量值

App Insights 指标视图

分布式跟踪

App Insights 事物视图