Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Azure SDK exporter #1653

Merged
merged 52 commits into from
May 7, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
de936a1
Temporarily add to this repo
trask Apr 19, 2021
fc61795
Bump version to not conflict
trask Apr 19, 2021
a3eacc9
Add azure-monitor-opentelemetry-exporter dependency
trask Apr 19, 2021
7daedb2
Remove tests
trask Apr 19, 2021
8fac403
Remove create default telemetry configuration
trask Apr 19, 2021
dcef630
Replace Channel with Rest Client
trask Apr 19, 2021
800fb8c
Remove internal.channel package
trask Apr 20, 2021
f61986a
More
trask Apr 20, 2021
07c7f8b
Update lockfiles
trask Apr 23, 2021
1f2fdc5
Core compiling
trask Apr 24, 2021
cfaffdb
Core tests passing
trask Apr 24, 2021
6944be2
Remove Exporter
trask Apr 24, 2021
ae6b4e7
Unit tests passing (still some ignored tho)
trask Apr 24, 2021
125873e
Remove more
trask Apr 24, 2021
6a671b7
Fix some FIXMEs
trask Apr 24, 2021
08150df
Fix more FIXMEs
trask Apr 24, 2021
bc77fb9
Fix more FIXMEs
trask Apr 24, 2021
69175d3
Bump version to 3.1.0
trask Apr 24, 2021
e53cdac
Some fixes
trask Apr 24, 2021
ce51afe
Not using external exporter for now
trask Apr 24, 2021
82e337b
Need to use BatchSpanProcessor now
trask Apr 24, 2021
a537f46
Need to upstream: fix double slash in track url
trask Apr 24, 2021
529bddb
Need to upstream: remove statusDescription property
trask Apr 24, 2021
0753eea
DO NOT MERGE, TOO VERBOSE
trask Apr 24, 2021
4c11910
Need to upstream: fix formatted duration
trask Apr 24, 2021
45c1cc0
Optimization
trask Apr 24, 2021
df13221
More
trask Apr 25, 2021
5d49601
Update gradle dependencies from compile to impl
trask Apr 25, 2021
e47fec6
Bring back old exporter
trask Apr 25, 2021
40f1ed1
Update old exporter
trask Apr 25, 2021
b98b02d
More
trask Apr 25, 2021
c6d31c5
Temporary? Remove NDJSON from fake ingestion
trask Apr 25, 2021
4ad2bdf
Use external exporter artifact after all
trask Apr 26, 2021
b2469c5
Fix wildfly
trask Apr 26, 2021
7d4aaa6
Fix dependency version and lock files
trask Apr 26, 2021
472f7d8
Fix metric telemetry and more
trask Apr 26, 2021
daffd16
Fix LGTM issue
trask Apr 26, 2021
56d9d15
Rename TelemetryConfiguration to TelemetryClient
trask Apr 26, 2021
62be412
Set time
trask Apr 26, 2021
fbc882c
Remove system.out.println
trask Apr 26, 2021
64ef4e5
Fix metrics
trask Apr 26, 2021
b475843
Fix sporadic failing test
trask Apr 26, 2021
63483c6
Fix tests
trask Apr 27, 2021
9109eb5
Sporadic failing tests
trask Apr 27, 2021
8b5e3cf
Fix test
trask Apr 27, 2021
90fc600
Ignore failing test
trask Apr 27, 2021
f1e5018
Ignore failing test
trask Apr 28, 2021
0f2f217
Merge remote-tracking branch 'origin/master' into trask/azure-sdk-exp…
trask Apr 28, 2021
b7fc56c
Bump submodule to fix build issue (#1658)
trask Apr 28, 2021
0126540
Merge remote-tracking branch 'origin/master' into trask/azure-sdk-exp…
trask Apr 28, 2021
4e98424
Fix ndjson
trask Apr 28, 2021
35d68e2
Revert "Temporary? Remove NDJSON from fake ingestion"
trask Apr 28, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@
<!-- muzzleMatcher logs at WARN level, so by default this is OFF, but enabled when DEBUG logging is enabled -->
<logger name="muzzleMatcher" level="${applicationinsights.logback.level.muzzleMatcher}" />
<logger name="com.microsoft.applicationinsights" level="${applicationinsights.logback.level}" />
<!-- FIXME (trask) revisit -->
<logger name="com.azure.monitor.opentelemetry.exporter" level="${applicationinsights.logback.level}" />
<root level="${applicationinsights.logback.level.other}" />
</included>
5 changes: 5 additions & 0 deletions agent/agent-tooling/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,14 @@ dependencies {
implementation project(":agent:agent-profiler:agent-profiler-api")

implementation project(':agent:exporter')
implementation group: 'com.azure', name: 'azure-monitor-opentelemetry-exporter', version: '1.0.0-beta.4'
implementation group: 'com.azure', name: 'azure-core', version: '1.15.0'

implementation group: 'io.opentelemetry', name: 'opentelemetry-sdk-extension-tracing-incubator', version: versions.opentelemetryAlpha
implementation group: 'io.opentelemetry', name: 'opentelemetry-sdk-extension-autoconfigure', version: versions.opentelemetryAlpha

implementation group: 'org.apache.commons', name: 'commons-text', version: versions.commonsText

compileOnly project(':agent:agent-bootstrap')
compileOnly group: 'io.opentelemetry.instrumentation', name: 'opentelemetry-instrumentation-api', version: versions.opentelemetryInstrumentationAlpha

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,17 @@
# This file is expected to be part of source control.
ch.qos.logback:logback-classic:1.2.3
ch.qos.logback:logback-core:1.2.3
com.azure:azure-core-http-netty:1.9.0
com.azure:azure-core:1.15.0
com.azure:azure-monitor-opentelemetry-exporter:1.0.0-beta.4
com.fasterxml.jackson.core:jackson-annotations:2.12.2
com.fasterxml.jackson.core:jackson-core:2.12.2
com.fasterxml.jackson.core:jackson-databind:2.12.2
com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.12.2
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.2
com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.12.2
com.fasterxml.jackson:jackson-bom:2.12.2
com.fasterxml.woodstox:woodstox-core:6.2.4
com.google.code.findbugs:jsr305:3.0.2
com.google.errorprone:error_prone_annotations:2.5.1
com.google.guava:failureaccess:1.0.1
Expand All @@ -13,6 +24,23 @@ com.squareup.moshi:moshi:1.9.3
com.squareup.okio:okio:1.16.0
commons-codec:commons-codec:1.13
commons-logging:commons-logging:1.2
io.netty:netty-buffer:4.1.59.Final
io.netty:netty-codec-dns:4.1.59.Final
io.netty:netty-codec-http2:4.1.59.Final
io.netty:netty-codec-http:4.1.59.Final
io.netty:netty-codec-socks:4.1.59.Final
io.netty:netty-codec:4.1.59.Final
io.netty:netty-common:4.1.59.Final
io.netty:netty-handler-proxy:4.1.59.Final
io.netty:netty-handler:4.1.59.Final
io.netty:netty-resolver-dns-native-macos:4.1.59.Final
io.netty:netty-resolver-dns:4.1.59.Final
io.netty:netty-resolver:4.1.59.Final
io.netty:netty-tcnative-boringssl-static:2.0.36.Final
io.netty:netty-transport-native-epoll:4.1.59.Final
io.netty:netty-transport-native-kqueue:4.1.59.Final
io.netty:netty-transport-native-unix-common:4.1.59.Final
io.netty:netty-transport:4.1.59.Final
io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-caching:1.0.0+ai.patch.1-alpha
io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:1.0.0+ai.patch.1-alpha
io.opentelemetry.javaagent:opentelemetry-javaagent-spi:1.0.0+ai.patch.1-alpha
Expand All @@ -27,10 +55,19 @@ io.opentelemetry:opentelemetry-sdk-metrics:1.0.0-alpha
io.opentelemetry:opentelemetry-sdk-trace:1.0.0
io.opentelemetry:opentelemetry-sdk:1.0.0
io.opentelemetry:opentelemetry-semconv:1.0.1-alpha
io.projectreactor.netty:reactor-netty-core:1.0.4
io.projectreactor.netty:reactor-netty-http:1.0.4
io.projectreactor.netty:reactor-netty:1.0.4
io.projectreactor:reactor-core:3.4.3
jakarta.activation:jakarta.activation-api:1.2.1
jakarta.xml.bind:jakarta.xml.bind-api:2.3.2
net.bytebuddy:byte-buddy:1.10.18
org.apache.commons:commons-lang3:3.7
org.apache.commons:commons-lang3:3.11
org.apache.commons:commons-text:1.9
org.apache.httpcomponents:httpclient:4.5.13
org.apache.httpcomponents:httpcore:4.4.13
org.checkerframework:checker-qual:3.12.0
org.codehaus.woodstox:stax2-api:4.2.1
org.reactivestreams:reactive-streams:1.0.3
org.slf4j:jcl-over-slf4j:1.7.30
org.slf4j:slf4j-api:1.7.30
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,18 @@
# This file is expected to be part of source control.
ch.qos.logback:logback-classic:1.2.3
ch.qos.logback:logback-core:1.2.3
com.azure:azure-core-http-netty:1.9.0
com.azure:azure-core:1.15.0
com.azure:azure-monitor-opentelemetry-exporter:1.0.0-beta.4
com.blogspot.mydailyjava:weak-lock-free:0.15
com.fasterxml.jackson.core:jackson-annotations:2.12.2
com.fasterxml.jackson.core:jackson-core:2.12.2
com.fasterxml.jackson.core:jackson-databind:2.12.2
com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.12.2
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.2
com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.12.2
com.fasterxml.jackson:jackson-bom:2.12.2
com.fasterxml.woodstox:woodstox-core:6.2.4
com.github.oshi:oshi-core:5.6.0
com.google.auto.service:auto-service-annotations:1.0-rc7
com.google.auto.service:auto-service:1.0-rc7
Expand All @@ -20,6 +31,23 @@ com.squareup.okio:okio:1.16.0
commons-codec:commons-codec:1.13
commons-io:commons-io:2.7
commons-logging:commons-logging:1.2
io.netty:netty-buffer:4.1.59.Final
io.netty:netty-codec-dns:4.1.59.Final
io.netty:netty-codec-http2:4.1.59.Final
io.netty:netty-codec-http:4.1.59.Final
io.netty:netty-codec-socks:4.1.59.Final
io.netty:netty-codec:4.1.59.Final
io.netty:netty-common:4.1.59.Final
io.netty:netty-handler-proxy:4.1.59.Final
io.netty:netty-handler:4.1.59.Final
io.netty:netty-resolver-dns-native-macos:4.1.59.Final
io.netty:netty-resolver-dns:4.1.59.Final
io.netty:netty-resolver:4.1.59.Final
io.netty:netty-tcnative-boringssl-static:2.0.36.Final
io.netty:netty-transport-native-epoll:4.1.59.Final
io.netty:netty-transport-native-kqueue:4.1.59.Final
io.netty:netty-transport-native-unix-common:4.1.59.Final
io.netty:netty-transport:4.1.59.Final
io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-caching:1.0.0+ai.patch.1-alpha
io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:1.0.0+ai.patch.1-alpha
io.opentelemetry.javaagent:opentelemetry-javaagent-api:1.0.0+ai.patch.1-alpha
Expand All @@ -40,9 +68,21 @@ io.opentelemetry:opentelemetry-sdk-metrics:1.0.1-alpha
io.opentelemetry:opentelemetry-sdk-trace:1.0.1
io.opentelemetry:opentelemetry-sdk:1.0.1
io.opentelemetry:opentelemetry-semconv:1.0.1-alpha
io.projectreactor.netty:reactor-netty-core:1.0.4
io.projectreactor.netty:reactor-netty-http-brave:1.0.4
io.projectreactor.netty:reactor-netty-http:1.0.4
io.projectreactor.netty:reactor-netty:1.0.4
io.projectreactor:reactor-core:3.4.3
io.prometheus:simpleclient:0.9.0
io.prometheus:simpleclient_common:0.9.0
io.prometheus:simpleclient_httpserver:0.9.0
io.zipkin.brave:brave-instrumentation-http:5.13.3
io.zipkin.brave:brave:5.13.3
io.zipkin.reporter2:zipkin-reporter-brave:2.16.3
io.zipkin.reporter2:zipkin-reporter:2.16.3
io.zipkin.zipkin2:zipkin:2.23.2
jakarta.activation:jakarta.activation-api:1.2.1
jakarta.xml.bind:jakarta.xml.bind-api:2.3.2
net.bytebuddy:byte-buddy-agent:1.10.18
net.bytebuddy:byte-buddy:1.10.18
net.java.dev.jna:jna-platform:5.7.0
Expand All @@ -52,7 +92,9 @@ org.apache.commons:commons-text:1.9
org.apache.httpcomponents:httpclient:4.5.13
org.apache.httpcomponents:httpcore:4.4.13
org.checkerframework:checker-qual:3.12.0
org.codehaus.woodstox:stax2-api:4.2.1
org.jetbrains.kotlin:kotlin-bom:1.4.21
org.reactivestreams:reactive-streams:1.0.3
org.slf4j:jcl-over-slf4j:1.7.30
org.slf4j:slf4j-api:1.7.30
org.slf4j:slf4j-simple:1.7.30
Original file line number Diff line number Diff line change
Expand Up @@ -21,26 +21,12 @@

package com.microsoft.applicationinsights.agent.internal;

import java.io.File;
import java.lang.instrument.Instrumentation;
import java.util.ArrayList;
import java.util.concurrent.CountDownLatch;

import com.google.common.base.Strings;
import com.microsoft.applicationinsights.TelemetryClient;
import com.microsoft.applicationinsights.TelemetryConfiguration;
import com.microsoft.applicationinsights.agent.bootstrap.BytecodeUtil;
import com.microsoft.applicationinsights.agent.bootstrap.diagnostics.DiagnosticsHelper;
import com.microsoft.applicationinsights.agent.bootstrap.diagnostics.SdkVersionFinder;
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.ApplicationInsightsAppenderClassFileTransformer;
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.BytecodeUtilImpl;
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.DependencyTelemetryClassFileTransformer;
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.HeartBeatModuleClassFileTransformer;
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.PerformanceCounterModuleClassFileTransformer;
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.QuickPulseClassFileTransformer;
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.RequestTelemetryClassFileTransformer;
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.TelemetryClientClassFileTransformer;
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.WebRequestTrackingFilterClassFileTransformer;
import com.microsoft.applicationinsights.agent.internal.instrumentation.sdk.*;
import com.microsoft.applicationinsights.agent.internal.wasbootstrap.MainEntryPoint;
import com.microsoft.applicationinsights.agent.internal.wasbootstrap.configuration.Configuration;
import com.microsoft.applicationinsights.agent.internal.wasbootstrap.configuration.Configuration.JmxMetric;
Expand All @@ -49,15 +35,8 @@
import com.microsoft.applicationinsights.agent.internal.wasbootstrap.configuration.RpConfiguration;
import com.microsoft.applicationinsights.common.CommonUtils;
import com.microsoft.applicationinsights.customExceptions.FriendlyException;
import com.microsoft.applicationinsights.extensibility.initializer.ResourceAttributesContextInitializer;
import com.microsoft.applicationinsights.extensibility.initializer.SdkVersionContextInitializer;
import com.microsoft.applicationinsights.internal.channel.common.LazyHttpClient;
import com.microsoft.applicationinsights.internal.config.AddTypeXmlElement;
import com.microsoft.applicationinsights.internal.config.ApplicationInsightsXmlConfiguration;
import com.microsoft.applicationinsights.internal.config.JmxXmlElement;
import com.microsoft.applicationinsights.internal.config.ParamXmlElement;
import com.microsoft.applicationinsights.internal.config.TelemetryConfigurationFactory;
import com.microsoft.applicationinsights.internal.config.TelemetryModulesXmlElement;
import com.microsoft.applicationinsights.internal.config.*;
import com.microsoft.applicationinsights.internal.profiler.GcEventMonitor;
import com.microsoft.applicationinsights.internal.profiler.ProfilerServiceInitializer;
import com.microsoft.applicationinsights.internal.system.SystemInformation;
Expand All @@ -70,6 +49,11 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.lang.instrument.Instrumentation;
import java.util.ArrayList;
import java.util.concurrent.CountDownLatch;

import static java.util.concurrent.TimeUnit.MINUTES;
import static java.util.concurrent.TimeUnit.SECONDS;

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

TelemetryConfiguration configuration = TelemetryConfiguration.getActiveWithoutInitializingConfig();
TelemetryConfigurationFactory.INSTANCE.initialize(configuration, buildXmlConfiguration(config));
configuration.getContextInitializers().add(new SdkVersionContextInitializer());
configuration.getContextInitializers().add(new ResourceAttributesContextInitializer(config.customDimensions));
TelemetryClient telemetryClient = TelemetryClient.initActive(config.customDimensions, buildXmlConfiguration(config));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we track config.customDimensions as a feature in statsbeat?
I wasn't aware of this config before. if nobody uses it, we can consider removing it?

does telemetry processor enable users to add custom dimensions?


Global.setSamplingPercentage(config.sampling.percentage);
final TelemetryClient telemetryClient = new TelemetryClient();
Global.setTelemetryClient(telemetryClient);

ProfilerServiceInitializer.initialize(
appIdSupplier::get,
SystemInformation.INSTANCE.getProcessId(),
formServiceProfilerConfig(config.preview.profiler),
configuration.getRoleInstance(),
// TODO this will not work with Azure Spring Cloud updating connection string at runtime
configuration.getInstrumentationKey(),
config.role.instance,
telemetryClient,
formApplicationInsightsUserAgent(),
formGcEventMonitorConfiguration(config.preview.gcEvents)
Expand Down Expand Up @@ -198,7 +176,7 @@ public void run() {

RpConfiguration rpConfiguration = MainEntryPoint.getRpConfiguration();
if (rpConfiguration != null) {
RpConfigurationPolling.startPolling(rpConfiguration, config);
RpConfigurationPolling.startPolling(rpConfiguration, config, telemetryClient);
}
}

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

if (config.preview.developerMode) {
xmlConfiguration.getChannel().setDeveloperMode(true);
// FIXME (trask)
// xmlConfiguration.getChannel().setDeveloperMode(true);
}
return xmlConfiguration;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;

import com.microsoft.applicationinsights.TelemetryConfiguration;
import com.microsoft.applicationinsights.TelemetryClient;
import com.microsoft.applicationinsights.internal.channel.common.LazyHttpClient;
import com.microsoft.applicationinsights.internal.util.ExceptionStats;
import com.microsoft.applicationinsights.internal.util.ThreadPoolUtils;
Expand Down Expand Up @@ -67,9 +67,9 @@ public static void startAppIdRetrieval() {
private volatile String appId;

private void internalStartAppIdRetrieval() {
TelemetryConfiguration configuration = TelemetryConfiguration.getActive();
String instrumentationKey = configuration.getInstrumentationKey();
GetAppIdTask newTask = new GetAppIdTask(configuration.getEndpointProvider().getAppIdEndpointURL(instrumentationKey));
TelemetryClient telemetryClient = TelemetryClient.getActive();
String instrumentationKey = telemetryClient.getInstrumentationKey();
GetAppIdTask newTask = new GetAppIdTask(telemetryClient.getEndpointProvider().getAppIdEndpointURL(instrumentationKey));
synchronized (taskLock) {
appId = null;
if (task != null) {
Expand All @@ -82,7 +82,7 @@ private void internalStartAppIdRetrieval() {
}

public String get() {
String instrumentationKey = TelemetryConfiguration.getActive().getInstrumentationKey();
String instrumentationKey = TelemetryClient.getActive().getInstrumentationKey();
if (instrumentationKey == null) {
// this is possible in Azure Function consumption plan prior to "specialization"
return "";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,23 @@ public class Global {
@Nullable
private static volatile TelemetryClient telemetryClient;

private static volatile double samplingPercentage = 100;
private static volatile float samplingPercentage = 100;

// this can be null if agent failed during startup
@Nullable
public static TelemetryClient getTelemetryClient() {
return telemetryClient;
}

public static double getSamplingPercentage() {
public static float getSamplingPercentage() {
return samplingPercentage;
}

public static void setTelemetryClient(TelemetryClient telemetryClient) {
Global.telemetryClient = telemetryClient;
}

public static void setSamplingPercentage(double samplingPercentage) {
public static void setSamplingPercentage(float samplingPercentage) {
Global.samplingPercentage = samplingPercentage;
}
}
Loading