自动 OpenTelemetry 数据收集和资源检测器

注释

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

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

本文介绍 Application Insights 中的自动遥测收集和资源检测。 将 Microsoft OpenTelemetry 发行版用于 .NET、Node.js和 Python。 Java继续使用 Azure Monitor OpenTelemetry 发行版及其代理或本机映像集成。 选择您的语言对应的选项卡,以查看捆绑的插桩信息和资源元数据。

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

注释

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

包含的检测库

适用于 .NET、Node.js 和 Python 的 Microsoft OpenTelemetry 发行版以及适用于 Java 的 Azure Monitor OpenTelemetry 发行版捆绑了检测库,以便自动收集数据。 首先,启用 OpenTelemetry 并选择Azure Monitor作为导出目标。 不要为同一信号初始化第二个 distro 或重复的提供程序。

请求

依赖

日志记录

  • ILogger

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

脚注

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

注释

Microsoft OpenTelemetry 发行版各版本的 Azure Monitor 集成和 Azure Monitor OpenTelemetry for Java 包括用于发出 Application Insights 标准指标 的映射和逻辑。 出于计费目的,所有 OpenTelemetry 指标(无论是从检测库自动收集还是从自定义编码中手动收集)当前都被视为 Application Insights 自定义指标。 了解详细信息。

小窍门

若要减少或增加发送到Azure Monitor的日志数,请配置日志记录以设置适当的日志级别或应用筛选器。 例如,可以选择仅将 WARNING 和 ERROR 日志发送到Azure Monitor。

资源检测器

资源检测器标识生成遥测的服务和主机。 它们读取环境变量或主机元数据,并填充 OpenTelemetry 资源属性 ,例如 service.name, service.instance.id和 cloud.resource_id。

哪些资源检测器提供支持

Application Insights 使用资源属性为你的遥测数据提供上下文:

  • 服务和实例标识: 服务属性有助于设置 Application Map 中显示的云角色名称和云角色实例。 使用稳定的服务名称,以便同一服务的实例不显示为单独的组件。 有关显式配置,请参阅 设置云角色名称和云角色实例。
  • 计算关联:属性(例如 cloud.resource_id)用于标识托管应用程序的 Azure 资源。 缺少资源元数据会导致 Application Insights 无法将应用程序遥测链接到其 Azure 计算资源。
  • 环境上下文: 主机、操作系统、区域和服务版本属性描述应用程序在何处运行。 可用属性取决于检测器和托管环境。

资源属性描述服务或进程。 Span 属性描述单个操作。 资源检测不会替换连接请求和依赖项的跟踪上下文传播。

支持的环境

检测器可用性及其收集的属性因语言、包版本和托管集成而异。 使用注册代码查看发行版启用的检测器,以及实现以查看它们读取的环境值。 在检查特定版本时,选择与已安装的包匹配的存储库标记。

语言或集成 检测器注册和实现
ASP.NET Core和.NET Microsoft OpenTelemetry 检测器注册和Azure检测器实现。
Node.js Microsoft OpenTelemetry 资源配置和Azure检测器实现。
Python Microsoft OpenTelemetry 检测器选择和Azure检测器实现。
Java 代理 Application Insights Java资源提供程序配置。
Java本地代码 Spring Boot 集成 和 Quarkus Azure 导出器。 检测器配置取决于框架。

对于Azure Functions,请按照 Azure Functions OpenTelemetry 指南进行操作。 有关基于收集器的 Kubernetes 增强,请参阅 Kubernetes 属性处理器。

资源元数据指标

Azure Monitor 导出程序可以在名为 _OTELRESOURCE_ 的特殊指标中发送资源属性。 指标的属性携带元数据;其数值不是应用程序性能的度量值。 此单独的元数据记录提供资源上下文,而无需将每个资源属性添加到每个遥测项。

有关发出的名称和属性,请参阅.NET、 Node.js、Python和Java的导出程序实现。

注释

早期的 Java 代理版本使用了_APPRESOURCEPREVIEW_;3.5.3 版本删除了该指标。 此处链接的导出程序实现使用 _OTELRESOURCE_。 在查询或筛选器中依赖资源指标名称之前,请检查导出程序版本。

关闭资源元数据导出

除非有特定要求禁止导出资源元数据,否则请保持资源元数据导出功能处于启用状态。 禁用它可能会导致故障排除期间使用的计算资源上下文丢失。 若要控制遥测量,请改用 采样 或 遥测筛选器 。

若要停止导出资源元数据指标,请在应用程序启动前设置适用的环境变量,然后重启应用程序:

语言 环境变量 Value
ASP.NET Core和.NET OTEL_DOTNET_AZURE_MONITOR_ENABLE_RESOURCE_METRICS false
Node.js APPLICATIONINSIGHTS_OPENTELEMETRY_RESOURCE_METRIC_DISABLED true
Python APPLICATIONINSIGHTS_OPENTELEMETRY_RESOURCE_METRIC_DISABLED true

这些设置控制资源指标导出,而不是检测器执行或所有应用程序指标的集合。 资源属性仍可用于填充其他遥测上的云角色字段。 删除环境变量并重启应用程序以还原默认导出行为。

此表中的设置不适用于Java。 链接的 Java 导出器不提供等效的仅元数据退出选项;不要禁用所有遥测或删除服务属性来抑制此指标。

OTLP 引入注意事项

使用原生 OTLP 摄取时,请保留 OTLP 资源上的资源属性。 上一部分中的Azure Monitor导出程序设置不控制 OTLP 导出程序。 诸如service.name和cloud.resource_id之类的属性仍可标识该服务及其 Azure 主机。

故障排除、反馈和支持

小窍门

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

故障排除

OpenTelemetry 反馈

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

支持

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

后续步骤