共用方式為

为 Azure Monitor OpenTelemetry 配置自动数据收集和资源检测器

本文介绍如何Azure Monitor OpenTelemetry 自动收集遥测数据、如何添加社区检测库以及如何配置资源检测器以使用一致的元数据丰富该遥测数据。 你了解默认收集哪些信号,以及资源检测器如何填充服务标识和环境详细信息等属性,以便 Application Insights 数据更易于跨.NET、Java、Node.js和Python应用程序进行筛选、关联和故障排除。

本文提供有关在 Azure Monitor Application Insights 中集成和自定义 OpenTelemetry(OTel)检测的说明

若要了解有关 OpenTelemetry 概念的详细信息,请参阅 OpenTelemetry 概述

注释

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

自动数据收集

Azure Monitor发行版通过捆绑 OpenTelemetry 检测库自动收集数据。

包含的检测库

请求

依赖

日志记录

  • ILogger

若要减少或增加发送到Azure Monitor的日志数,请配置日志记录以设置适当的日志级别或应用筛选器。 例如,可以选择仅将 WarningError 日志发送到 OpenTelemetry/Azure Monitor。 OpenTelemetry 不负责控制日志路由或筛选——这些决策由您的 ILogger 配置来决定。 有关配置 ILogger的详细信息,请参阅 “配置日志记录”。

有关 ILogger 的详细信息,请参阅 C# 和 .NET 中的记录代码示例

脚注

  • ¹:支持未经处理的/未捕获的异常的自动报告
  • ²:支持 OpenTelemetry 指标

注释

Azure Monitor OpenTelemetry 发行版包括自定义映射和逻辑,用于自动发出 Application Insights 标准指标

小窍门

所有 OpenTelemetry 指标,无论是从仪器化库自动收集的还是从手动编码中收集的,现在都被认为是用于计费目的的 Application Insights“自定义指标”。 了解详细信息

添加社区工具库

当您使用 OpenTelemetry 社区的工具库时,可以自动收集更多数据。

注意

我们不支持也不保证社区检测库的质量。 要为我们的发行版推荐一个,请在反馈社区中发帖或投票。 请注意,某些检测基于实验性的 OpenTelemetry 规范,未来可能会引入中断性变更。

若要添加社区库,请在为库添加 NuGet 包后使用 ConfigureOpenTelemetryMeterProviderConfigureOpenTelemetryTracerProvider 方法。

以下示例演示如何添加 运行时检测 以收集额外的指标:

dotnet add package OpenTelemetry.Instrumentation.Runtime 
// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the OpenTelemetry meter provider to add runtime instrumentation.
builder.Services.ConfigureOpenTelemetryMeterProvider((sp, builder) => builder.AddRuntimeInstrumentation());

// Add the Azure Monitor telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the ASP.NET Core web application.
var app = builder.Build();

// Start the ASP.NET Core web application.
app.Run();

资源检测器

资源检测器在启动时发现环境元数据,并填充 OpenTelemetry 资源属性 ,例如 service.namecloud.providercloud.resource_id。 此元数据为 Application Insights 中的体验提供支持,例如应用程序映射和计算链接,并改进了跟踪、指标和日志之间的关联。

小窍门

资源属性描述过程及其环境。 Span 属性描述单个操作。 将资源属性用于应用级属性,例如 service.name

支持的环境

环境 检测的工作原理 备注
Azure App 服务 语言 SDK 或 Azure Monitor 分发版读取已知的应用服务环境变量和主机元数据 使用本文中的指南时,请与.NET、Java、Node.js和Python配合使用。
Azure Functions 请参阅 Azure Functions OpenTelemetry 操作说明 所有Azure Functions相关的指导都在那里。
Azure 虚拟机 语言 SDK 或分发版会查询 Azure 实例元数据服务 确保 VM 能够访问实例元数据服务终结点。
Azure Kubernetes Service (AKS) 使用 OpenTelemetry 收集器 k8sattributes 处理器来添加 Kubernetes 元数据 建议用于 AKS 中运行的所有语言。
Azure 容器应用 检测器在可用时映射环境变量和资源标识符 您还可以设置OTEL_RESOURCE_ATTRIBUTES以填补空白。

手动和自动仪器

  • 在受支持的Azure环境中运行时,自动化仪表和Azure Monitor分发版可以启用资源检测。

  • 对于手动设置,请使用标准 OpenTelemetry 选项直接设置资源属性:

    # Applies to .NET (ASP.NET/ASP.NET Core), Java, Node.js, and Python
    export OTEL_SERVICE_NAME="my-service"
    export OTEL_RESOURCE_ATTRIBUTES="cloud.provider=azure,cloud.region=chinanorth,cloud.resource_id=/subscriptions/<SUB>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<APP>"
    

    在 Windows PowerShell 上:

    $Env:OTEL_SERVICE_NAME="my-service"
    $Env:OTEL_RESOURCE_ATTRIBUTES="cloud.provider=azure,cloud.region=chinanorth,cloud.resource_id=/subscriptions/<SUB>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<APP>"
    

OTLP 引入注意事项

  • cloud.resource_id改进了与Azure资源的计算链接。 如果缺少此属性,某些体验可能不会显示生成数据的Azure资源。

  • Application Insights 使用 service.name 来派生云角色名称。 选择每个服务的稳定名称以避免应用程序映射中的碎片节点。

  • cloud.resource_id改进了与Azure资源的计算链接。 如果缺少此属性,某些体验可能不会显示生成数据的Azure资源。

故障排除、反馈和支持

小窍门

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

故障排除

OpenTelemetry 反馈

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

支持

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

后续步骤