为 .NET、Node.js、Python 和 Java 应用程序启用 OpenTelemetry

注意

对于.NET、Node.js和Python应用程序:

对于Java应用程序,请使用 Azure Monitor OpenTelemetry 发行版。

本指南介绍如何使用 Microsoft OpenTelemetry 发行版向应用程序添加可观测性。 发行版会自动收集包含内置工具的跟踪、指标和日志,并将遥测数据导出到 Azure Monitor、任何 OpenTelemetry 协议(OTLP)终结点或 Microsoft 代理 365。

有关其他集合和导出选项,请参阅带Azure Monitor的 OpenTelemetry。

OpenTelemetry 发布状态

有关包详细信息和发行说明,请参阅 后续步骤。

注意

有关 Azure 函数应用的信息,请参阅 在 Azure Functions 中使用 OpenTelemetry。

使用 Application Insights 启用 OpenTelemetry

按照本部分的步骤为您的应用程序集成 OpenTelemetry 工具。 选择一个用于特定语言说明的选项卡。

Microsoft OpenTelemetry 发行版包标识符和安装命令包括:

语言 Package 安装命令
Python microsoft-opentelemetry pip install microsoft-opentelemetry
Node.js @microsoft/opentelemetry npm install @microsoft/opentelemetry
.NET Microsoft.OpenTelemetry dotnet add package Microsoft.OpenTelemetry

对于Java,请使用Java和Java本机选项卡中所述的代理或本机映像集成。

对于 Web 应用程序,使用“ASP.NET Core”选项卡;对于控制台和其他非托管应用程序,使用“.NET”选项卡。

先决条件

  • ASP.NET Core Application 使用正式支持的 .NET

提示

如果要从 Application Insights .NET SDK 2.x 升级,请按照 SDK 3.x 迁移指南进行操作。 该升级不需要切换到 Microsoft OpenTelemetry 发行版。

安装客户端库

注意

这些安装步骤适用于使用 Microsoft OpenTelemetry 发行版的应用程序。 它们不是现有 Azure Monitor OpenTelemetry 发行版用户的升级要求。 不要在同一应用程序中初始化这两个发行版。 独立Azure Monitor导出包保留其现有名称。

安装 Microsoft.OpenTelemetry NuGet 包:

dotnet add package Microsoft.OpenTelemetry

修改你的应用程序

在应用程序开始处理工作之前初始化 Microsoft OpenTelemetry 发行版。 以下示例选择 Azure Monitor 作为目标,并从 APPLICATIONINSIGHTS_CONNECTION_STRING 环境变量中读取 连接字符串。 在启动应用程序之前设置该变量,如本文稍后所述。

还可以在代码中设置连接字符串。 对于 .NET,请在 UseMicrosoftOpenTelemetry() 内部使用 options.AzureMonitor.ConnectionString。 有关所有支持的语言,请参阅 连接字符串配置。

在Program.cs中,将应用程序生成器配置为使用 Microsoft OpenTelemetry 发行版:

// Import the distro API.
using Microsoft.OpenTelemetry;

// Create the application builder.
var builder = WebApplication.CreateBuilder(args);

// Initialize the Microsoft OpenTelemetry Distro with Azure Monitor export.
builder.UseMicrosoftOpenTelemetry(options =>
{
    options.Exporters = ExportTarget.AzureMonitor;
});

// Build and run the application.
var app = builder.Build();
app.Run();

从 Application Insights 资源中复制 连接字符串

连接字符串标识接收遥测数据的 Application Insights 资源。

提示

如果你没有 Application Insights 资源,可按照该指南创建一个资源。 建议创建一个新资源,而不是使用现有资源。

复制连接字符串:

  1. 转到 Application Insights 资源的“概述”窗格。
  2. 查找“连接字符串”。
  3. 将鼠标悬停在连接字符串上,然后选择Copy 到剪贴板图标。

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

将连接字符串粘贴到您的环境中

若要粘贴连接字符串,请使用以下方法之一:

方法 支持的语言 建议用于
环境变量 全部 生产
配置文件 (applicationinsights.json) 仅限 Java 生产环境(Java)
Code .NET、Node.js、Python 仅限本地开发/测试

重要

建议仅在本地开发和测试环境下通过代码设置连接字符串。

对于生产环境,请使用环境变量或配置文件(仅Java)。

  • 将 Application Insights 连接字符串作为环境变量(建议用于生产)

    在 Bash 中:

    export APPLICATIONINSIGHTS_CONNECTION_STRING="<ConnectionString>"
    

    在 PowerShell 中:

    $env:APPLICATIONINSIGHTS_CONNECTION_STRING = "<ConnectionString>"
    
  • 在配置文件中设置 Application Insights 连接字符串 - 仅适用于 Java

    创建包含以下内容的、名为 applicationinsights.json 的配置文件,并将其置于 applicationinsights-agent-3.7.9.jar 所在的同一目录:

        {
            "connectionString": "<ConnectionString>"
        }
    
  • - 仅限 .NET、Node.js 和 Python

    有关 Microsoft OpenTelemetry 发行版选项,请参阅.NET、 Node.js或Python文档。

确认有数据流

配置发行版并设置连接字符串后,运行应用程序并生成流量或日志消息。 在 Azure 门户中打开 Application Insights 资源,验证是否显示遥测数据。 数据可能在数分钟后才会显示。

“Application Insights 概述”选项卡的屏幕截图,其中突出显示服务器请求和服务器响应时间。

现已为你的应用程序启用了 Application Insights。 以下步骤是可选的,并允许进一步自定义。

注意

作为使用 Application Insights 检测的一部分,我们将收集诊断数据并将其发送到Microsoft。 这些数据可帮助我们运行和改进 Application Insights。 在 Application Insights 常见问题解答中了解详细信息。

重要

如果有两个或更多服务向同一 Application Insights 资源发出遥测数据,则需要设置云角色名称以在应用程序映射中正确表示这些服务。

故障排除、反馈和支持

提示

以下部分适用于所有 OpenTelemetry 发行版文章。

故障排除

OpenTelemetry 反馈

若要提供反馈,请查看以下内容:

支持

选择所选语言的选项卡,以发现支持选项。

后续步骤