SuperAPI AI 工具集

azure-monitor-opentelemetry-exporter-java

部署与运维

查看项目

更新于 10-16 04:17

技能介绍

用途

Azure Monitor OpenTelemetry Exporter for Java 用于将 OpenTelemetry 的遥测数据(追踪、指标、日志)导出到 Azure Monitor / Application Insights。

⚠️ 弃用提示:该包已被弃用(deprecated),官方建议迁移到 azure-monitor-opentelemetry-autoconfigure,并提供了迁移指南。

主要能力

  • 将 OpenTelemetry 遥测数据导出到 Azure Monitor / Application Insights。
  • 通过连接字符串(Connection String)配置,连接字符串包含 InstrumentationKey 与 IngestionEndpoint。
  • 支持创建 Span、为 Span 添加属性、嵌套 Span、记录异常并设置状态。
  • 支持自定义 SpanProcessor,在 Span 生命周期中拦截并添加自定义属性。
  • 支持通过 OpenTelemetry API 采集指标,包括 Counter 与 Histogram。

使用方式

依赖(已弃用):

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-monitor-opentelemetry-exporter</artifactId>
    <version>1.0.0-beta.x</version>
</dependency>

推荐改用 Autoconfigure:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-monitor-opentelemetry-autoconfigure</artifactId>
    <version>LATEST</version>
</dependency>

环境变量:

APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=xxx;IngestionEndpoint=https://xxx.in.applicationinsights.azure.com/

使用 Autoconfigure 的基础初始化(推荐),可通过环境变量或显式连接字符串:

import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder;
import io.opentelemetry.api.OpenTelemetry;
import com.azure.monitor.opentelemetry.exporter.AzureMonitorExporter;

// Connection string from APPLICATIONINSIGHTS_CONNECTION_STRING env var
AutoConfiguredOpenTelemetrySdkBuilder sdkBuilder = AutoConfiguredOpenTelemetrySdk.builder();
AzureMonitorExporter.customize(sdkBuilder);
OpenTelemetry openTelemetry = sdkBuilder.build().getOpenTelemetrySdk();
AutoConfiguredOpenTelemetrySdkBuilder sdkBuilder = AutoConfiguredOpenTelemetrySdk.builder();
AzureMonitorExporter.customize(sdkBuilder, "{connection-string}");
OpenTelemetry openTelemetry = sdkBuilder.build().getOpenTelemetrySdk();

创建 Span、添加属性、嵌套 Span、记录异常、采集指标等示例代码详见原始资料,涵盖 Tracer、Span、Scope、AttributeKey、SpanProcessor、Meter、LongCounter、LongHistogram 等 API 用法。

关键概念

  • Connection String:Application Insights 连接字符串,包含 instrumentation key。
  • Tracer:为分布式追踪创建 Span。
  • Span:表示一个带时间与属性的工作单元。
  • SpanProcessor:拦截 Span 生命周期以进行自定义。
  • Exporter:将遥测数据发送到 Azure Monitor。

迁移到 Autoconfigure

azure-monitor-opentelemetry-autoconfigure 提供:常见库的自动埋点、简化配置、与 OpenTelemetry SDK 更好的集成。

迁移步骤:替换依赖(移除 azure-monitor-opentelemetry-exporter,添加 azure-monitor-opentelemetry-autoconfigure),并按迁移指南更新初始化代码。

最佳实践

  • 使用 autoconfigure,迁移到 azure-monitor-opentelemetry-autoconfigure。
  • 设置有意义的 Span 名称,使用描述性操作名。
  • 添加相关属性,包含用于调试的上下文数据。
  • 处理异常,始终在 Span 上记录异常。
  • 使用语义约定,遵循 OpenTelemetry 语义约定。
  • 在 finally 中结束 Span,确保 Span 始终被结束。
  • 使用 try-with-resources 管理 Scope。

适用场景

适用于需要将 Java 应用的 OpenTelemetry 追踪、指标、日志导出到 Azure Monitor / Application Insights 的场景。

限制

  • 该包已弃用,应迁移到 azure-monitor-opentelemetry-autoconfigure。
  • 仅在任务明确匹配上述范围时使用。
  • 不应将输出视为环境特定验证、测试或专家评审的替代。
  • 若缺少必要输入、权限、安全边界或成功标准,应停止并请求澄清。

参考链接

  • Maven Package: https://central.sonatype.com/artifact/com.azure/azure-monitor-opentelemetry-exporter
  • GitHub: https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/monitor/azure-monitor-opentelemetry-exporter
  • Migration Guide: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/monitor/azure-monitor-opentelemetry-exporter/MIGRATION.md
  • Autoconfigure Package: https://central.sonatype.com/artifact/com.azure/azure-monitor-opentelemetry-autoconfigure
  • OpenTelemetry Java: https://opentelemetry.io/docs/languages/java/
  • Application Insights: https://learn.microsoft.com/azure/azure-monitor/app/app-insights-overview