본문으로 건너뛰기
cccskills
Microsoft 공식무료GitHub에 공개

azure-monitor-opentelemetry-exporter-java

Configure Java applications to send OpenTelemetry traces, metrics, and logs to Azure Monitor. Follow examples for timing operations, recording errors, and adding context, with guidance for replacing the deprecated exporter package with the recommended autoconfigure package.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Azure Monitor OpenTelemetry Exporter for Java. Export OpenTelemetry traces, metrics, and logs to Azure Monitor/Application Insights. Triggers: "AzureMonitorExporter java", "opentelemetry azure java", "application insights java otel", "azure monitor tracing java". Note: This package is DEPRECATED. Migrate to azure-monitor-opentelemetry-autoconfigure.

연동 도구Azure

실행 점수 미검증

설치 방법 보기

이럴 때 유용합니다

  • Connect Java application telemetry to Azure Monitor
  • Trace nested operations and record exceptions
  • Measure request counts and response times
  • Migrate from the deprecated exporter to autoconfigure

포함된 파일(2)

  • SKILL.md8.6 KB
  • references/examples.md5.4 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Azure Monitor OpenTelemetry Exporter for Java

⚠️ DEPRECATION NOTICE: This package is deprecated. Migrate to azure-monitor-opentelemetry-autoconfigure.

See Migration Guide for detailed instructions.

Export OpenTelemetry telemetry data to Azure Monitor / Application Insights.

Installation (Deprecated)

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

Recommended: Use Autoconfigure Instead

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

Environment Variables

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

Basic Setup with Autoconfigure (Recommended)

Using Environment Variable

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();

With Explicit Connection String

AutoConfiguredOpenTelemetrySdkBuilder sdkBuilder = AutoConfiguredOpenTelemetrySdk.builder();
AzureMonitorExporter.customize(sdkBuilder, "{connection-string}");
OpenTelemetry openTelemetry = sdkBuilder.build().getOpenTelemetrySdk();

Creating Spans

import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.Scope;

// Get tracer
Tracer tracer = openTelemetry.getTracer("com.example.myapp");

// Create span
Span span = tracer.spanBuilder("myOperation").startSpan();

try (Scope scope = span.makeCurrent()) {
    // Your application logic
    doWork();
} catch (Throwable t) {
    span.recordException(t);
    throw t;
} finally {
    span.end();
}

Adding Span Attributes

import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.common.Attributes;

Span span = tracer.spanBuilder("processOrder")
    .setAttribute("order.id", "12345")
    .setAttribute("customer.tier", "premium")
    .startSpan();

try (Scope scope = span.makeCurrent()) {
    // Add attributes during execution
    span.setAttribute("items.count", 3);
    span.setAttribute("total.amount", 99.99);
    
    processOrder();
} finally {
    span.end();
}

Custom Span Processor

import io.opentelemetry.sdk.trace.SpanProcessor;
import io.opentelemetry.sdk.trace.ReadWriteSpan;
import io.opentelemetry.sdk.trace.ReadableSpan;
import io.opentelemetry.context.Context;

private static final AttributeKey<String> CUSTOM_ATTR = AttributeKey.stringKey("custom.attribute");

SpanProcessor customProcessor = new SpanProcessor() {
    @Override
    public void onStart(Context context, ReadWriteSpan span) {
        // Add custom attribute to every span
        span.setAttribute(CUSTOM_ATTR, "customValue");
    }

    @Override
    public boolean isStartRequired() {
        return true;
    }

    @Override
    public void onEnd(ReadableSpan span) {
        // Post-processing if needed
    }

    @Override
    public boolean isEndRequired() {
        return false;
    }
};

// Register processor
AutoConfiguredOpenTelemetrySdkBuilder sdkBuilder = AutoConfiguredOpenTelemetrySdk.builder();
AzureMonitorExporter.customize(sdkBuilder);

sdkBuilder.addTracerProviderCustomizer(
    (sdkTracerProviderBuilder, configProperties) -> 
        sdkTracerProviderBuilder.addSpanProcessor(customProcessor)
);

OpenTelemetry openTelemetry = sdkBuilder.build().getOpenTelemetrySdk();

Nested Spans

public void parentOperation() {
    Span parentSpan = tracer.spanBuilder("parentOperation").startSpan();
    try (Scope scope = parentSpan.makeCurrent()) {
        childOperation();
    } finally {
        parentSpan.end();
    }
}

public void childOperation() {
    // Automatically links to parent via Context
    Span childSpan = tracer.spanBuilder("childOperation").startSpan();
    try (Scope scope = childSpan.makeCurrent()) {
        // Child work
    } finally {
        childSpan.end();
    }
}

Recording Exceptions

Span span = tracer.spanBuilder("riskyOperation").startSpan();
try (Scope scope = span.makeCurrent()) {
    performRiskyWork();
} catch (Exception e) {
    span.recordException(e);
    span.setStatus(StatusCode.ERROR, e.getMessage());
    throw e;
} finally {
    span.end();
}

Metrics (via OpenTelemetry)

import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.api.metrics.LongCounter;
import io.opentelemetry.api.metrics.LongHistogram;

Meter meter = openTelemetry.getMeter("com.example.myapp");

// Counter
LongCounter requestCounter = meter.counterBuilder("http.requests")
    .setDescription("Total HTTP requests")
    .setUnit("requests")
    .build();

requestCounter.add(1, Attributes.of(
    AttributeKey.stringKey("http.method"), "GET",
    AttributeKey.longKey("http.status_code"), 200L
));

// Histogram
LongHistogram latencyHistogram = meter.histogramBuilder("http.latency")
    .setDescription("Request latency")
    .setUnit("ms")
    .ofLongs()
    .build();

latencyHistogram.record(150, Attributes.of(
    AttributeKey.stringKey("http.route"), "/api/users"
));

Key Concepts

ConceptDescription
Connection StringApplication Insights connection string with instrumentation key
TracerCreates spans for distributed tracing
SpanRepresents a unit of work with timing and attributes
SpanProcessorIntercepts span lifecycle for customization
ExporterSends telemetry to Azure Monitor

Migration to Autoconfigure

The azure-monitor-opentelemetry-autoconfigure package provides:

  • Automatic instrumentation of common libraries
  • Simplified configuration
  • Better integration with OpenTelemetry SDK

Migration Steps

  1. Replace dependency:

    <!-- Remove -->
    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-monitor-opentelemetry-exporter</artifactId>
    </dependency>
    
    <!-- Add -->
    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-monitor-opentelemetry-autoconfigure</artifactId>
    </dependency>
    
  2. Update initialization code per Migration Guide

Best Practices

  1. Use autoconfigure — Migrate to azure-monitor-opentelemetry-autoconfigure
  2. Set meaningful span names — Use descriptive operation names
  3. Add relevant attributes — Include contextual data for debugging
  4. Handle exceptions — Always record exceptions on spans
  5. Use semantic conventions — Follow OpenTelemetry semantic conventions
  6. End spans in finally — Ensure spans are always ended
  7. Use try-with-resources — Scope management with try-with-resources pattern

Reference Links

ResourceURL
Maven Packagehttps://central.sonatype.com/artifact/com.azure/azure-monitor-opentelemetry-exporter
GitHubhttps://github.com/Azure/azure-sdk-for-java/tree/main/sdk/monitor/azure-monitor-opentelemetry-exporter
Migration Guidehttps://github.com/Azure/azure-sdk-for-java/blob/main/sdk/monitor/azure-monitor-opentelemetry-exporter/MIGRATION.md
Autoconfigure Packagehttps://central.sonatype.com/artifact/com.azure/azure-monitor-opentelemetry-autoconfigure
OpenTelemetry Javahttps://opentelemetry.io/docs/languages/java/
Application Insightshttps://learn.microsoft.com/azure/azure-monitor/app/app-insights-overview

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

agent-framework-azure-ai-py

Microsoft 공식무료

Create Python agents on Azure AI Foundry that retain conversation context and use multiple tools. The skill covers code execution, file and web search, external tool connections, streaming responses, and outputs organized into defined fields.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Build an agent that retains conversation context
  • Combine code execution with file and web search
  • Connect external tools through MCP
microsoft/skills3.1천2026년 10월 24일 업데이트

airunway-aks-setup

Microsoft 공식무료

Set up AI Runway on an existing AKS cluster, from checking cluster health and GPU compatibility to installing model serving software, deploying a first AI model, and verifying that it runs.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Setting up AI Runway on an existing AKS cluster
  • Checking GPU compatibility before deploying a model
  • Choosing and installing model serving software
microsoft/skills3.1천2026년 10월 24일 업데이트

aks-gpu-inference

Microsoft 공식무료

Investigate GPU and KAITO failures in AKS using read-only evidence. Helps distinguish scheduling problems, memory shortages, workspace readiness issues, and scaling failures, then organizes findings with confidence levels and missing evidence.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Investigating GPU pods stuck in Pending
  • Distinguishing container memory shortages from GPU memory failures
  • Investigating a KAITO Workspace that is not ready
microsoft/skills3.1천2026년 10월 24일 업데이트

aks-known-issues

Microsoft 공식무료

Find documented fixes for known AKS errors by matching the exact error message and required conditions. Get an explanation of the cause, a proposed fix, a Microsoft Learn reference, and read-only verification steps.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Look up a documented fix for a specific AKS error
  • Check the cause of a node pool creation failure
  • Review verification steps before changing AKS resources
microsoft/skills3.1천2026년 10월 24일 업데이트

aks-network-capture

Microsoft 공식무료

Collect bounded packet captures from AKS nodes or pods alongside Azure network settings. Use the captured traffic as evidence when investigating where packets are lost, after initial checks that do not change the environment.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Collect packet captures from an AKS node
  • Gather evidence of where packets are lost
  • Retrieve captures alongside Azure network settings
microsoft/skills3.1천2026년 10월 24일 업데이트

aks-troubleshooting

Microsoft 공식무료

Investigate live Azure Kubernetes Service incidents through read-only checks of logs, events, and resource state. Trace workload, node, networking, or upgrade failures and produce an incident report with supporting evidence, confidence, and proposed remediation.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Investigating crashing or Pending pods
  • Tracing DNS, ingress, and connectivity failures
  • Diagnosing node-pool scaling and quota failures
microsoft/skills3.1천2026년 10월 24일 업데이트

microsoft의 스킬 모두 보기

이 스킬의 문제 신고