Skip to content

Commit 83b96b6

Browse files
authored
Use Azure SDK exporter (#1653)
1 parent 2a76957 commit 83b96b6

File tree

208 files changed

+2339
-17009
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

208 files changed

+2339
-17009
lines changed

agent/agent-bootstrap/src/main/resources/logger-config/common.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,7 @@
99
<!-- muzzleMatcher logs at WARN level, so by default this is OFF, but enabled when DEBUG logging is enabled -->
1010
<logger name="muzzleMatcher" level="${applicationinsights.logback.level.muzzleMatcher}" />
1111
<logger name="com.microsoft.applicationinsights" level="${applicationinsights.logback.level}" />
12+
<!-- FIXME (trask) revisit -->
13+
<logger name="com.azure.monitor.opentelemetry.exporter" level="${applicationinsights.logback.level}" />
1214
<root level="${applicationinsights.logback.level.other}" />
1315
</included>

agent/agent-tooling/build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,14 @@ dependencies {
7272
implementation project(":agent:agent-profiler:agent-profiler-api")
7373

7474
implementation project(':agent:exporter')
75+
implementation group: 'com.azure', name: 'azure-monitor-opentelemetry-exporter', version: '1.0.0-beta.4'
76+
implementation group: 'com.azure', name: 'azure-core', version: '1.15.0'
77+
7578
implementation group: 'io.opentelemetry', name: 'opentelemetry-sdk-extension-tracing-incubator', version: versions.opentelemetryAlpha
7679
implementation group: 'io.opentelemetry', name: 'opentelemetry-sdk-extension-autoconfigure', version: versions.opentelemetryAlpha
7780

81+
implementation group: 'org.apache.commons', name: 'commons-text', version: versions.commonsText
82+
7883
compileOnly project(':agent:agent-bootstrap')
7984
compileOnly group: 'io.opentelemetry.instrumentation', name: 'opentelemetry-instrumentation-api', version: versions.opentelemetryInstrumentationAlpha
8085

agent/agent-tooling/gradle/dependency-locks/compileClasspath.lockfile

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,17 @@
33
# This file is expected to be part of source control.
44
ch.qos.logback:logback-classic:1.2.3
55
ch.qos.logback:logback-core:1.2.3
6+
com.azure:azure-core-http-netty:1.9.0
7+
com.azure:azure-core:1.15.0
8+
com.azure:azure-monitor-opentelemetry-exporter:1.0.0-beta.4
9+
com.fasterxml.jackson.core:jackson-annotations:2.12.2
10+
com.fasterxml.jackson.core:jackson-core:2.12.2
11+
com.fasterxml.jackson.core:jackson-databind:2.12.2
12+
com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.12.2
13+
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.2
14+
com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.12.2
15+
com.fasterxml.jackson:jackson-bom:2.12.2
16+
com.fasterxml.woodstox:woodstox-core:6.2.4
617
com.google.code.findbugs:jsr305:3.0.2
718
com.google.errorprone:error_prone_annotations:2.5.1
819
com.google.guava:failureaccess:1.0.1
@@ -13,6 +24,23 @@ com.squareup.moshi:moshi:1.9.3
1324
com.squareup.okio:okio:1.16.0
1425
commons-codec:commons-codec:1.13
1526
commons-logging:commons-logging:1.2
27+
io.netty:netty-buffer:4.1.59.Final
28+
io.netty:netty-codec-dns:4.1.59.Final
29+
io.netty:netty-codec-http2:4.1.59.Final
30+
io.netty:netty-codec-http:4.1.59.Final
31+
io.netty:netty-codec-socks:4.1.59.Final
32+
io.netty:netty-codec:4.1.59.Final
33+
io.netty:netty-common:4.1.59.Final
34+
io.netty:netty-handler-proxy:4.1.59.Final
35+
io.netty:netty-handler:4.1.59.Final
36+
io.netty:netty-resolver-dns-native-macos:4.1.59.Final
37+
io.netty:netty-resolver-dns:4.1.59.Final
38+
io.netty:netty-resolver:4.1.59.Final
39+
io.netty:netty-tcnative-boringssl-static:2.0.36.Final
40+
io.netty:netty-transport-native-epoll:4.1.59.Final
41+
io.netty:netty-transport-native-kqueue:4.1.59.Final
42+
io.netty:netty-transport-native-unix-common:4.1.59.Final
43+
io.netty:netty-transport:4.1.59.Final
1644
io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-caching:1.0.0+ai.patch.1-alpha
1745
io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:1.0.0+ai.patch.1-alpha
1846
io.opentelemetry.javaagent:opentelemetry-javaagent-spi:1.0.0+ai.patch.1-alpha
@@ -27,10 +55,19 @@ io.opentelemetry:opentelemetry-sdk-metrics:1.0.0-alpha
2755
io.opentelemetry:opentelemetry-sdk-trace:1.0.0
2856
io.opentelemetry:opentelemetry-sdk:1.0.0
2957
io.opentelemetry:opentelemetry-semconv:1.0.1-alpha
58+
io.projectreactor.netty:reactor-netty-core:1.0.4
59+
io.projectreactor.netty:reactor-netty-http:1.0.4
60+
io.projectreactor.netty:reactor-netty:1.0.4
61+
io.projectreactor:reactor-core:3.4.3
62+
jakarta.activation:jakarta.activation-api:1.2.1
63+
jakarta.xml.bind:jakarta.xml.bind-api:2.3.2
3064
net.bytebuddy:byte-buddy:1.10.18
31-
org.apache.commons:commons-lang3:3.7
65+
org.apache.commons:commons-lang3:3.11
66+
org.apache.commons:commons-text:1.9
3267
org.apache.httpcomponents:httpclient:4.5.13
3368
org.apache.httpcomponents:httpcore:4.4.13
3469
org.checkerframework:checker-qual:3.12.0
70+
org.codehaus.woodstox:stax2-api:4.2.1
71+
org.reactivestreams:reactive-streams:1.0.3
3572
org.slf4j:jcl-over-slf4j:1.7.30
3673
org.slf4j:slf4j-api:1.7.30

agent/agent-tooling/gradle/dependency-locks/runtimeClasspath.lockfile

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,18 @@
33
# This file is expected to be part of source control.
44
ch.qos.logback:logback-classic:1.2.3
55
ch.qos.logback:logback-core:1.2.3
6+
com.azure:azure-core-http-netty:1.9.0
7+
com.azure:azure-core:1.15.0
8+
com.azure:azure-monitor-opentelemetry-exporter:1.0.0-beta.4
69
com.blogspot.mydailyjava:weak-lock-free:0.15
10+
com.fasterxml.jackson.core:jackson-annotations:2.12.2
11+
com.fasterxml.jackson.core:jackson-core:2.12.2
12+
com.fasterxml.jackson.core:jackson-databind:2.12.2
13+
com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.12.2
14+
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.2
15+
com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.12.2
16+
com.fasterxml.jackson:jackson-bom:2.12.2
17+
com.fasterxml.woodstox:woodstox-core:6.2.4
718
com.github.oshi:oshi-core:5.6.0
819
com.google.auto.service:auto-service-annotations:1.0-rc7
920
com.google.auto.service:auto-service:1.0-rc7
@@ -20,6 +31,23 @@ com.squareup.okio:okio:1.16.0
2031
commons-codec:commons-codec:1.13
2132
commons-io:commons-io:2.7
2233
commons-logging:commons-logging:1.2
34+
io.netty:netty-buffer:4.1.59.Final
35+
io.netty:netty-codec-dns:4.1.59.Final
36+
io.netty:netty-codec-http2:4.1.59.Final
37+
io.netty:netty-codec-http:4.1.59.Final
38+
io.netty:netty-codec-socks:4.1.59.Final
39+
io.netty:netty-codec:4.1.59.Final
40+
io.netty:netty-common:4.1.59.Final
41+
io.netty:netty-handler-proxy:4.1.59.Final
42+
io.netty:netty-handler:4.1.59.Final
43+
io.netty:netty-resolver-dns-native-macos:4.1.59.Final
44+
io.netty:netty-resolver-dns:4.1.59.Final
45+
io.netty:netty-resolver:4.1.59.Final
46+
io.netty:netty-tcnative-boringssl-static:2.0.36.Final
47+
io.netty:netty-transport-native-epoll:4.1.59.Final
48+
io.netty:netty-transport-native-kqueue:4.1.59.Final
49+
io.netty:netty-transport-native-unix-common:4.1.59.Final
50+
io.netty:netty-transport:4.1.59.Final
2351
io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-caching:1.0.0+ai.patch.1-alpha
2452
io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:1.0.0+ai.patch.1-alpha
2553
io.opentelemetry.javaagent:opentelemetry-javaagent-api:1.0.0+ai.patch.1-alpha
@@ -40,9 +68,21 @@ io.opentelemetry:opentelemetry-sdk-metrics:1.0.1-alpha
4068
io.opentelemetry:opentelemetry-sdk-trace:1.0.1
4169
io.opentelemetry:opentelemetry-sdk:1.0.1
4270
io.opentelemetry:opentelemetry-semconv:1.0.1-alpha
71+
io.projectreactor.netty:reactor-netty-core:1.0.4
72+
io.projectreactor.netty:reactor-netty-http-brave:1.0.4
73+
io.projectreactor.netty:reactor-netty-http:1.0.4
74+
io.projectreactor.netty:reactor-netty:1.0.4
75+
io.projectreactor:reactor-core:3.4.3
4376
io.prometheus:simpleclient:0.9.0
4477
io.prometheus:simpleclient_common:0.9.0
4578
io.prometheus:simpleclient_httpserver:0.9.0
79+
io.zipkin.brave:brave-instrumentation-http:5.13.3
80+
io.zipkin.brave:brave:5.13.3
81+
io.zipkin.reporter2:zipkin-reporter-brave:2.16.3
82+
io.zipkin.reporter2:zipkin-reporter:2.16.3
83+
io.zipkin.zipkin2:zipkin:2.23.2
84+
jakarta.activation:jakarta.activation-api:1.2.1
85+
jakarta.xml.bind:jakarta.xml.bind-api:2.3.2
4686
net.bytebuddy:byte-buddy-agent:1.10.18
4787
net.bytebuddy:byte-buddy:1.10.18
4888
net.java.dev.jna:jna-platform:5.7.0
@@ -52,7 +92,9 @@ org.apache.commons:commons-text:1.9
5292
org.apache.httpcomponents:httpclient:4.5.13
5393
org.apache.httpcomponents:httpcore:4.4.13
5494
org.checkerframework:checker-qual:3.12.0
95+
org.codehaus.woodstox:stax2-api:4.2.1
5596
org.jetbrains.kotlin:kotlin-bom:1.4.21
97+
org.reactivestreams:reactive-streams:1.0.3
5698
org.slf4j:jcl-over-slf4j:1.7.30
5799
org.slf4j:slf4j-api:1.7.30
58100
org.slf4j:slf4j-simple:1.7.30

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/AiComponentInstaller.java

Lines changed: 12 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,12 @@
2121

2222
package com.microsoft.applicationinsights.agent.internal;
2323

24-
import java.io.File;
25-
import java.lang.instrument.Instrumentation;
26-
import java.util.ArrayList;
27-
import java.util.concurrent.CountDownLatch;
28-
2924
import com.google.common.base.Strings;
3025
import com.microsoft.applicationinsights.TelemetryClient;
31-
import com.microsoft.applicationinsights.TelemetryConfiguration;
3226
import com.microsoft.applicationinsights.agent.bootstrap.BytecodeUtil;
3327
import com.microsoft.applicationinsights.agent.bootstrap.diagnostics.DiagnosticsHelper;
3428
import com.microsoft.applicationinsights.agent.bootstrap.diagnostics.SdkVersionFinder;
35-
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.ApplicationInsightsAppenderClassFileTransformer;
36-
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.BytecodeUtilImpl;
37-
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.DependencyTelemetryClassFileTransformer;
38-
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.HeartBeatModuleClassFileTransformer;
39-
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.PerformanceCounterModuleClassFileTransformer;
40-
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.QuickPulseClassFileTransformer;
41-
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.RequestTelemetryClassFileTransformer;
42-
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.TelemetryClientClassFileTransformer;
43-
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.WebRequestTrackingFilterClassFileTransformer;
29+
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.*;
4430
import com.microsoft.applicationinsights.agent.internal.wasbootstrap.MainEntryPoint;
4531
import com.microsoft.applicationinsights.agent.internal.wasbootstrap.configuration.Configuration;
4632
import com.microsoft.applicationinsights.agent.internal.wasbootstrap.configuration.Configuration.JmxMetric;
@@ -49,15 +35,8 @@
4935
import com.microsoft.applicationinsights.agent.internal.wasbootstrap.configuration.RpConfiguration;
5036
import com.microsoft.applicationinsights.common.CommonUtils;
5137
import com.microsoft.applicationinsights.customExceptions.FriendlyException;
52-
import com.microsoft.applicationinsights.extensibility.initializer.ResourceAttributesContextInitializer;
53-
import com.microsoft.applicationinsights.extensibility.initializer.SdkVersionContextInitializer;
5438
import com.microsoft.applicationinsights.internal.channel.common.LazyHttpClient;
55-
import com.microsoft.applicationinsights.internal.config.AddTypeXmlElement;
56-
import com.microsoft.applicationinsights.internal.config.ApplicationInsightsXmlConfiguration;
57-
import com.microsoft.applicationinsights.internal.config.JmxXmlElement;
58-
import com.microsoft.applicationinsights.internal.config.ParamXmlElement;
59-
import com.microsoft.applicationinsights.internal.config.TelemetryConfigurationFactory;
60-
import com.microsoft.applicationinsights.internal.config.TelemetryModulesXmlElement;
39+
import com.microsoft.applicationinsights.internal.config.*;
6140
import com.microsoft.applicationinsights.internal.profiler.GcEventMonitor;
6241
import com.microsoft.applicationinsights.internal.profiler.ProfilerServiceInitializer;
6342
import com.microsoft.applicationinsights.internal.system.SystemInformation;
@@ -70,6 +49,11 @@
7049
import org.slf4j.Logger;
7150
import org.slf4j.LoggerFactory;
7251

52+
import java.io.File;
53+
import java.lang.instrument.Instrumentation;
54+
import java.util.ArrayList;
55+
import java.util.concurrent.CountDownLatch;
56+
7357
import static java.util.concurrent.TimeUnit.MINUTES;
7458
import static java.util.concurrent.TimeUnit.SECONDS;
7559

@@ -152,22 +136,16 @@ private static void start(Instrumentation instrumentation) {
152136
}
153137
AppIdSupplier appIdSupplier = AppIdSupplier.INSTANCE;
154138

155-
TelemetryConfiguration configuration = TelemetryConfiguration.getActiveWithoutInitializingConfig();
156-
TelemetryConfigurationFactory.INSTANCE.initialize(configuration, buildXmlConfiguration(config));
157-
configuration.getContextInitializers().add(new SdkVersionContextInitializer());
158-
configuration.getContextInitializers().add(new ResourceAttributesContextInitializer(config.customDimensions));
139+
TelemetryClient telemetryClient = TelemetryClient.initActive(config.customDimensions, buildXmlConfiguration(config));
159140

160141
Global.setSamplingPercentage(config.sampling.percentage);
161-
final TelemetryClient telemetryClient = new TelemetryClient();
162142
Global.setTelemetryClient(telemetryClient);
163143

164144
ProfilerServiceInitializer.initialize(
165145
appIdSupplier::get,
166146
SystemInformation.INSTANCE.getProcessId(),
167147
formServiceProfilerConfig(config.preview.profiler),
168-
configuration.getRoleInstance(),
169-
// TODO this will not work with Azure Spring Cloud updating connection string at runtime
170-
configuration.getInstrumentationKey(),
148+
config.role.instance,
171149
telemetryClient,
172150
formApplicationInsightsUserAgent(),
173151
formGcEventMonitorConfiguration(config.preview.gcEvents)
@@ -198,7 +176,7 @@ public void run() {
198176

199177
RpConfiguration rpConfiguration = MainEntryPoint.getRpConfiguration();
200178
if (rpConfiguration != null) {
201-
RpConfigurationPolling.startPolling(rpConfiguration, config);
179+
RpConfigurationPolling.startPolling(rpConfiguration, config, telemetryClient);
202180
}
203181
}
204182

@@ -300,7 +278,8 @@ private static ApplicationInsightsXmlConfiguration buildXmlConfiguration(Configu
300278
xmlConfiguration.getQuickPulse().setEnabled(config.preview.liveMetrics.enabled);
301279

302280
if (config.preview.developerMode) {
303-
xmlConfiguration.getChannel().setDeveloperMode(true);
281+
// FIXME (trask)
282+
// xmlConfiguration.getChannel().setDeveloperMode(true);
304283
}
305284
return xmlConfiguration;
306285
}

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/AppIdSupplier.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import java.util.concurrent.Executors;
2727
import java.util.concurrent.ScheduledExecutorService;
2828

29-
import com.microsoft.applicationinsights.TelemetryConfiguration;
29+
import com.microsoft.applicationinsights.TelemetryClient;
3030
import com.microsoft.applicationinsights.internal.channel.common.LazyHttpClient;
3131
import com.microsoft.applicationinsights.internal.util.ExceptionStats;
3232
import com.microsoft.applicationinsights.internal.util.ThreadPoolUtils;
@@ -67,9 +67,9 @@ public static void startAppIdRetrieval() {
6767
private volatile String appId;
6868

6969
private void internalStartAppIdRetrieval() {
70-
TelemetryConfiguration configuration = TelemetryConfiguration.getActive();
71-
String instrumentationKey = configuration.getInstrumentationKey();
72-
GetAppIdTask newTask = new GetAppIdTask(configuration.getEndpointProvider().getAppIdEndpointURL(instrumentationKey));
70+
TelemetryClient telemetryClient = TelemetryClient.getActive();
71+
String instrumentationKey = telemetryClient.getInstrumentationKey();
72+
GetAppIdTask newTask = new GetAppIdTask(telemetryClient.getEndpointProvider().getAppIdEndpointURL(instrumentationKey));
7373
synchronized (taskLock) {
7474
appId = null;
7575
if (task != null) {
@@ -82,7 +82,7 @@ private void internalStartAppIdRetrieval() {
8282
}
8383

8484
public String get() {
85-
String instrumentationKey = TelemetryConfiguration.getActive().getInstrumentationKey();
85+
String instrumentationKey = TelemetryClient.getActive().getInstrumentationKey();
8686
if (instrumentationKey == null) {
8787
// this is possible in Azure Function consumption plan prior to "specialization"
8888
return "";

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/Global.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,23 @@ public class Global {
88
@Nullable
99
private static volatile TelemetryClient telemetryClient;
1010

11-
private static volatile double samplingPercentage = 100;
11+
private static volatile float samplingPercentage = 100;
1212

1313
// this can be null if agent failed during startup
1414
@Nullable
1515
public static TelemetryClient getTelemetryClient() {
1616
return telemetryClient;
1717
}
1818

19-
public static double getSamplingPercentage() {
19+
public static float getSamplingPercentage() {
2020
return samplingPercentage;
2121
}
2222

2323
public static void setTelemetryClient(TelemetryClient telemetryClient) {
2424
Global.telemetryClient = telemetryClient;
2525
}
2626

27-
public static void setSamplingPercentage(double samplingPercentage) {
27+
public static void setSamplingPercentage(float samplingPercentage) {
2828
Global.samplingPercentage = samplingPercentage;
2929
}
3030
}

0 commit comments

Comments
 (0)