Skip to content

Commit

Permalink
Change API
Browse files Browse the repository at this point in the history
  • Loading branch information
jeanbisutti committed Sep 16, 2024
1 parent a20d2dd commit 09d829e
Show file tree
Hide file tree
Showing 11 changed files with 289 additions and 248 deletions.
45 changes: 34 additions & 11 deletions sdk/monitor/azure-monitor-opentelemetry-exporter/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,7 @@ The following code shows how to configure the OpenTelemetry SDK auto-configurati
```java readme-sample-autoconfigure
AutoConfiguredOpenTelemetrySdkBuilder sdkBuilder = AutoConfiguredOpenTelemetrySdk.builder();

ExportOptions exportOptions = new ExportOptions().connectionString("{connection-string}");
AzureMonitor.configure(sdkBuilder, exportOptions);
AzureMonitor.configure(sdkBuilder, "{connection-string}");

OpenTelemetry openTelemetry = sdkBuilder.build().getOpenTelemetrySdk();
```
Expand All @@ -50,17 +49,9 @@ The following sections provide code samples using the OpenTelemetry Azure Monito
The following example shows how create a span:

```java readme-sample-create-span



```
The following example demonstrates how to add a span processor to the OpenTelemetry SDK autoconfiguration.

```java readme-sample-span-processor
AutoConfiguredOpenTelemetrySdkBuilder otelSdkBuilder = AutoConfiguredOpenTelemetrySdk.builder();

ExportOptions exportOptions = new ExportOptions().connectionString("{connection-string}");
AzureMonitor.configure(otelSdkBuilder, exportOptions);
AzureMonitor.configure(otelSdkBuilder, "{connection-string}");

OpenTelemetry openTelemetry = otelSdkBuilder.build().getOpenTelemetrySdk();
Tracer tracer = openTelemetry.getTracer("Sample");
Expand All @@ -77,6 +68,38 @@ try (Scope scope = span.makeCurrent()) {
span.end();
}
```
The following example demonstrates how to add a span processor to the OpenTelemetry SDK autoconfiguration.

```java readme-sample-span-processor
AutoConfiguredOpenTelemetrySdkBuilder sdkBuilder = AutoConfiguredOpenTelemetrySdk.builder();

AzureMonitor.configure(sdkBuilder);

SpanProcessor spanProcessor = new SpanProcessor() {
@Override
public void onStart(Context context, ReadWriteSpan span) {
span.setAttribute(AttributeKey.stringKey("random"), RandomStringUtils.random(10));
}

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

@Override
public void onEnd(ReadableSpan readableSpan) {
}

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

sdkBuilder.addTracerProviderCustomizer(
(sdkTracerProviderBuilder, configProperties) -> sdkTracerProviderBuilder
.addSpanProcessor(spanProcessor));
```
More advanced examples with OpenTelemetry APIs:
* [Advanced examples - 1][advanced_examples_1]
* [Advanced examples - 2][advanced_examples_2]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,14 @@

package com.azure.monitor.opentelemetry;

import com.azure.core.annotation.Fluent;
import com.azure.core.credential.TokenCredential;
import com.azure.core.http.HttpClient;
import com.azure.core.http.HttpPipeline;
import com.azure.core.http.policy.HttpLogOptions;
import com.azure.core.http.policy.HttpPipelinePolicy;
import com.azure.core.util.ClientOptions;
import com.azure.monitor.opentelemetry.exporter.AzureMonitorExporterBuilder;
import com.azure.monitor.opentelemetry.exporter.ExportOptions;
import com.azure.monitor.opentelemetry.exporter.implementation.AzureMonitorExporterProviderKeys;
import com.azure.monitor.opentelemetry.exporter.implementation.AzureMonitorLogRecordExporterProvider;
import com.azure.monitor.opentelemetry.exporter.implementation.AzureMonitorMetricExporterProvider;
Expand All @@ -27,19 +33,29 @@ public final class AzureMonitor {
* @param autoConfiguredOpenTelemetrySdkBuilder The OpenTelemetry autoconfiguration to set up.
*/
public static void configure(AutoConfiguredOpenTelemetrySdkBuilder autoConfiguredOpenTelemetrySdkBuilder) {
configure(autoConfiguredOpenTelemetrySdkBuilder, new ExportOptions());
AzureMonitorExporterBuilder azureMonitorExporterBuilder = new AzureMonitorExporterBuilder();
configure(autoConfiguredOpenTelemetrySdkBuilder, azureMonitorExporterBuilder);
}

/**
* Configures an {@link AutoConfiguredOpenTelemetrySdkBuilder} for Azure Monitor based on the options set.
* @param autoConfiguredOpenTelemetrySdkBuilder the {@link AutoConfiguredOpenTelemetrySdkBuilder} object.
* @param exportOptions Export options to Azure Monitor.
* @param autoConfiguredOpenTelemetrySdkBuilder The OpenTelemetry autoconfiguration to set up.
* @param connectionString The connection string to connect to an Applicacation Insights resource.
*/
public static void configure(AutoConfiguredOpenTelemetrySdkBuilder autoConfiguredOpenTelemetrySdkBuilder,
ExportOptions exportOptions) {

AzureMonitorExporterBuilder azureMonitorExporterBuilder = new AzureMonitorExporterBuilder(exportOptions);
String connectionString) {
AzureMonitorExporterBuilder azureMonitorExporterBuilder
= new AzureMonitorExporterBuilder().connectionString(connectionString);
configure(autoConfiguredOpenTelemetrySdkBuilder, azureMonitorExporterBuilder);
}

/**
* Configures an {@link AutoConfiguredOpenTelemetrySdkBuilder} for Azure Monitor based on the options set.
* @param autoConfiguredOpenTelemetrySdkBuilder the {@link AutoConfiguredOpenTelemetrySdkBuilder} object.
* @param azureMonitorExporterBuilder Advanced configuration to send the data to Azure Monitor.
*/
public static void configure(AutoConfiguredOpenTelemetrySdkBuilder autoConfiguredOpenTelemetrySdkBuilder,
AzureMonitorExporterBuilder azureMonitorExporterBuilder) {
autoConfiguredOpenTelemetrySdkBuilder.addPropertiesSupplier(() -> {
Map<String, String> props = new HashMap<>();
props.put("otel.traces.exporter", AzureMonitorExporterProviderKeys.EXPORTER_NAME);
Expand Down
Loading

0 comments on commit 09d829e

Please sign in to comment.