Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: heyams <heya@microsoft.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Helen <56097766+heyams@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
Trask Stalnaker 2024-02-16 16:34:02 -08:00 коммит произвёл GitHub
Родитель bb6c9d3e71
Коммит c1fa18b58d
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
72 изменённых файлов: 1165 добавлений и 377 удалений

Просмотреть файл

@ -8,5 +8,5 @@ dependencies {
// TODO (heya) remove this when updating to upstream micrometer instrumentation
compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api")
compileOnly("io.opentelemetry:opentelemetry-semconv")
compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-semconv")
compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-incubator")
}

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -6,10 +6,10 @@ com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.errorprone:error_prone_annotations:2.24.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.slf4j:slf4j-api:2.0.12=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath

Просмотреть файл

@ -6,10 +6,10 @@ com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.errorprone:error_prone_annotations:2.24.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.slf4j:slf4j-api:2.0.12=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.slf4j:slf4j-api:2.0.12=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -21,7 +21,7 @@ dependencies {
implementation(project(":agent:agent-profiler:agent-diagnostics"))
implementation(project(":etw:java"))
implementation("com.azure:azure-monitor-opentelemetry-exporter:1.0.0-beta.15")
implementation("com.azure:azure-monitor-opentelemetry-exporter:1.0.0-beta.17")
compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-bootstrap")
compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling")
compileOnly("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-servlet-common-bootstrap")
@ -66,7 +66,7 @@ dependencies {
compileOnly(project(":agent:agent-bootstrap"))
compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api")
compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-semconv")
compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-incubator")
compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations-support")
compileOnly("com.google.auto.value:auto-value-annotations")
@ -74,7 +74,7 @@ dependencies {
testImplementation(project(":agent:agent-bootstrap"))
testImplementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api")
testImplementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-semconv")
testImplementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-incubator")
testImplementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations-support")
testImplementation("org.junit.jupiter:junit-jupiter")

Просмотреть файл

@ -9,7 +9,7 @@ com.azure:azure-core-http-netty:1.13.11=runtimeClasspath
com.azure:azure-core:1.45.1=runtimeClasspath
com.azure:azure-identity:1.11.2=runtimeClasspath
com.azure:azure-json:1.1.0=runtimeClasspath
com.azure:azure-monitor-opentelemetry-exporter:1.0.0-beta.15=runtimeClasspath
com.azure:azure-monitor-opentelemetry-exporter:1.0.0-beta.17=runtimeClasspath
com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.azure:azure-storage-blob:12.25.1=runtimeClasspath
com.azure:azure-storage-common:12.24.1=runtimeClasspath
@ -22,9 +22,7 @@ com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.16.1=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.fasterxml.woodstox:woodstox-core:6.5.1=runtimeClasspath
com.github.oshi:oshi-core:6.4.12=runtimeClasspath
com.github.spotbugs:spotbugs-annotations:4.8.3=runtimeClasspath
com.github.stephenc.jcip:jcip-annotations:1.0-1=runtimeClasspath
com.google.code.findbugs:jsr305:3.0.2=runtimeClasspath
com.google.errorprone:error_prone_annotations:2.24.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
com.microsoft.azure:msal4j-persistence-extension:1.2.0=runtimeClasspath
@ -57,21 +55,21 @@ io.netty:netty-transport-native-epoll:4.1.107.Final=runtimeClasspath
io.netty:netty-transport-native-kqueue:4.1.107.Final=runtimeClasspath
io.netty:netty-transport-native-unix-common:4.1.107.Final=runtimeClasspath
io.netty:netty-transport:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-api-events:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-api:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-context:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-extension-incubator:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-sdk-common:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-sdk-logs:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-sdk-metrics:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-sdk-trace:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-sdk:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-api-events:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-api:1.35.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
io.opentelemetry:opentelemetry-context:1.35.0=runtimeClasspath
io.opentelemetry:opentelemetry-extension-incubator:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-sdk-common:1.35.0=runtimeClasspath
io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.35.0=runtimeClasspath
io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.35.0=runtimeClasspath
io.opentelemetry:opentelemetry-sdk-logs:1.35.0=runtimeClasspath
io.opentelemetry:opentelemetry-sdk-metrics:1.35.0=runtimeClasspath
io.opentelemetry:opentelemetry-sdk-trace:1.35.0=runtimeClasspath
io.opentelemetry:opentelemetry-sdk:1.35.0=runtimeClasspath
io.projectreactor.netty:reactor-netty-core:1.1.15=runtimeClasspath
io.projectreactor.netty:reactor-netty-http:1.1.15=runtimeClasspath
io.projectreactor:reactor-core:3.5.14=runtimeClasspath

Просмотреть файл

@ -1259,10 +1259,10 @@ public class Configuration {
}
public static class ProcessorAction {
@Nullable public final AttributeKey<String> key;
@Nullable public AttributeKey<String> key;
public final ProcessorActionType action;
public final String value;
@Nullable public final AttributeKey<String> fromAttribute;
@Nullable public AttributeKey<String> fromAttribute;
@Nullable public final ExtractAttribute extractAttribute;
@Nullable public final MaskAttribute maskAttribute;

Просмотреть файл

@ -3,6 +3,7 @@
package com.microsoft.applicationinsights.agent.internal.configuration;
import com.azure.monitor.opentelemetry.exporter.implementation.SemanticAttributes;
import com.azure.monitor.opentelemetry.exporter.implementation.statsbeat.RpAttachType;
import com.azure.monitor.opentelemetry.exporter.implementation.utils.HostName;
import com.azure.monitor.opentelemetry.exporter.implementation.utils.Strings;
@ -20,12 +21,14 @@ import com.microsoft.applicationinsights.agent.internal.configuration.Configurat
import com.microsoft.applicationinsights.agent.internal.configuration.Configuration.JmxMetric;
import com.microsoft.applicationinsights.agent.internal.configuration.Configuration.SamplingOverride;
import com.microsoft.applicationinsights.agent.internal.diagnostics.DiagnosticsHelper;
import io.opentelemetry.api.common.AttributeKey;
import java.io.IOException;
import java.net.URL;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
@ -253,6 +256,7 @@ public class ConfigurationBuilder {
overlayFromEnv(config, agentJarPath.getParent());
config.sampling.percentage = roundToNearest(config.sampling.percentage, true);
for (SamplingOverride override : config.preview.sampling.overrides) {
supportSamplingOverridesOldSemConv(override);
override.percentage = roundToNearest(override.percentage, true);
}
// rp configuration should always be last (so it takes precedence)
@ -270,6 +274,103 @@ public class ConfigurationBuilder {
String hostname = HostName.get();
config.role.instance = hostname == null ? "unknown" : hostname;
}
supportTelemetryProcessorsOldSemConv(config);
}
private static void supportSamplingOverridesOldSemConv(SamplingOverride override) {
for (Configuration.SamplingOverrideAttribute attribute : override.attributes) {
attribute.key = mapAttributeKey(attribute.key);
}
}
private static void supportTelemetryProcessorsOldSemConv(Configuration config) {
for (Configuration.ProcessorConfig processor : config.preview.processors) {
if (processor.include != null && processor.type == Configuration.ProcessorType.ATTRIBUTE) {
for (Configuration.ProcessorAttribute attribute : processor.include.attributes) {
attribute.key = mapAttributeKey(attribute.key);
}
}
if (processor.exclude != null && processor.type == Configuration.ProcessorType.ATTRIBUTE) {
for (Configuration.ProcessorAttribute attribute : processor.exclude.attributes) {
attribute.key = mapAttributeKey(attribute.key);
}
}
for (Configuration.ProcessorAction action : processor.actions) {
if (action.key != null && processor.type == Configuration.ProcessorType.ATTRIBUTE) {
action.key = AttributeKey.stringKey(mapAttributeKey(action.key.getKey()));
}
}
if (processor.name != null && processor.name.fromAttributes != null) {
List<String> newFromAttributes = new ArrayList<>();
for (String oldFromAttribute : processor.name.fromAttributes) {
String newFromAttribute = mapAttributeKey(oldFromAttribute);
newFromAttributes.add(newFromAttribute);
}
processor.name.fromAttributes = newFromAttributes;
}
if (processor.body != null && processor.body.fromAttributes != null) {
List<String> newFromAttributes = new ArrayList<>();
for (String oldFromAttribute : processor.body.fromAttributes) {
String newFromAttribute = mapAttributeKey(oldFromAttribute);
newFromAttributes.add(newFromAttribute);
}
processor.body.fromAttributes = newFromAttributes;
}
}
}
private static String mapAttributeKey(String oldAttributeKey) {
String result = null;
// Common attributes across HTTP client and server spans
if (oldAttributeKey.equals(SemanticAttributes.HTTP_METHOD.getKey())) {
result = SemanticAttributes.HTTP_REQUEST_METHOD.getKey();
} else if (oldAttributeKey.equals(SemanticAttributes.HTTP_STATUS_CODE.getKey())) {
result = SemanticAttributes.HTTP_RESPONSE_STATUS_CODE.getKey();
} else if (oldAttributeKey.startsWith("http.request.header.")
|| oldAttributeKey.startsWith("http.response.header.")) {
result = oldAttributeKey.replace('_', '-');
} else if (oldAttributeKey.equals(SemanticAttributes.NET_PROTOCOL_NAME.getKey())) {
result = SemanticAttributes.NETWORK_PROTOCOL_NAME.getKey();
} else if (oldAttributeKey.equals(SemanticAttributes.NET_PROTOCOL_VERSION.getKey())) {
result = SemanticAttributes.NETWORK_PROTOCOL_VERSION.getKey();
} else if (oldAttributeKey.equals(SemanticAttributes.NET_SOCK_PEER_ADDR.getKey())) {
result = SemanticAttributes.NETWORK_PEER_ADDRESS.getKey();
} else if (oldAttributeKey.equals(SemanticAttributes.NET_SOCK_PEER_PORT.getKey())) {
result = SemanticAttributes.NETWORK_PEER_PORT.getKey();
}
// HTTP client span attributes
// http.url is handled via LazyHttpUrl
if (oldAttributeKey.equals(SemanticAttributes.HTTP_RESEND_COUNT.getKey())) {
result = "http.request.resend_count"; // TODO (heya) use upstream SemanticAttributes when it
// becomes available.
} else if (oldAttributeKey.equals(SemanticAttributes.NET_PEER_NAME.getKey())) {
result = SemanticAttributes.SERVER_ADDRESS.getKey();
} else if (oldAttributeKey.equals(SemanticAttributes.NET_PEER_PORT.getKey())) {
result = SemanticAttributes.SERVER_PORT.getKey();
}
// HTTP server span attributes
// http.target is handled via LazyHttpTarget
if (oldAttributeKey.equals(SemanticAttributes.HTTP_SCHEME.getKey())) {
result = SemanticAttributes.URL_SCHEME.getKey();
} else if (oldAttributeKey.equals(SemanticAttributes.HTTP_CLIENT_IP.getKey())) {
result = SemanticAttributes.CLIENT_ADDRESS.getKey();
} else if (oldAttributeKey.equals(SemanticAttributes.NET_HOST_NAME.getKey())) {
result = SemanticAttributes.SERVER_ADDRESS.getKey();
} else if (oldAttributeKey.equals(SemanticAttributes.NET_HOST_PORT.getKey())) {
result = SemanticAttributes.SERVER_PORT.getKey();
}
if (result == null) {
result = oldAttributeKey;
} else {
configurationLogger.warn(
"\"{}\" has been deprecated and replaced with \"{}\" since 3.5.0 GA.",
oldAttributeKey,
result);
}
return result;
}
private static void logWarningIfUsingInternalAttributes(Configuration config) {

Просмотреть файл

@ -21,6 +21,7 @@ public class AiConfigCustomizer implements Function<ConfigProperties, Map<String
Configuration configuration = FirstEntryPoint.getConfiguration();
Map<String, String> properties = new HashMap<>();
properties.put(
"applicationinsights.internal.micrometer.step.millis",
Long.toString(SECONDS.toMillis(configuration.metricIntervalSeconds)));
@ -37,9 +38,9 @@ public class AiConfigCustomizer implements Function<ConfigProperties, Map<String
"otel.java.enabled.resource.providers",
"io.opentelemetry.sdk.autoconfigure.internal.EnvironmentResourceProvider");
if (!configuration.preview.captureControllerSpans) {
if (configuration.preview.captureControllerSpans) {
properties.put(
"otel.instrumentation.common.experimental.controller-telemetry.enabled", "false");
"otel.instrumentation.common.experimental.controller-telemetry.enabled", "true");
}
properties.put("otel.instrumentation.common.experimental.view-telemetry.enabled", "false");
properties.put(
@ -47,19 +48,19 @@ public class AiConfigCustomizer implements Function<ConfigProperties, Map<String
setHttpHeaderConfiguration(
properties,
"otel.instrumentation.http.capture-headers.server.request",
"otel.instrumentation.http.server.capture-request-headers",
configuration.preview.captureHttpServerHeaders.requestHeaders);
setHttpHeaderConfiguration(
properties,
"otel.instrumentation.http.capture-headers.server.response",
"otel.instrumentation.http.server.capture-response-headers",
configuration.preview.captureHttpServerHeaders.responseHeaders);
setHttpHeaderConfiguration(
properties,
"otel.instrumentation.http.capture-headers.client.request",
"otel.instrumentation.http.client.capture-request-headers",
configuration.preview.captureHttpClientHeaders.requestHeaders);
setHttpHeaderConfiguration(
properties,
"otel.instrumentation.http.capture-headers.client.response",
"otel.instrumentation.http.client.capture-response-headers",
configuration.preview.captureHttpClientHeaders.responseHeaders);
// enable capturing all mdc properties

Просмотреть файл

@ -5,6 +5,7 @@ package com.microsoft.applicationinsights.agent.internal.init;
import com.azure.monitor.opentelemetry.exporter.implementation.AiSemanticAttributes;
import com.microsoft.applicationinsights.agent.internal.configuration.Configuration;
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.Context;
@ -39,9 +40,11 @@ public class AiContextCustomizer<R> implements ContextCustomizer<R> {
Context newContext = context;
String target = startAttributes.get(SemanticAttributes.HTTP_TARGET);
String path =
getStableAttribute(
startAttributes, SemanticAttributes.URL_PATH, SemanticAttributes.HTTP_TARGET);
String connectionStringOverride = getConnectionStringOverride(target);
String connectionStringOverride = getConnectionStringOverride(path);
if (connectionStringOverride != null) {
newContext = newContext.with(AiContextKeys.CONNECTION_STRING, connectionStringOverride);
// InheritedConnectionStringSpanProcessor will stamp connection string attribute from the
@ -51,7 +54,7 @@ public class AiContextCustomizer<R> implements ContextCustomizer<R> {
span.setAttribute(AiSemanticAttributes.INTERNAL_CONNECTION_STRING, connectionStringOverride);
}
String roleNameOverride = getRoleNameOverride(target);
String roleNameOverride = getRoleNameOverride(path);
if (roleNameOverride != null) {
newContext = newContext.with(AiContextKeys.ROLE_NAME, roleNameOverride);
// InheritedRoleNameSpanProcessor will stamp role name attribute from the
@ -89,4 +92,13 @@ public class AiContextCustomizer<R> implements ContextCustomizer<R> {
}
return null;
}
private static <T> T getStableAttribute(
Attributes attributes, AttributeKey<T> stable, AttributeKey<T> old) {
T value = attributes.get(stable);
if (value != null) {
return value;
}
return attributes.get(old);
}
}

Просмотреть файл

@ -43,7 +43,6 @@ import com.microsoft.applicationinsights.agent.internal.legacyheaders.AiLegacyHe
import com.microsoft.applicationinsights.agent.internal.processors.ExporterWithLogProcessor;
import com.microsoft.applicationinsights.agent.internal.processors.ExporterWithSpanProcessor;
import com.microsoft.applicationinsights.agent.internal.processors.LogExporterWithAttributeProcessor;
import com.microsoft.applicationinsights.agent.internal.processors.MySpanData;
import com.microsoft.applicationinsights.agent.internal.processors.SpanExporterWithAttributeProcessor;
import com.microsoft.applicationinsights.agent.internal.profiler.triggers.AlertTriggerSpanProcessor;
import com.microsoft.applicationinsights.agent.internal.sampling.SamplingOverrides;
@ -51,8 +50,6 @@ import com.microsoft.applicationinsights.agent.internal.telemetry.BatchItemProce
import com.microsoft.applicationinsights.agent.internal.telemetry.MetricFilter;
import com.microsoft.applicationinsights.agent.internal.telemetry.TelemetryClient;
import com.microsoft.applicationinsights.agent.internal.telemetry.TelemetryObservers;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder;
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer;
@ -68,12 +65,9 @@ import io.opentelemetry.sdk.metrics.View;
import io.opentelemetry.sdk.metrics.export.MetricExporter;
import io.opentelemetry.sdk.metrics.internal.view.AiViewRegistry;
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentelemetry.sdk.trace.export.SpanExporter;
import io.opentelemetry.semconv.SemanticAttributes;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@ -400,6 +394,9 @@ public class SecondEntryPoint
if (!config.preview.instrumentation.jaxrsAnnotations.enabled) {
featureList.add(Feature.JAXRS_ANNOTATIONS_DISABLED);
}
if (!config.preview.instrumentation.pekko.enabled) {
featureList.add(Feature.PEKKO_DISABLED);
}
if (config.preview.browserSdkLoader.enabled) {
featureList.add(Feature.BROWSER_SDK_LOADER);
}
@ -594,10 +591,6 @@ public class SecondEntryPoint
"Not an expected ProcessorType: " + processorConfig.type);
}
}
// this is temporary until semantic attributes stabilize and we make breaking change
// then can use java.util.functions.Predicate<Attributes>
spanExporter = new BackCompatHttpUrlProcessor(spanExporter);
}
return spanExporter;
@ -754,47 +747,4 @@ public class SecondEntryPoint
});
return overallResult;
}
private static class BackCompatHttpUrlProcessor implements SpanExporter {
private final SpanExporter delegate;
private BackCompatHttpUrlProcessor(SpanExporter delegate) {
this.delegate = delegate;
}
@Override
public CompletableResultCode export(Collection<SpanData> spans) {
List<SpanData> copy = new ArrayList<>();
for (SpanData span : spans) {
copy.add(addBackCompatHttpUrl(span));
}
return delegate.export(copy);
}
private static SpanData addBackCompatHttpUrl(SpanData span) {
Attributes attributes = span.getAttributes();
if (attributes.get(SemanticAttributes.HTTP_URL) != null) {
// already has http.url
return span;
}
String httpUrl = SpanDataMapper.getHttpUrlFromServerSpan(attributes);
if (httpUrl == null) {
return span;
}
AttributesBuilder builder = attributes.toBuilder();
builder.put(SemanticAttributes.HTTP_URL, httpUrl);
return new MySpanData(span, builder.build());
}
@Override
public CompletableResultCode flush() {
return delegate.flush();
}
@Override
public CompletableResultCode shutdown() {
return delegate.shutdown();
}
}
}

Просмотреть файл

@ -28,7 +28,7 @@ public class StatsbeatSpanExporter implements SpanExporter {
if (instrumentationScopeName.startsWith("azure-")) {
instrumentationScopeName = AZURE_OPENTELEMETRY;
}
statsbeatModule.getInstrumentationStatsbeat().addInstrumentation(instrumentationScopeName);
statsbeatModule.getInstrumentationStatsbeat().addInstrumentation(span);
}
return delegate.export(spans);
}

Просмотреть файл

@ -3,6 +3,7 @@
package com.microsoft.applicationinsights.agent.internal.processors;
import com.azure.monitor.opentelemetry.exporter.implementation.SpanDataMapper;
import com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ProcessorAction;
import com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ProcessorConfig;
import io.opentelemetry.api.common.AttributeKey;
@ -104,6 +105,15 @@ public class AttributeProcessor extends AgentProcessor {
// Currently we only support String
String existingValue = existingAttributes.get(actionObj.key);
AttributeKey<String> attributeKey = actionObj.key;
// support backward compatibility for http.url
if (actionObj.key.getKey().equals("http.url")) {
HttpUrlKeyValuePair pair = processHttpUrl(attributes);
attributeKey = AttributeKey.stringKey(pair.key);
existingValue = pair.value;
}
if (existingValue == null) {
return existingAttributes;
}
@ -112,14 +122,14 @@ public class AttributeProcessor extends AgentProcessor {
if (actionObj.value != null) {
// update to new value
AttributesBuilder builder = existingAttributes.toBuilder();
builder.put(actionObj.key, actionObj.value);
builder.put(attributeKey, actionObj.value);
return builder.build();
}
String fromAttributeValue = existingAttributes.get(actionObj.fromAttribute);
if (fromAttributeValue != null) {
AttributesBuilder builder = existingAttributes.toBuilder();
builder.put(actionObj.key, fromAttributeValue);
builder.put(attributeKey, fromAttributeValue);
return builder.build();
}
@ -131,14 +141,24 @@ public class AttributeProcessor extends AgentProcessor {
// Currently we only support String
String existingValue = existingAttributes.get(actionObj.key);
AttributeKey<String> attributeKey = actionObj.key;
// support backward compatibility for http.url
if (actionObj.key.getKey().equals("http.url")) {
HttpUrlKeyValuePair pair = processHttpUrl(attributes);
attributeKey = AttributeKey.stringKey(pair.key);
existingValue = pair.value;
}
if (existingValue == null) {
return existingAttributes;
}
AttributesBuilder builder = Attributes.builder();
AttributeKey<String> finalAttributeKey = attributeKey;
existingAttributes.forEach(
(key, value) -> {
if (!key.equals(actionObj.key)) {
if (!key.equals(finalAttributeKey)) {
putIntoBuilder(builder, key, value);
}
});
@ -150,20 +170,36 @@ public class AttributeProcessor extends AgentProcessor {
// Currently we only support String
String existingValue = existingAttributes.get(actionObj.key);
AttributeKey<String> attributeKey = actionObj.key;
// support backward compatibility for http.url
if (actionObj.key.getKey().equals("http.url")) {
HttpUrlKeyValuePair pair = processHttpUrl(attributes);
attributeKey = AttributeKey.stringKey(pair.key);
existingValue = pair.value;
}
if (existingValue == null) {
return existingAttributes;
}
AttributesBuilder builderCopy = existingAttributes.toBuilder();
builderCopy.put(actionObj.key, DigestUtils.sha256Hex(existingValue));
builderCopy.put(attributeKey, DigestUtils.sha256Hex(existingValue));
return builderCopy.build();
}
private static Attributes processExtractAction(Attributes attributes, ProcessorAction actionObj) {
Attributes existingAttributes = attributes;
// Currently we only support String
String existingValue = existingAttributes.get(actionObj.key);
// support backward compatibility for http.url
if (actionObj.key.getKey().equals("http.url")) {
HttpUrlKeyValuePair pair = processHttpUrl(attributes);
existingValue = pair.value;
}
// Currently we only support String
if (existingValue == null) {
return existingAttributes;
}
@ -184,6 +220,15 @@ public class AttributeProcessor extends AgentProcessor {
// Currently we only support String
String existingValue = existingAttributes.get(actionObj.key);
AttributeKey<String> attributeKey = actionObj.key;
// support backward compatibility for http.url
if (actionObj.key.getKey().equals("http.url")) {
HttpUrlKeyValuePair pair = processHttpUrl(attributes);
attributeKey = AttributeKey.stringKey(pair.key);
existingValue = pair.value;
}
if (existingValue == null) {
return existingAttributes;
}
@ -195,10 +240,29 @@ public class AttributeProcessor extends AgentProcessor {
}
AttributesBuilder builder = existingAttributes.toBuilder();
builder.put(actionObj.key, newValue);
builder.put(attributeKey, newValue);
return builder.build();
}
// support backward compatibility for http.url
private static HttpUrlKeyValuePair processHttpUrl(Attributes attributes) {
String urlFull = attributes.get(AttributeKey.stringKey("url.full"));
if (urlFull != null) {
return new HttpUrlKeyValuePair("url.full", urlFull);
}
return new HttpUrlKeyValuePair("url.path", SpanDataMapper.getHttpUrlFromServerSpan(attributes));
}
private static class HttpUrlKeyValuePair {
public final String key;
public final String value;
public HttpUrlKeyValuePair(String key, String value) {
this.key = key;
this.value = value;
}
}
@SuppressWarnings("unchecked")
private static void putIntoBuilder(AttributesBuilder builder, AttributeKey<?> key, Object value) {
switch (key.getType()) {

Просмотреть файл

@ -34,8 +34,9 @@ public class SamplingOverrides {
@Nullable
public Sampler getOverride(Attributes attributes) {
LazyHttpUrl lazyHttpUrl = new LazyHttpUrl(attributes);
LazyHttpTarget lazyHttpTarget = new LazyHttpTarget(attributes);
for (MatcherGroup matcherGroups : matcherGroups) {
if (matcherGroups.matches(attributes, lazyHttpUrl)) {
if (matcherGroups.matches(attributes, lazyHttpUrl, lazyHttpTarget)) {
return matcherGroups.getSampler();
}
}
@ -46,7 +47,7 @@ public class SamplingOverrides {
@Nullable
public Double getOverridePercentage(Attributes attributes) {
for (MatcherGroup matcherGroups : matcherGroups) {
if (matcherGroups.matches(attributes, null)) {
if (matcherGroups.matches(attributes, null, null)) {
return matcherGroups.getPercentage();
}
}
@ -80,9 +81,12 @@ public class SamplingOverrides {
return samplingPercentage.get();
}
private boolean matches(Attributes attributes, @Nullable LazyHttpUrl lazyHttpUrl) {
private boolean matches(
Attributes attributes,
@Nullable LazyHttpUrl lazyHttpUrl,
@Nullable LazyHttpTarget lazyHttpTarget) {
for (TempPredicate predicate : predicates) {
if (!predicate.test(attributes, lazyHttpUrl)) {
if (!predicate.test(attributes, lazyHttpUrl, lazyHttpTarget)) {
return false;
}
}
@ -136,9 +140,13 @@ public class SamplingOverrides {
}
@Override
public boolean test(Attributes attributes, LazyHttpUrl lazyHttpUrl) {
public boolean test(
Attributes attributes, LazyHttpUrl lazyHttpUrl, LazyHttpTarget lazyHttpTarget) {
String val = MatcherGroup.getValueIncludingThreadName(attributes, key);
if (val == null && key.getKey().equals(SemanticAttributes.HTTP_URL.getKey())) {
if (key.getKey().equals(SemanticAttributes.HTTP_TARGET.getKey())) {
val = lazyHttpTarget.get();
}
if (val == null && getHttpUrlKeyOldOrStableSemconv(key)) {
val = lazyHttpUrl.get();
}
return value.equals(val);
@ -155,7 +163,8 @@ public class SamplingOverrides {
}
@Override
public boolean test(Attributes attributes, LazyHttpUrl lazyHttpUrl) {
public boolean test(
Attributes attributes, LazyHttpUrl lazyHttpUrl, LazyHttpTarget lazyHttpTarget) {
List<String> val = attributes.get(key);
return val != null && val.contains(value);
}
@ -171,13 +180,18 @@ public class SamplingOverrides {
}
@Override
public boolean test(Attributes attributes, @Nullable LazyHttpUrl lazyHttpUrl) {
public boolean test(
Attributes attributes,
@Nullable LazyHttpUrl lazyHttpUrl,
@Nullable LazyHttpTarget lazyHttpTarget) {
String val = MatcherGroup.getValueIncludingThreadName(attributes, key);
if (val == null
&& key.getKey().equals(SemanticAttributes.HTTP_URL.getKey())
&& lazyHttpUrl != null) {
if (key.getKey().equals(SemanticAttributes.URL_PATH.getKey())) {
val = lazyHttpTarget.get();
}
if (val == null && getHttpUrlKeyOldOrStableSemconv(key) && lazyHttpUrl != null) {
val = lazyHttpUrl.get();
}
return val != null && value.matcher(val).matches();
}
}
@ -192,7 +206,10 @@ public class SamplingOverrides {
}
@Override
public boolean test(Attributes attributes, @Nullable LazyHttpUrl lazyHttpUrl) {
public boolean test(
Attributes attributes,
@Nullable LazyHttpUrl lazyHttpUrl,
@Nullable LazyHttpTarget lazyHttpTarget) {
List<String> val = attributes.get(key);
if (val == null) {
return false;
@ -214,18 +231,22 @@ public class SamplingOverrides {
}
@Override
public boolean test(Attributes attributes, @Nullable LazyHttpUrl lazyHttpUrl) {
public boolean test(
Attributes attributes,
@Nullable LazyHttpUrl lazyHttpUrl,
@Nullable LazyHttpTarget lazyHttpTarget) {
String val = MatcherGroup.getValueIncludingThreadName(attributes, key);
if (val == null
&& key.getKey().equals(SemanticAttributes.HTTP_URL.getKey())
&& lazyHttpUrl != null) {
if (key.getKey().equals(SemanticAttributes.HTTP_TARGET.getKey())) {
val = lazyHttpTarget.get();
}
if (val == null && getHttpUrlKeyOldOrStableSemconv(key) && lazyHttpUrl != null) {
val = lazyHttpUrl.get();
}
return val != null;
}
}
// this is temporary until semantic attributes stabilize and we make breaking change
// this is for backward compatibility with existing sampling override logic
private static class LazyHttpUrl {
private final Attributes attributes;
private boolean initialized;
@ -244,9 +265,39 @@ public class SamplingOverrides {
}
}
private static boolean getHttpUrlKeyOldOrStableSemconv(AttributeKey<String> key) {
String keyString = key.getKey();
return keyString.equals(SemanticAttributes.HTTP_URL.getKey())
|| keyString.equals(SemanticAttributes.URL_FULL.getKey());
}
// this is temporary until semantic attributes stabilize and we make breaking change
// then can use java.util.functions.Predicate<Attributes>
private interface TempPredicate {
boolean test(Attributes attributes, @Nullable LazyHttpUrl lazyHttpUrl);
boolean test(
Attributes attributes,
@Nullable LazyHttpUrl lazyHttpUrl,
@Nullable LazyHttpTarget lazyHttpTarget);
}
// this is for backward compatibility with existing sampling override logic
// http.target -> url.path and url.query
private static class LazyHttpTarget {
private final Attributes attributes;
private boolean initialized;
@Nullable private String value;
private LazyHttpTarget(Attributes attributes) {
this.attributes = attributes;
}
private String get() {
if (!initialized) {
String urlQuery = attributes.get(SemanticAttributes.URL_QUERY);
value = attributes.get(SemanticAttributes.URL_PATH) + (urlQuery != null ? urlQuery : "");
initialized = true;
}
return value;
}
}
}

Просмотреть файл

@ -34,12 +34,10 @@ import com.azure.monitor.opentelemetry.exporter.implementation.utils.Strings;
import com.azure.monitor.opentelemetry.exporter.implementation.utils.TempDirs;
import com.microsoft.applicationinsights.agent.internal.configuration.Configuration;
import com.microsoft.applicationinsights.agent.internal.httpclient.LazyHttpClient;
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
import io.opentelemetry.sdk.common.CompletableResultCode;
import io.opentelemetry.sdk.resources.Resource;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -340,8 +338,7 @@ public class TelemetryClient {
for (Map.Entry<String, String> entry : globalProperties.entrySet()) {
telemetryBuilder.addProperty(entry.getKey(), entry.getValue());
}
ResourceParser.updateRoleNameAndInstance(
telemetryBuilder, resource, DefaultConfigProperties.create(Collections.emptyMap()));
new ResourceParser().updateRoleNameAndInstance(telemetryBuilder, resource);
}
@Nullable

Просмотреть файл

@ -9,8 +9,8 @@ import java.util.HashSet;
import java.util.Set;
enum MetricView {
HTTP_CLIENT_VIEW("http.client.duration", httpClientDurationAttributeKeys(), false),
HTTP_SERVER_VIEW("http.server.duration", httpServerDurationAttributeKeys(), true),
HTTP_CLIENT_VIEW("http.client.request.duration", httpClientDurationAttributeKeys(), false),
HTTP_SERVER_VIEW("http.server.request.duration", httpServerDurationAttributeKeys(), true),
RPC_CLIENT_VIEW("rpc.client.duration", rpcClientDurationAttributeKeys(), false),
RPC_SERVER_VIEW("rpc.server.duration", rpcServerDurationAttributeKeys(), false);
@ -41,23 +41,23 @@ enum MetricView {
private static Set<AttributeKey<?>> httpClientDurationAttributeKeys() {
Set<AttributeKey<?>> view = new HashSet<>(3);
view.add(SemanticAttributes.HTTP_STATUS_CODE);
view.add(SemanticAttributes.NET_PEER_NAME);
view.add(SemanticAttributes.NET_PEER_PORT);
view.add(SemanticAttributes.HTTP_RESPONSE_STATUS_CODE);
view.add(SemanticAttributes.SERVER_ADDRESS);
view.add(SemanticAttributes.SERVER_PORT);
return view;
}
private static Set<AttributeKey<?>> httpServerDurationAttributeKeys() {
Set<AttributeKey<?>> view = new HashSet<>(1);
view.add(SemanticAttributes.HTTP_STATUS_CODE);
view.add(SemanticAttributes.HTTP_RESPONSE_STATUS_CODE);
return view;
}
private static Set<AttributeKey<?>> rpcClientDurationAttributeKeys() {
Set<AttributeKey<?>> view = new HashSet<>(3);
view.add(SemanticAttributes.RPC_SYSTEM);
view.add(SemanticAttributes.NET_PEER_NAME);
view.add(SemanticAttributes.NET_PEER_PORT);
view.add(SemanticAttributes.SERVER_ADDRESS);
view.add(SemanticAttributes.SERVER_PORT);
return view;
}

Просмотреть файл

@ -30,10 +30,10 @@ import io.opentelemetry.api.trace.SpanContext;
import io.opentelemetry.api.trace.TraceFlags;
import io.opentelemetry.api.trace.TraceState;
import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcClientMetrics;
import io.opentelemetry.instrumentation.api.instrumenter.OperationListener;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientMetrics;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics;
import io.opentelemetry.instrumentation.api.instrumenter.rpc.RpcClientMetrics;
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientMetrics;
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerMetrics;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
import io.opentelemetry.sdk.metrics.data.MetricData;
@ -74,9 +74,8 @@ public class PreAggregatedMetricsTest {
.put("http.host", "host")
.put("http.target", "/")
.put("http.scheme", "https")
.put("net.peer.name", "localhost")
.put("net.peer.ip", "0.0.0.0")
.put("net.peer.port", 1234)
.put("server.address", "localhost")
.put("server.port", 1234)
.put("http.request_content_length", 100)
.build();
@ -84,7 +83,7 @@ public class PreAggregatedMetricsTest {
Attributes.builder()
.put("http.flavor", "2.0")
.put("http.server_name", "server")
.put("http.status_code", 200)
.put("http.response.status_code", 200)
.put("http.response_content_length", 200)
.build();
@ -114,18 +113,19 @@ public class PreAggregatedMetricsTest {
.satisfiesExactly(
metric ->
assertThat(metric)
.hasName("http.client.duration")
.hasUnit("ms")
.hasName("http.client.request.duration")
.hasUnit("s")
.hasHistogramSatisfying(
histogram ->
histogram.hasPointsSatisfying(
point ->
point
.hasSum(150 /* millis */)
.hasSum(0.15 /* seconds */)
.hasAttributesSatisfying(
equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"),
equalTo(SemanticAttributes.NET_PEER_PORT, 1234),
equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200))
equalTo(SemanticAttributes.SERVER_ADDRESS, "localhost"),
equalTo(SemanticAttributes.SERVER_PORT, 1234),
equalTo(
SemanticAttributes.HTTP_RESPONSE_STATUS_CODE, 200))
.hasExemplarsSatisfying(
exemplar ->
exemplar
@ -158,10 +158,8 @@ public class PreAggregatedMetricsTest {
Attributes responseAttributes1 =
Attributes.builder()
.put(SemanticAttributes.NET_PEER_NAME, "example.com")
.put(SemanticAttributes.NET_PEER_IP, "127.0.0.1")
.put(SemanticAttributes.NET_PEER_PORT, 8080)
.put(SemanticAttributes.NET_TRANSPORT, "ip_tcp")
.put(SemanticAttributes.SERVER_ADDRESS, "example.com")
.put(SemanticAttributes.SERVER_PORT, 8080)
.build();
Context parent =
@ -202,8 +200,8 @@ public class PreAggregatedMetricsTest {
.hasAttributesSatisfying(
equalTo(SemanticAttributes.RPC_SYSTEM, "grpc"),
equalTo(
SemanticAttributes.NET_PEER_NAME, "example.com"),
equalTo(SemanticAttributes.NET_PEER_PORT, 8080))
SemanticAttributes.SERVER_ADDRESS, "example.com"),
equalTo(SemanticAttributes.SERVER_PORT, 8080))
.hasExemplarsSatisfying(
exemplar ->
exemplar
@ -233,8 +231,8 @@ public class PreAggregatedMetricsTest {
.put("http.host", "host")
.put("http.target", "/")
.put("http.scheme", "https")
.put("net.host.name", "localhost")
.put("net.host.port", 1234)
.put("server.address", "localhost")
.put("server.port", 1234)
.put("http.request_content_length", 100)
.build();
@ -242,7 +240,7 @@ public class PreAggregatedMetricsTest {
Attributes.builder()
.put("http.flavor", "2.0")
.put("http.server_name", "server")
.put("http.status_code", 200)
.put("http.response.status_code", 200)
.put("http.response_content_length", 200)
.build();
@ -259,26 +257,27 @@ public class PreAggregatedMetricsTest {
Collection<MetricData> metricDataCollection = metricReader.collectAllMetrics();
MetricData target = null;
for (MetricData metricData : metricDataCollection) {
if ("http.server.duration".equals(metricData.getName())) {
if ("http.server.request.duration".equals(metricData.getName())) {
target = metricData;
System.out.println("metric: " + metricData);
}
}
assertThat(target)
.satisfies(
.satisfiesAnyOf(
metric ->
assertThat(metric)
.hasName("http.server.duration")
.hasUnit("ms")
.hasName("http.server.request.duration")
.hasUnit("s")
.hasHistogramSatisfying(
histogram ->
histogram.hasPointsSatisfying(
point ->
point
.hasSum(150 /* millis */)
.hasSum(0.15 /* seconds */)
.hasAttributesSatisfying(
equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200),
equalTo(
SemanticAttributes.HTTP_RESPONSE_STATUS_CODE, 200),
equalTo(
AttributeKey.booleanKey(
"applicationinsights.internal.is_synthetic"),

Просмотреть файл

@ -6,7 +6,6 @@ package com.microsoft.applicationinsights.agent.internal.processors;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static org.assertj.core.api.Assertions.assertThat;
import com.azure.monitor.opentelemetry.exporter.implementation.SemanticAttributes;
import com.microsoft.applicationinsights.agent.internal.configuration.Configuration;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.trace.SpanContext;
@ -22,6 +21,7 @@ import io.opentelemetry.sdk.trace.data.EventData;
import io.opentelemetry.sdk.trace.data.LinkData;
import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentelemetry.sdk.trace.data.StatusData;
import io.opentelemetry.semconv.SemanticAttributes;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Collections;
@ -46,7 +46,7 @@ class TelemetryProcessorMaskingTest {
.processActions(new RequestSpanData(httpUrl));
Attributes newAttributes = newSpanData.getAttributes();
String newHttpUrlAttributeValue = newAttributes.get(SemanticAttributes.HTTP_URL);
String newHttpUrlAttributeValue = newAttributes.get(SemanticAttributes.URL_FULL);
assertThat(newHttpUrlAttributeValue)
.isEqualTo("http://localhost:8080/TelemetryProcessors/user/" + mask);
}
@ -72,7 +72,7 @@ class TelemetryProcessorMaskingTest {
.processActions(new RequestSpanData(httpUrl));
Attributes newAttributes = newSpanData.getAttributes();
String newHttpUrlAttributeValue = newAttributes.get(SemanticAttributes.HTTP_URL);
String newHttpUrlAttributeValue = newAttributes.get(SemanticAttributes.URL_FULL);
assertThat(newHttpUrlAttributeValue).isEqualTo("https://user/" + mask);
}
@ -166,9 +166,9 @@ class TelemetryProcessorMaskingTest {
@Override
public Attributes getAttributes() {
return Attributes.builder()
.put("http.status_code", 200L)
.put("http.url", httpUrl)
.put("http.method", "GET")
.put("http.response.status_code", 200L)
.put("url.full", httpUrl)
.put("http.request.method", "GET")
.put("ai.sampling.percentage", 100.0)
.build();
}

Просмотреть файл

@ -84,7 +84,6 @@ tasks {
exclude(dependency("io.opentelemetry:opentelemetry-api"))
exclude(dependency("io.opentelemetry:opentelemetry-api-metrics"))
exclude(dependency("io.opentelemetry:opentelemetry-context"))
exclude(dependency("io.opentelemetry:opentelemetry-semconv"))
}
}
@ -110,6 +109,8 @@ tasks {
// and so we have to hackily re-add it via agent/agent/src/main/resources
exclude("inst/META-INF/services/io.opentelemetry.javaagent.slf4j.spi.SLF4JServiceProvider")
exclude("inst/io/prometheus/**")
// this excludes the upstream classes, but not the distro classes since the exclusion step
// takes place before the transformation step
exclude("io/opentelemetry/javaagent/shaded/instrumentation/api/instrumenter/http/TemporaryMetricsView.class")

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -14,6 +14,7 @@ val otelInstrumentationAlphaVersion: String by project
dependencies {
compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling")
compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations-support")
compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-incubator")
// TODO remove when start using io.opentelemetry.instrumentation.javaagent-instrumentation plugin
add("codegen", "io.opentelemetry.javaagent:opentelemetry-javaagent-tooling:$otelInstrumentationAlphaVersion")

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -18,7 +18,7 @@ import static net.bytebuddy.matcher.ElementMatchers.namedOneOf;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
import io.opentelemetry.instrumentation.api.annotation.support.async.AsyncOperationEndSupport;
import io.opentelemetry.instrumentation.api.instrumenter.util.ClassAndMethod;
import io.opentelemetry.instrumentation.api.incubator.semconv.util.ClassAndMethod;
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
import java.lang.reflect.Method;

Просмотреть файл

@ -12,12 +12,12 @@ package io.opentelemetry.javaagent.instrumentation.methods.ai;
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.instrumentation.api.incubator.semconv.code.CodeAttributesExtractor;
import io.opentelemetry.instrumentation.api.incubator.semconv.code.CodeAttributesGetter;
import io.opentelemetry.instrumentation.api.incubator.semconv.code.CodeSpanNameExtractor;
import io.opentelemetry.instrumentation.api.incubator.semconv.util.ClassAndMethod;
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
import io.opentelemetry.instrumentation.api.instrumenter.code.CodeAttributesExtractor;
import io.opentelemetry.instrumentation.api.instrumenter.code.CodeAttributesGetter;
import io.opentelemetry.instrumentation.api.instrumenter.code.CodeSpanNameExtractor;
import io.opentelemetry.instrumentation.api.instrumenter.util.ClassAndMethod;
public final class MethodSingletons {
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.methods";

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -5,12 +5,12 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.contrib:opentelemetry-runtime-attach-core:1.30.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
net.bytebuddy:byte-buddy-agent:1.14.8=runtimeClasspath
io.opentelemetry.contrib:opentelemetry-runtime-attach-core:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
net.bytebuddy:byte-buddy-agent:1.14.10=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -60,7 +60,7 @@ public final class ApplicationInsights {
String appInsightResourceName = findAppInsightResourceName();
CoreRuntimeAttach runtimeAttach = new CoreRuntimeAttach(appInsightResourceName);
runtimeAttach.attachJavaagentToCurrentJVM();
runtimeAttach.attachJavaagentToCurrentJvm();
} catch (Throwable t) {
logger.log(Level.WARNING, "Fail to runtime attach Application Insights", t);
}

Просмотреть файл

@ -17,7 +17,7 @@ dependencies {
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi")
compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api")
compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-semconv")
compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-incubator")
compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-extension-api:$otelInstrumentationAlphaVersion")
annotationProcessor("com.google.auto.service:auto-service")
compileOnly("com.google.auto.service:auto-service")

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath
empty=

Просмотреть файл

@ -11,10 +11,10 @@ data class DependencySet(val group: String, val version: String, val modules: Li
val dependencyVersions = hashMapOf<String, String>()
rootProject.extra["versions"] = dependencyVersions
val otelVersion = "1.32.0"
val otelInstrumentationAlphaVersion = "1.32.0-alpha"
val otelInstrumentationVersion = "1.32.0"
val otelContribAlphaVersion = "1.30.0-alpha"
val otelVersion = "1.35.0"
val otelInstrumentationAlphaVersion = "2.1.0-alpha"
val otelInstrumentationVersion = "2.1.0"
val otelContribAlphaVersion = "1.32.0-alpha"
rootProject.extra["otelVersion"] = otelVersion
rootProject.extra["otelInstrumentationVersion"] = otelInstrumentationVersion
@ -44,6 +44,7 @@ val slf4jVersion = "2.0.12"
val CORE_DEPENDENCIES = listOf(
"io.opentelemetry:opentelemetry-semconv:1.30.1-alpha",
"io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-incubator:${otelInstrumentationAlphaVersion}",
"com.google.auto.service:auto-service:${autoServiceVersion}",
"com.google.auto.service:auto-service-annotations:${autoServiceVersion}",
"com.google.auto.value:auto-value:${autoValueVersion}",

Просмотреть файл

@ -5,10 +5,10 @@ com.azure:azure-sdk-bom:1.2.20=runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.1=runtimeClasspath
com.google.guava:guava-bom:33.0.0-jre=runtimeClasspath
io.netty:netty-bom:4.1.107.Final=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.32.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.32.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.32.0=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.1.0-alpha=runtimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.1.0=runtimeClasspath
io.opentelemetry:opentelemetry-bom-alpha:1.35.0-alpha=runtimeClasspath
io.opentelemetry:opentelemetry-bom:1.35.0=runtimeClasspath
org.junit:junit-bom:5.10.2=runtimeClasspath
org.slf4j:slf4j-api:2.0.12=runtimeClasspath
org.testcontainers:testcontainers-bom:1.19.5=runtimeClasspath

Просмотреть файл

@ -1,7 +1,7 @@
# agent
## Dependency License Report
_2024-02-14 03:31:10 UTC_
_2024-02-16 10:35:58 PST_
## Apache License, Version 2.0
**1** **Group:** `com.fasterxml.jackson.core` **Name:** `jackson-annotations` **Version:** `2.16.1`
@ -36,245 +36,240 @@ _2024-02-14 03:31:10 UTC_
> - **POM Project URL**: [http://stephenc.github.com/jcip-annotations](http://stephenc.github.com/jcip-annotations)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**6** **Group:** `com.google.code.findbugs` **Name:** `jsr305` **Version:** `3.0.2`
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM Project URL**: [http://findbugs.sourceforge.net/](http://findbugs.sourceforge.net/)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**7** **Group:** `com.google.errorprone` **Name:** `error_prone_annotations` **Version:** `2.24.1`
**6** **Group:** `com.google.errorprone` **Name:** `error_prone_annotations` **Version:** `2.24.1`
> - **Manifest Project URL**: [https://errorprone.info/error_prone_annotations](https://errorprone.info/error_prone_annotations)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**8** **Group:** `com.nimbusds` **Name:** `content-type` **Version:** `2.2`
**7** **Group:** `com.nimbusds` **Name:** `content-type` **Version:** `2.2`
> - **Manifest Project URL**: [https://connect2id.com](https://connect2id.com)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM Project URL**: [https://bitbucket.org/connect2id/nimbus-content-type](https://bitbucket.org/connect2id/nimbus-content-type)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**9** **Group:** `com.nimbusds` **Name:** `lang-tag` **Version:** `1.7`
**8** **Group:** `com.nimbusds` **Name:** `lang-tag` **Version:** `1.7`
> - **Manifest Project URL**: [https://connect2id.com/](https://connect2id.com/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM Project URL**: [https://bitbucket.org/connect2id/nimbus-language-tags](https://bitbucket.org/connect2id/nimbus-language-tags)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**10** **Group:** `com.nimbusds` **Name:** `nimbus-jose-jwt` **Version:** `9.30.2`
**9** **Group:** `com.nimbusds` **Name:** `nimbus-jose-jwt` **Version:** `9.30.2`
> - **Manifest Project URL**: [https://connect2id.com](https://connect2id.com)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM Project URL**: [https://bitbucket.org/connect2id/nimbus-jose-jwt](https://bitbucket.org/connect2id/nimbus-jose-jwt)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**11** **Group:** `com.nimbusds` **Name:** `oauth2-oidc-sdk` **Version:** `10.7.1`
**10** **Group:** `com.nimbusds` **Name:** `oauth2-oidc-sdk` **Version:** `10.7.1`
> - **Project URL**: [https://bitbucket.org/connect2id/oauth-2.0-sdk-with-openid-connect-extensions](https://bitbucket.org/connect2id/oauth-2.0-sdk-with-openid-connect-extensions)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**12** **Group:** `commons-codec` **Name:** `commons-codec` **Version:** `1.16.1`
**11** **Group:** `commons-codec` **Name:** `commons-codec` **Version:** `1.16.1`
> - **Project URL**: [https://commons.apache.org/proper/commons-codec/](https://commons.apache.org/proper/commons-codec/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
> - **Embedded license files**: [commons-codec-1.16.1.jar/META-INF/LICENSE.txt](commons-codec-1.16.1.jar/META-INF/LICENSE.txt)
- [commons-codec-1.16.1.jar/META-INF/NOTICE.txt](commons-codec-1.16.1.jar/META-INF/NOTICE.txt)
**13** **Group:** `io.netty` **Name:** `netty-buffer` **Version:** `4.1.107.Final`
**12** **Group:** `io.netty` **Name:** `netty-buffer` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**14** **Group:** `io.netty` **Name:** `netty-codec` **Version:** `4.1.107.Final`
**13** **Group:** `io.netty` **Name:** `netty-codec` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**15** **Group:** `io.netty` **Name:** `netty-codec-dns` **Version:** `4.1.107.Final`
**14** **Group:** `io.netty` **Name:** `netty-codec-dns` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**16** **Group:** `io.netty` **Name:** `netty-codec-http` **Version:** `4.1.107.Final`
**15** **Group:** `io.netty` **Name:** `netty-codec-http` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**17** **Group:** `io.netty` **Name:** `netty-codec-http2` **Version:** `4.1.107.Final`
**16** **Group:** `io.netty` **Name:** `netty-codec-http2` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**18** **Group:** `io.netty` **Name:** `netty-codec-socks` **Version:** `4.1.107.Final`
**17** **Group:** `io.netty` **Name:** `netty-codec-socks` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**19** **Group:** `io.netty` **Name:** `netty-common` **Version:** `4.1.107.Final`
**18** **Group:** `io.netty` **Name:** `netty-common` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**20** **Group:** `io.netty` **Name:** `netty-handler` **Version:** `4.1.107.Final`
**19** **Group:** `io.netty` **Name:** `netty-handler` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**21** **Group:** `io.netty` **Name:** `netty-handler-proxy` **Version:** `4.1.107.Final`
**20** **Group:** `io.netty` **Name:** `netty-handler-proxy` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**22** **Group:** `io.netty` **Name:** `netty-resolver` **Version:** `4.1.107.Final`
**21** **Group:** `io.netty` **Name:** `netty-resolver` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**23** **Group:** `io.netty` **Name:** `netty-resolver-dns` **Version:** `4.1.107.Final`
**22** **Group:** `io.netty` **Name:** `netty-resolver-dns` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**24** **Group:** `io.netty` **Name:** `netty-resolver-dns-classes-macos` **Version:** `4.1.107.Final`
**23** **Group:** `io.netty` **Name:** `netty-resolver-dns-classes-macos` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**25** **Group:** `io.netty` **Name:** `netty-resolver-dns-native-macos` **Version:** `4.1.107.Final`
**24** **Group:** `io.netty` **Name:** `netty-resolver-dns-native-macos` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**26** **Group:** `io.netty` **Name:** `netty-tcnative-boringssl-static` **Version:** `2.0.61.Final`
**25** **Group:** `io.netty` **Name:** `netty-tcnative-boringssl-static` **Version:** `2.0.61.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM Project URL**: [https://github.com/netty/netty-tcnative/netty-tcnative-boringssl-static/](https://github.com/netty/netty-tcnative/netty-tcnative-boringssl-static/)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**27** **Group:** `io.netty` **Name:** `netty-tcnative-classes` **Version:** `2.0.61.Final`
**26** **Group:** `io.netty` **Name:** `netty-tcnative-classes` **Version:** `2.0.61.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**28** **Group:** `io.netty` **Name:** `netty-transport` **Version:** `4.1.107.Final`
**27** **Group:** `io.netty` **Name:** `netty-transport` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**29** **Group:** `io.netty` **Name:** `netty-transport-classes-epoll` **Version:** `4.1.107.Final`
**28** **Group:** `io.netty` **Name:** `netty-transport-classes-epoll` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**30** **Group:** `io.netty` **Name:** `netty-transport-classes-kqueue` **Version:** `4.1.107.Final`
**29** **Group:** `io.netty` **Name:** `netty-transport-classes-kqueue` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**31** **Group:** `io.netty` **Name:** `netty-transport-native-epoll` **Version:** `4.1.107.Final`
**30** **Group:** `io.netty` **Name:** `netty-transport-native-epoll` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**32** **Group:** `io.netty` **Name:** `netty-transport-native-kqueue` **Version:** `4.1.107.Final`
**31** **Group:** `io.netty` **Name:** `netty-transport-native-kqueue` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**33** **Group:** `io.netty` **Name:** `netty-transport-native-unix-common` **Version:** `4.1.107.Final`
**32** **Group:** `io.netty` **Name:** `netty-transport-native-unix-common` **Version:** `4.1.107.Final`
> - **Manifest Project URL**: [https://netty.io/](https://netty.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**34** **Group:** `io.opentelemetry` **Name:** `opentelemetry-api` **Version:** `1.32.0`
**33** **Group:** `io.opentelemetry` **Name:** `opentelemetry-api` **Version:** `1.35.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**35** **Group:** `io.opentelemetry` **Name:** `opentelemetry-api-events` **Version:** `1.32.0-alpha`
**34** **Group:** `io.opentelemetry` **Name:** `opentelemetry-api-events` **Version:** `1.35.0-alpha`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**36** **Group:** `io.opentelemetry` **Name:** `opentelemetry-context` **Version:** `1.32.0`
**35** **Group:** `io.opentelemetry` **Name:** `opentelemetry-context` **Version:** `1.35.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**37** **Group:** `io.opentelemetry` **Name:** `opentelemetry-extension-incubator` **Version:** `1.32.0-alpha`
**36** **Group:** `io.opentelemetry` **Name:** `opentelemetry-extension-incubator` **Version:** `1.35.0-alpha`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**38** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk` **Version:** `1.32.0`
**37** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk` **Version:** `1.35.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**39** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-common` **Version:** `1.32.0`
**38** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-common` **Version:** `1.35.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**40** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-extension-autoconfigure` **Version:** `1.32.0`
**39** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-extension-autoconfigure` **Version:** `1.35.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**41** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-extension-autoconfigure-spi` **Version:** `1.32.0`
**40** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-extension-autoconfigure-spi` **Version:** `1.35.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**42** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-logs` **Version:** `1.32.0`
**41** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-logs` **Version:** `1.35.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**43** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-metrics` **Version:** `1.32.0`
**42** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-metrics` **Version:** `1.35.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**44** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-trace` **Version:** `1.32.0`
**43** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-trace` **Version:** `1.35.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**45** **Group:** `io.projectreactor` **Name:** `reactor-core` **Version:** `3.5.14`
**44** **Group:** `io.projectreactor` **Name:** `reactor-core` **Version:** `3.5.14`
> - **POM Project URL**: [https://github.com/reactor/reactor-core](https://github.com/reactor/reactor-core)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
**46** **Group:** `io.projectreactor.netty` **Name:** `reactor-netty-core` **Version:** `1.1.15`
**45** **Group:** `io.projectreactor.netty` **Name:** `reactor-netty-core` **Version:** `1.1.15`
> - **POM Project URL**: [https://github.com/reactor/reactor-netty](https://github.com/reactor/reactor-netty)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**47** **Group:** `io.projectreactor.netty` **Name:** `reactor-netty-http` **Version:** `1.1.15`
**46** **Group:** `io.projectreactor.netty` **Name:** `reactor-netty-http` **Version:** `1.1.15`
> - **POM Project URL**: [https://github.com/reactor/reactor-netty](https://github.com/reactor/reactor-netty)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**48** **Group:** `net.java.dev.jna` **Name:** `jna` **Version:** `5.14.0`
**47** **Group:** `net.java.dev.jna` **Name:** `jna` **Version:** `5.14.0`
> - **POM Project URL**: [https://github.com/java-native-access/jna](https://github.com/java-native-access/jna)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
> - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1)
> - **Embedded license files**: [jna-5.14.0.jar/META-INF/LICENSE](jna-5.14.0.jar/META-INF/LICENSE)
**49** **Group:** `net.java.dev.jna` **Name:** `jna-platform` **Version:** `5.14.0`
**48** **Group:** `net.java.dev.jna` **Name:** `jna-platform` **Version:** `5.14.0`
> - **POM Project URL**: [https://github.com/java-native-access/jna](https://github.com/java-native-access/jna)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
> - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1)
> - **Embedded license files**: [jna-platform-5.14.0.jar/META-INF/LICENSE](jna-platform-5.14.0.jar/META-INF/LICENSE)
**50** **Group:** `net.minidev` **Name:** `accessors-smart` **Version:** `2.4.9`
**49** **Group:** `net.minidev` **Name:** `accessors-smart` **Version:** `2.4.9`
> - **Project URL**: [https://urielch.github.io/](https://urielch.github.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**51** **Group:** `net.minidev` **Name:** `json-smart` **Version:** `2.4.10`
**50** **Group:** `net.minidev` **Name:** `json-smart` **Version:** `2.4.10`
> - **Project URL**: [https://urielch.github.io/](https://urielch.github.io/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
**52** **Group:** `org.apache.commons` **Name:** `commons-lang3` **Version:** `3.13.0`
**51** **Group:** `org.apache.commons` **Name:** `commons-lang3` **Version:** `3.13.0`
> - **Project URL**: [https://commons.apache.org/proper/commons-lang/](https://commons.apache.org/proper/commons-lang/)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
> - **Embedded license files**: [commons-lang3-3.13.0.jar/META-INF/LICENSE.txt](commons-lang3-3.13.0.jar/META-INF/LICENSE.txt)
- [commons-lang3-3.13.0.jar/META-INF/NOTICE.txt](commons-lang3-3.13.0.jar/META-INF/NOTICE.txt)
**53** **Group:** `org.apache.commons` **Name:** `commons-text` **Version:** `1.11.0`
**52** **Group:** `org.apache.commons` **Name:** `commons-text` **Version:** `1.11.0`
> - **Project URL**: [https://commons.apache.org/proper/commons-text](https://commons.apache.org/proper/commons-text)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
> - **Embedded license files**: [commons-text-1.11.0.jar/META-INF/LICENSE.txt](commons-text-1.11.0.jar/META-INF/LICENSE.txt)
- [commons-text-1.11.0.jar/META-INF/NOTICE.txt](commons-text-1.11.0.jar/META-INF/NOTICE.txt)
**54** **Group:** `org.slf4j` **Name:** `jcl-over-slf4j` **Version:** `2.0.12`
**53** **Group:** `org.slf4j` **Name:** `jcl-over-slf4j` **Version:** `2.0.12`
> - **Project URL**: [http://www.slf4j.org](http://www.slf4j.org)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
@ -283,63 +278,59 @@ _2024-02-14 03:31:10 UTC_
## Eclipse Public License - v 1.0
**55** **Group:** `ch.qos.logback` **Name:** `logback-classic` **Version:** `1.3.14`
**54** **Group:** `ch.qos.logback` **Name:** `logback-classic` **Version:** `1.3.14`
> - **Manifest Project URL**: [http://www.qos.ch](http://www.qos.ch)
> - **Manifest License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 (Not Packaged)
> - **POM License**: Eclipse Public License - v 1.0 - [http://www.eclipse.org/legal/epl-v10.html](http://www.eclipse.org/legal/epl-v10.html)
> - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1)
**56** **Group:** `ch.qos.logback` **Name:** `logback-core` **Version:** `1.3.14`
**55** **Group:** `ch.qos.logback` **Name:** `logback-core` **Version:** `1.3.14`
> - **Manifest Project URL**: [http://www.qos.ch](http://www.qos.ch)
> - **Manifest License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 (Not Packaged)
> - **POM License**: Eclipse Public License - v 1.0 - [http://www.eclipse.org/legal/epl-v10.html](http://www.eclipse.org/legal/epl-v10.html)
> - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1)
**57** **Group:** `ch.qos.logback.contrib` **Name:** `logback-json-classic` **Version:** `0.1.5`
**56** **Group:** `ch.qos.logback.contrib` **Name:** `logback-json-classic` **Version:** `0.1.5`
> - **Manifest License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 (Not Packaged)
> - **POM License**: Eclipse Public License - v 1.0 - [http://www.eclipse.org/legal/epl-v10.html](http://www.eclipse.org/legal/epl-v10.html)
> - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1)
**58** **Group:** `ch.qos.logback.contrib` **Name:** `logback-json-core` **Version:** `0.1.5`
**57** **Group:** `ch.qos.logback.contrib` **Name:** `logback-json-core` **Version:** `0.1.5`
> - **Manifest License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 (Not Packaged)
> - **POM License**: Eclipse Public License - v 1.0 - [http://www.eclipse.org/legal/epl-v10.html](http://www.eclipse.org/legal/epl-v10.html)
> - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1)
## GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1
**59** **Group:** `ch.qos.logback` **Name:** `logback-classic` **Version:** `1.3.14`
**58** **Group:** `ch.qos.logback` **Name:** `logback-classic` **Version:** `1.3.14`
> - **Manifest Project URL**: [http://www.qos.ch](http://www.qos.ch)
> - **Manifest License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 (Not Packaged)
> - **POM License**: Eclipse Public License - v 1.0 - [http://www.eclipse.org/legal/epl-v10.html](http://www.eclipse.org/legal/epl-v10.html)
> - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1)
**60** **Group:** `ch.qos.logback` **Name:** `logback-core` **Version:** `1.3.14`
**59** **Group:** `ch.qos.logback` **Name:** `logback-core` **Version:** `1.3.14`
> - **Manifest Project URL**: [http://www.qos.ch](http://www.qos.ch)
> - **Manifest License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 (Not Packaged)
> - **POM License**: Eclipse Public License - v 1.0 - [http://www.eclipse.org/legal/epl-v10.html](http://www.eclipse.org/legal/epl-v10.html)
> - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1)
**61** **Group:** `ch.qos.logback.contrib` **Name:** `logback-json-classic` **Version:** `0.1.5`
**60** **Group:** `ch.qos.logback.contrib` **Name:** `logback-json-classic` **Version:** `0.1.5`
> - **Manifest License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 (Not Packaged)
> - **POM License**: Eclipse Public License - v 1.0 - [http://www.eclipse.org/legal/epl-v10.html](http://www.eclipse.org/legal/epl-v10.html)
> - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1)
**62** **Group:** `ch.qos.logback.contrib` **Name:** `logback-json-core` **Version:** `0.1.5`
**61** **Group:** `ch.qos.logback.contrib` **Name:** `logback-json-core` **Version:** `0.1.5`
> - **Manifest License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 (Not Packaged)
> - **POM License**: Eclipse Public License - v 1.0 - [http://www.eclipse.org/legal/epl-v10.html](http://www.eclipse.org/legal/epl-v10.html)
> - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1)
**63** **Group:** `com.github.spotbugs` **Name:** `spotbugs-annotations` **Version:** `4.8.3`
> - **POM Project URL**: [https://spotbugs.github.io/](https://spotbugs.github.io/)
> - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1)
**64** **Group:** `net.java.dev.jna` **Name:** `jna` **Version:** `5.14.0`
**62** **Group:** `net.java.dev.jna` **Name:** `jna` **Version:** `5.14.0`
> - **POM Project URL**: [https://github.com/java-native-access/jna](https://github.com/java-native-access/jna)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
> - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1)
> - **Embedded license files**: [jna-5.14.0.jar/META-INF/LICENSE](jna-5.14.0.jar/META-INF/LICENSE)
**65** **Group:** `net.java.dev.jna` **Name:** `jna-platform` **Version:** `5.14.0`
**63** **Group:** `net.java.dev.jna` **Name:** `jna-platform` **Version:** `5.14.0`
> - **POM Project URL**: [https://github.com/java-native-access/jna](https://github.com/java-native-access/jna)
> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
> - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1)
@ -347,70 +338,70 @@ _2024-02-14 03:31:10 UTC_
## MIT License
**66** **Group:** `com.azure` **Name:** `azure-core` **Version:** `1.45.1`
**64** **Group:** `com.azure` **Name:** `azure-core` **Version:** `1.45.1`
> - **POM Project URL**: [https://github.com/Azure/azure-sdk-for-java](https://github.com/Azure/azure-sdk-for-java)
> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)
**67** **Group:** `com.azure` **Name:** `azure-core-http-netty` **Version:** `1.13.11`
**65** **Group:** `com.azure` **Name:** `azure-core-http-netty` **Version:** `1.13.11`
> - **POM Project URL**: [https://github.com/Azure/azure-sdk-for-java](https://github.com/Azure/azure-sdk-for-java)
> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)
**68** **Group:** `com.azure` **Name:** `azure-identity` **Version:** `1.11.2`
**66** **Group:** `com.azure` **Name:** `azure-identity` **Version:** `1.11.2`
> - **POM Project URL**: [https://github.com/Azure/azure-sdk-for-java](https://github.com/Azure/azure-sdk-for-java)
> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)
**69** **Group:** `com.azure` **Name:** `azure-json` **Version:** `1.1.0`
**67** **Group:** `com.azure` **Name:** `azure-json` **Version:** `1.1.0`
> - **POM Project URL**: [https://github.com/Azure/azure-sdk-for-java](https://github.com/Azure/azure-sdk-for-java)
> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)
**70** **Group:** `com.azure` **Name:** `azure-monitor-opentelemetry-exporter` **Version:** `1.0.0-beta.15`
**68** **Group:** `com.azure` **Name:** `azure-monitor-opentelemetry-exporter` **Version:** `1.0.0-beta.17`
> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)
**71** **Group:** `com.azure` **Name:** `azure-storage-blob` **Version:** `12.25.1`
**69** **Group:** `com.azure` **Name:** `azure-storage-blob` **Version:** `12.25.1`
> - **POM Project URL**: [https://github.com/Azure/azure-sdk-for-java](https://github.com/Azure/azure-sdk-for-java)
> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)
**72** **Group:** `com.azure` **Name:** `azure-storage-common` **Version:** `12.24.1`
**70** **Group:** `com.azure` **Name:** `azure-storage-common` **Version:** `12.24.1`
> - **POM Project URL**: [https://github.com/Azure/azure-sdk-for-java](https://github.com/Azure/azure-sdk-for-java)
> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)
**73** **Group:** `com.azure` **Name:** `azure-storage-internal-avro` **Version:** `12.10.1`
**71** **Group:** `com.azure` **Name:** `azure-storage-internal-avro` **Version:** `12.10.1`
> - **POM Project URL**: [https://github.com/Azure/azure-sdk-for-java](https://github.com/Azure/azure-sdk-for-java)
> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)
**74** **Group:** `com.github.oshi` **Name:** `oshi-core` **Version:** `6.4.12`
**72** **Group:** `com.github.oshi` **Name:** `oshi-core` **Version:** `6.4.12`
> - **Manifest Project URL**: [https://github.com/oshi/oshi/oshi-core](https://github.com/oshi/oshi/oshi-core)
> - **Manifest License**: "SPDX-License-Identifier: MIT";link="https://opensource.org/licenses/MIT" (Not Packaged)
> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)
**75** **Group:** `com.microsoft.azure` **Name:** `msal4j` **Version:** `1.14.0`
**73** **Group:** `com.microsoft.azure` **Name:** `msal4j` **Version:** `1.14.0`
> - **Project URL**: [https://github.com/AzureAD/microsoft-authentication-library-for-java](https://github.com/AzureAD/microsoft-authentication-library-for-java)
> - **Manifest License**: "MIT License" (Not Packaged)
> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)
**76** **Group:** `com.microsoft.azure` **Name:** `msal4j-persistence-extension` **Version:** `1.2.0`
**74** **Group:** `com.microsoft.azure` **Name:** `msal4j-persistence-extension` **Version:** `1.2.0`
> - **POM Project URL**: [https://github.com/AzureAD/microsoft-authentication-extensions-for-java](https://github.com/AzureAD/microsoft-authentication-extensions-for-java)
> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)
**77** **Group:** `com.microsoft.jfr` **Name:** `jfr-streaming` **Version:** `1.2.0`
**75** **Group:** `com.microsoft.jfr` **Name:** `jfr-streaming` **Version:** `1.2.0`
> - **POM Project URL**: [https://github.com/Microsoft/jfr-streaming](https://github.com/Microsoft/jfr-streaming)
> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)
**78** **Group:** `org.slf4j` **Name:** `jcl-over-slf4j` **Version:** `2.0.12`
**76** **Group:** `org.slf4j` **Name:** `jcl-over-slf4j` **Version:** `2.0.12`
> - **Project URL**: [http://www.slf4j.org](http://www.slf4j.org)
> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)
> - **Embedded license files**: [jcl-over-slf4j-2.0.12.jar/META-INF/LICENSE.txt](jcl-over-slf4j-2.0.12.jar/META-INF/LICENSE.txt)
**79** **Group:** `org.slf4j` **Name:** `slf4j-api` **Version:** `2.0.12`
**77** **Group:** `org.slf4j` **Name:** `slf4j-api` **Version:** `2.0.12`
> - **Project URL**: [http://www.slf4j.org](http://www.slf4j.org)
> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)
> - **Embedded license files**: [slf4j-api-2.0.12.jar/META-INF/LICENSE.txt](slf4j-api-2.0.12.jar/META-INF/LICENSE.txt)
## MIT-0
**80** **Group:** `org.reactivestreams` **Name:** `reactive-streams` **Version:** `1.0.4`
**78** **Group:** `org.reactivestreams` **Name:** `reactive-streams` **Version:** `1.0.4`
> - **Manifest Project URL**: [http://reactive-streams.org](http://reactive-streams.org)
> - **POM Project URL**: [http://www.reactive-streams.org/](http://www.reactive-streams.org/)
> - **POM License**: MIT-0 - [https://spdx.org/licenses/MIT-0.html](https://spdx.org/licenses/MIT-0.html)

Просмотреть файл

@ -99,9 +99,9 @@ abstract class ConnectionStringOverridesTest {
// and metrics too
List<Envelope> clientMetrics =
testing.mockedIngestion.waitForMetricItems("http.client.duration", 1);
testing.mockedIngestion.waitForMetricItems("http.client.request.duration", 1);
List<Envelope> serverMetrics =
testing.mockedIngestion.waitForMetricItems("http.server.duration", 1);
testing.mockedIngestion.waitForMetricItems("http.server.request.duration", 1);
verifyHttpClientPreAggregatedMetrics(clientMetrics, iKey);
verifyHttpServerPreAggregatedMetrics(serverMetrics, iKey);

Просмотреть файл

@ -21,7 +21,8 @@ public class TestController {
@GetMapping("/serverHeaders")
public String serverHeaders(HttpServletResponse response) {
response.setHeader("abc", "testing123");
response.setHeader("abc-def", "testing123");
return "OK!";
}
@ -36,7 +37,7 @@ public class TestController {
URL obj = new URL("https://mock.codes/200");
HttpURLConnection connection = (HttpURLConnection) obj.openConnection();
connection.setRequestProperty("abc", nope ? "nope" : "testing123");
connection.setRequestProperty("abc-def", nope ? "nope" : "testing123");
// calling getContentType() first, since this triggered a bug previously in the instrumentation
// previously
connection.getContentType();

Просмотреть файл

@ -0,0 +1,84 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.microsoft.applicationinsights.smoketest;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_11;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_11_OPENJ9;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_17;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_19;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_20;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8_OPENJ9;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8_OPENJ9;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@UseAgent("applicationinsights-old-semconv.json")
abstract class HttpHeadersOldSemconvTest {
@RegisterExtension static final SmokeTestExtension testing = SmokeTestExtension.create();
@Test
@TargetUri("/serverHeaders")
void testServerHeaders() throws Exception {
Telemetry telemetry = testing.getTelemetry(0);
assertThat(telemetry.rd.getProperties().get("http.response.header.abc-def"))
.isEqualTo("testing123");
assertThat(telemetry.rd.getProperties()).containsKey("http.request.header.host");
assertThat(telemetry.rd.getProperties()).hasSize(3);
assertThat(telemetry.rd.getProperties())
.containsEntry("_MS.ProcessedByMetricExtractors", "True");
assertThat(telemetry.rd.getSuccess()).isTrue();
}
@Test
@TargetUri("/clientHeaders")
void testClientHeaders() throws Exception {
Telemetry telemetry = testing.getTelemetry(1);
assertThat(telemetry.rd.getProperties()).containsKey("http.request.header.host");
assertThat(telemetry.rd.getProperties()).hasSize(2);
assertThat(telemetry.rd.getProperties())
.containsEntry("_MS.ProcessedByMetricExtractors", "True");
assertThat(telemetry.rd.getSuccess()).isTrue();
assertThat(telemetry.rdd1.getProperties().get("http.request.header.abc-def"))
.isEqualTo("testing123");
assertThat(telemetry.rdd1.getProperties()).containsKey("http.response.header.date");
assertThat(telemetry.rdd1.getProperties()).hasSize(3);
assertThat(telemetry.rdd1.getProperties())
.containsEntry("_MS.ProcessedByMetricExtractors", "True");
assertThat(telemetry.rdd1.getSuccess()).isTrue();
}
@Environment(TOMCAT_8_JAVA_8)
static class Tomcat8Java8Test extends HttpHeadersOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_8_OPENJ9)
static class Tomcat8Java8OpenJ9Test extends HttpHeadersOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_11)
static class Tomcat8Java11Test extends HttpHeadersOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_11_OPENJ9)
static class Tomcat8Java11OpenJ9Test extends HttpHeadersOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_17)
static class Tomcat8Java17Test extends HttpHeadersOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_19)
static class Tomcat8Java19Test extends HttpHeadersOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_20)
static class Tomcat8Java20Test extends HttpHeadersOldSemconvTest {}
@Environment(WILDFLY_13_JAVA_8)
static class Wildfly13Java8Test extends HttpHeadersOldSemconvTest {}
@Environment(WILDFLY_13_JAVA_8_OPENJ9)
static class Wildfly13Java8OpenJ9Test extends HttpHeadersOldSemconvTest {}
}

Просмотреть файл

@ -27,7 +27,7 @@ abstract class HttpHeadersTest {
void testServerHeaders() throws Exception {
Telemetry telemetry = testing.getTelemetry(0);
assertThat(telemetry.rd.getProperties().get("http.response.header.abc"))
assertThat(telemetry.rd.getProperties().get("http.response.header.abc-def"))
.isEqualTo("testing123");
assertThat(telemetry.rd.getProperties()).containsKey("http.request.header.host");
assertThat(telemetry.rd.getProperties()).hasSize(3);
@ -46,7 +46,7 @@ abstract class HttpHeadersTest {
assertThat(telemetry.rd.getProperties())
.containsEntry("_MS.ProcessedByMetricExtractors", "True");
assertThat(telemetry.rd.getSuccess()).isTrue();
assertThat(telemetry.rdd1.getProperties().get("http.request.header.abc"))
assertThat(telemetry.rdd1.getProperties().get("http.request.header.abc-def"))
.isEqualTo("testing123");
assertThat(telemetry.rdd1.getProperties()).containsKey("http.response.header.date");
assertThat(telemetry.rdd1.getProperties()).hasSize(3);

Просмотреть файл

@ -0,0 +1,41 @@
{
"role": {
"name": "testrolename",
"instance": "testroleinstance"
},
"sampling": {
"percentage": 100
},
"preview": {
"captureHttpServerHeaders": {
"requestHeaders": [
"host"
],
"responseHeaders": [
"abc-def"
]
},
"captureHttpClientHeaders": {
"requestHeaders": [
"abc-def"
],
"responseHeaders": [
"date"
]
},
"sampling": {
"overrides": [
{
"attributes": [
{
"key": "http.request.header.abc_def",
"value": "nope",
"matchType": "strict"
}
],
"percentage": 0
}
]
}
}
}

Просмотреть файл

@ -12,12 +12,12 @@
"host"
],
"responseHeaders": [
"abc"
"abc-def"
]
},
"captureHttpClientHeaders": {
"requestHeaders": [
"abc"
"abc-def"
],
"responseHeaders": [
"date"
@ -28,7 +28,7 @@
{
"attributes": [
{
"key": "http.request.header.abc",
"key": "http.request.header.abc-def",
"value": "nope",
"matchType": "strict"
}

Просмотреть файл

@ -43,6 +43,12 @@ public class HttpPreaggregatedMetricsServlet extends HttpServlet {
private void httpUrlConnection(String url) throws IOException {
URL obj = new URL(url);
HttpURLConnection connection = (HttpURLConnection) obj.openConnection();
try {
// sleep is needed so we can verify a minimum bound on the server pre-aggregated metric
Thread.sleep(200);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
InputStream content = connection.getInputStream();
// drain the content
byte[] buffer = new byte[1024];

Просмотреть файл

@ -46,9 +46,9 @@ abstract class HttpPreaggregatedMetricsTest {
verifyHttpclientRequestsAndDependencies("https://mock.codes/200?q=spaces%20test");
List<Envelope> clientMetrics =
testing.mockedIngestion.waitForMetricItems("http.client.duration", 3);
testing.mockedIngestion.waitForMetricItems("http.client.request.duration", 3);
List<Envelope> serverMetrics =
testing.mockedIngestion.waitForMetricItems("http.server.duration", 1);
testing.mockedIngestion.waitForMetricItems("http.server.request.duration", 1);
verifyHttpClientPreAggregatedMetrics(clientMetrics);
verifyHttpServerPreAggregatedMetrics(serverMetrics, synthetic);
@ -161,9 +161,10 @@ abstract class HttpPreaggregatedMetricsTest {
assertThat(dataPoints).hasSize(1);
DataPoint dataPoint = dataPoints.get(0);
assertThat(dataPoint.getCount()).isEqualTo(1);
assertThat(dataPoint.getValue()).isGreaterThan(0d).isLessThan(60 * 1000.0);
assertThat(dataPoint.getMin()).isGreaterThan(0d).isLessThan(60 * 1000.0);
assertThat(dataPoint.getMax()).isGreaterThan(0d).isLessThan(60 * 1000.0);
double greaterThan = type.equals("server") ? 200.0f : 0.0f;
assertThat(dataPoint.getValue()).isGreaterThan(greaterThan).isLessThan(60 * 1000.0);
assertThat(dataPoint.getMin() * 1000).isGreaterThan(greaterThan).isLessThan(60 * 1000.0);
assertThat(dataPoint.getMax() * 1000).isGreaterThan(greaterThan).isLessThan(60 * 1000.0);
Map<String, String> properties = metricData.getProperties();
String expectedSuccess = "200".equals(resultCode) ? "True" : "False";
if ("client".equals(type)) {

Просмотреть файл

@ -88,9 +88,9 @@ class InstrumentationKeyOverridesTest {
// and metrics too
List<Envelope> clientMetrics =
testing.mockedIngestion.waitForMetricItems("http.client.duration", 1);
testing.mockedIngestion.waitForMetricItems("http.client.request.duration", 1);
List<Envelope> serverMetrics =
testing.mockedIngestion.waitForMetricItems("http.server.duration", 1);
testing.mockedIngestion.waitForMetricItems("http.server.request.duration", 1);
verifyHttpClientPreAggregatedMetrics(clientMetrics, iKey);
verifyHttpServerPreAggregatedMetrics(serverMetrics, iKey);

Просмотреть файл

@ -7,5 +7,5 @@ dependencies {
exclude("org.springframework.boot", "spring-boot-starter-tomcat")
}
implementation("io.opentelemetry:opentelemetry-api:1.27.0")
implementation("io.opentelemetry:opentelemetry-semconv:1.27.0-alpha")
implementation("io.opentelemetry.semconv:opentelemetry-semconv:1.22.0-alpha")
}

Просмотреть файл

@ -5,7 +5,7 @@ package com.microsoft.applicationinsights.smoketestapp;
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.logs.Severity;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import io.opentelemetry.semconv.SemanticAttributes;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.springframework.web.bind.annotation.GetMapping;

Просмотреть файл

@ -35,7 +35,6 @@ public class TestController {
GlobalOpenTelemetry.get()
.getMeter("trackDoubleHistogramMetric")
.histogramBuilder("trackDoubleHistogramMetric")
.setDescription("http.client.duration")
.setUnit("ms")
.build();
@ -44,7 +43,6 @@ public class TestController {
.getMeter("trackLongHistogramMetric")
.histogramBuilder("trackLongHistogramMetric")
.ofLongs()
.setDescription("http.client.duration")
.setUnit("ms")
.build();

Просмотреть файл

@ -7,7 +7,6 @@ dependencies {
exclude("spring-boot-starter-tomcat")
}
implementation("io.opentelemetry:opentelemetry-api:1.30.0")
implementation("io.opentelemetry:opentelemetry-semconv:1.30.0-alpha")
implementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:1.30.0")
implementation("org.springframework.boot:spring-boot-test:2.7.16")
implementation("io.spring.dependency-management:io.spring.dependency-management.gradle.plugin:1.1.3")

Просмотреть файл

@ -52,14 +52,15 @@ abstract class OtlpTest {
Envelope standardMetricEnvelope = standardMetricsList.get(0);
MetricData standardMetricData =
(MetricData) ((Data<?>) standardMetricEnvelope.getData()).getBaseData();
assertThat(standardMetricData.getMetrics().get(0).getName()).isEqualTo("http.server.duration");
assertThat(standardMetricData.getMetrics().get(0).getName())
.isEqualTo("http.server.request.duration");
assertThat(standardMetricData.getProperties().get("_MS.IsAutocollected")).isEqualTo("True");
// verify Statsbeat sent to the breeze endpoint
verifyStatsbeatSentToBreezeEndpoint();
// verify custom histogram metric 'histogram-test-otlp-exporter' and otel metric
// 'http.server.duration' sent to OTLP endpoint
// 'http.server.request.duration' sent to OTLP endpoint
// verify Statsbeat doesn't get sent to OTLP endpoint
verifyMetricsSentToOtlpEndpoint();
}
@ -81,7 +82,7 @@ abstract class OtlpTest {
testing.mockedOtlpIngestion.extractMetricsFromRequests(requests);
assertThat(metrics)
.extracting(Metric::getName)
.contains("histogram-test-otlp-exporter", "http.server.duration")
.contains("histogram-test-otlp-exporter", "http.server.request.duration")
.doesNotContain("Attach", "Feature"); // statsbeat
});
}
@ -97,7 +98,7 @@ abstract class OtlpTest {
private static boolean isStandardMetric(Envelope envelope) {
if (envelope.getData().getBaseType().equals("MetricData")) {
MetricData data = (MetricData) ((Data<?>) envelope.getData()).getBaseData();
return data.getMetrics().get(0).getName().equals("http.server.duration");
return data.getMetrics().get(0).getName().equals("http.server.request.duration");
}
return false;
}

Просмотреть файл

@ -67,9 +67,9 @@ abstract class PreAggMetricsWithRoleNameOverridesAndSamplingTest {
for (Envelope envelope : metricsEnvelops) {
MetricData metricData = (MetricData) ((Data<?>) envelope.getData()).getBaseData();
String name = metricData.getMetrics().get(0).getName();
if ("http.client.duration".equals(name)) {
if ("http.client.request.duration".equals(name)) {
clientMetrics.add(envelope);
} else if ("http.server.duration".equals(name)) {
} else if ("http.server.request.duration".equals(name)) {
serverMetrics.add(envelope);
}
}

Просмотреть файл

@ -58,13 +58,13 @@ abstract class AksRoleNameOverridesTest {
assertThat(mdList.get(0).getTags()).containsEntry("ai.cloud.roleInstance", roleInstance);
List<Envelope> clientMetrics =
testing.mockedIngestion.waitForMetricItems("http.client.duration", 1);
testing.mockedIngestion.waitForMetricItems("http.client.request.duration", 1);
Map<String, String> clientTags = clientMetrics.get(0).getTags();
assertThat(clientTags.get("ai.cloud.role")).isEqualTo(roleName);
assertThat(clientTags.get("ai.cloud.roleInstance")).isEqualTo(roleInstance);
List<Envelope> serverMetrics =
testing.mockedIngestion.waitForMetricItems("http.server.duration", 1);
testing.mockedIngestion.waitForMetricItems("http.server.request.duration", 1);
Map<String, String> serverTags = serverMetrics.get(0).getTags();
assertThat(serverTags.get("ai.cloud.role")).isEqualTo(roleName);
assertThat(serverTags.get("ai.cloud.roleInstance")).isEqualTo(roleInstance);

Просмотреть файл

@ -99,9 +99,9 @@ abstract class RoleNameOverridesTest {
// and metrics too
List<Envelope> clientMetrics =
testing.mockedIngestion.waitForMetricItems("http.client.duration", 1);
testing.mockedIngestion.waitForMetricItems("http.client.request.duration", 1);
List<Envelope> serverMetrics =
testing.mockedIngestion.waitForMetricItems("http.server.duration", 1);
testing.mockedIngestion.waitForMetricItems("http.server.request.duration", 1);
verifyHttpClientPreAggregatedMetrics(clientMetrics, roleName);
verifyHttpServerPreAggregatedMetrics(serverMetrics, roleName);

Просмотреть файл

@ -0,0 +1,127 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.microsoft.applicationinsights.smoketest;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_11;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_11_OPENJ9;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_17;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_19;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_20;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8_OPENJ9;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8_OPENJ9;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.assertj.core.api.Assertions.assertThat;
import com.microsoft.applicationinsights.smoketest.schemav2.Data;
import com.microsoft.applicationinsights.smoketest.schemav2.Envelope;
import com.microsoft.applicationinsights.smoketest.schemav2.RemoteDependencyData;
import com.microsoft.applicationinsights.smoketest.schemav2.RequestData;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@UseAgent("applicationinsights-old-semconv.json")
abstract class SamplingOverridesOldSemconvTest {
@RegisterExtension static final SmokeTestExtension testing = SmokeTestExtension.create();
@Test
@TargetUri(value = "/health-check", callCount = 100)
void testSampling() throws Exception {
// super super low chance that number of sampled requests is less than 25
long start = System.nanoTime();
while (testing.mockedIngestion.getCountForType("RequestData") < 25
&& NANOSECONDS.toSeconds(System.nanoTime() - start) < 10) {}
// wait ten more seconds to before checking that we didn't receive too many
Thread.sleep(SECONDS.toMillis(10));
int requestCount = testing.mockedIngestion.getCountForType("RequestData");
int dependencyCount = testing.mockedIngestion.getCountForType("RemoteDependencyData");
int logCount = testing.mockedIngestion.getCountForType("MessageData");
// super super low chance that number of sampled requests/dependencies
// is less than 25 or greater than 75
assertThat(requestCount).isGreaterThanOrEqualTo(25);
assertThat(dependencyCount).isGreaterThanOrEqualTo(25);
assertThat(requestCount).isLessThanOrEqualTo(75);
assertThat(dependencyCount).isLessThanOrEqualTo(75);
assertThat(logCount).isEqualTo(100);
}
@Test
@TargetUri("/noisy-jdbc")
void testNoisyJdbc() throws Exception {
List<Envelope> rdList = testing.mockedIngestion.waitForItems("RequestData", 1);
Thread.sleep(10000);
assertThat(testing.mockedIngestion.getCountForType("RemoteDependencyData")).isZero();
Envelope rdEnvelope = rdList.get(0);
assertThat(rdEnvelope.getSampleRate()).isNull();
RequestData rd = (RequestData) ((Data<?>) rdEnvelope.getData()).getBaseData();
assertThat(rd.getSuccess()).isTrue();
}
@Test
@TargetUri("/regular-jdbc")
void testRegularJdbc() throws Exception {
List<Envelope> rdList = testing.mockedIngestion.waitForItems("RequestData", 1);
Envelope rdEnvelope = rdList.get(0);
String operationId = rdEnvelope.getTags().get("ai.operation.id");
List<Envelope> rddList =
testing.mockedIngestion.waitForItemsInOperation("RemoteDependencyData", 1, operationId);
assertThat(testing.mockedIngestion.getCountForType("EventData")).isZero();
Envelope rddEnvelope = rddList.get(0);
assertThat(rdEnvelope.getSampleRate()).isNull();
assertThat(rddEnvelope.getSampleRate()).isNull();
RequestData rd = (RequestData) ((Data<?>) rdEnvelope.getData()).getBaseData();
RemoteDependencyData rdd =
(RemoteDependencyData) ((Data<?>) rddEnvelope.getData()).getBaseData();
assertThat(rd.getSuccess()).isTrue();
assertThat(rdd.getType()).isEqualTo("SQL");
assertThat(rdd.getTarget()).isEqualTo("hsqldb | testdb");
assertThat(rdd.getName()).isEqualTo("SELECT testdb.abc");
assertThat(rdd.getData()).isEqualTo("select * from abc");
assertThat(rdd.getSuccess()).isTrue();
SmokeTestExtension.assertParentChild(rd, rdEnvelope, rddEnvelope, "GET /SamplingOverrides/*");
}
@Environment(TOMCAT_8_JAVA_8)
static class Tomcat8Java8Test extends SamplingOverridesOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_8_OPENJ9)
static class Tomcat8Java8OpenJ9Test extends SamplingOverridesOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_11)
static class Tomcat8Java11Test extends SamplingOverridesOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_11_OPENJ9)
static class Tomcat8Java11OpenJ9Test extends SamplingOverridesOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_17)
static class Tomcat8Java17Test extends SamplingOverridesOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_19)
static class Tomcat8Java19Test extends SamplingOverridesOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_20)
static class Tomcat8Java20Test extends SamplingOverridesOldSemconvTest {}
@Environment(WILDFLY_13_JAVA_8)
static class Wildfly13Java8Test extends SamplingOverridesOldSemconvTest {}
@Environment(WILDFLY_13_JAVA_8_OPENJ9)
static class Wildfly13Java8OpenJ9Test extends SamplingOverridesOldSemconvTest {}
}

Просмотреть файл

@ -0,0 +1,43 @@
{
"role": {
"name": "testrolename",
"instance": "testroleinstance"
},
"sampling": {
"percentage": 100
},
"preview": {
"sampling": {
"overrides": [
{
"telemetryType": "request",
"attributes": [
{
"key": "http.url",
"value": ".*/health-check",
"matchType": "regexp"
}
],
"percentage": 50,
"id": "filter out health check"
},
{
"telemetryType": "dependency",
"attributes": [
{
"key": "db.statement",
"value": "select count(*) from abc",
"matchType": "strict"
}
],
"percentage": 0,
"id": "filter out noisy jdbc"
},
{
"telemetryType": "trace",
"percentage": 100
}
]
}
}
}

Просмотреть файл

@ -13,7 +13,7 @@
"telemetryType": "request",
"attributes": [
{
"key": "http.url",
"key": "url.path",
"value": ".*/health-check",
"matchType": "regexp"
}

Просмотреть файл

@ -33,7 +33,6 @@ abstract class SpringBootAutoTest {
.hasEntrySatisfying(
"ai.user.userAgent", v -> assertThat(v).startsWith("Apache-HttpClient/"));
assertThat(telemetry.rdEnvelope.getTags()).containsKey("ai.location.ip");
assertThat(telemetry.rd.getName()).isEqualTo("GET /SpringBootAuto/test");
assertThat(telemetry.rd.getUrl()).matches("http://localhost:[0-9]+/SpringBootAuto/test");
assertThat(telemetry.rd.getResponseCode()).isEqualTo("200");

Просмотреть файл

@ -9,6 +9,7 @@ import io.opentelemetry.api.trace.Span;
import java.util.Arrays;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.slf4j.MDC;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@ -37,6 +38,14 @@ public class TestController {
return "Test sensitive data in URL";
}
@GetMapping("/delete-existing-log-attribute")
public String deleteExistingLogAttribute() {
MDC.put("toBeDeletedAttributeKey", "toBeDeletedAttributeValue");
logger.info("custom property from MDC");
return "delete existing log attribute";
}
@GetMapping("/test-non-string-strict-span-attributes")
public String testNonStringStrictSpanAttributes() {
Span.current()

Просмотреть файл

@ -0,0 +1,72 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.microsoft.applicationinsights.smoketest;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_11;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_11_OPENJ9;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_17;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_19;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_20;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8_OPENJ9;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8_OPENJ9;
import static org.assertj.core.api.Assertions.assertThat;
import com.microsoft.applicationinsights.smoketest.schemav2.MessageData;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@UseAgent("applicationinsights-delete-existing-attribute.json")
abstract class TelemetryProcessorDeleteLogAttribute {
@RegisterExtension static final SmokeTestExtension testing = SmokeTestExtension.create();
@Test
@TargetUri("/delete-existing-log-attribute")
void deleteExistingLogAttribute() throws Exception {
Telemetry telemetry = testing.getTelemetry(0);
assertThat(telemetry.rd.getName())
.isEqualTo("GET /TelemetryProcessors/delete-existing-log-attribute");
assertThat(telemetry.rd.getProperties().get("toBeDeletedAttributeKey")).isNull();
List<MessageData> logs = testing.mockedIngestion.getMessageDataInRequest(1);
MessageData log = logs.get(0);
assertThat(log.getMessage()).isEqualTo("custom property from MDC");
Map<String, String> properties = log.getProperties();
assertThat(properties.get("toBeDeletedAttributeKey")).isNull();
assertThat(properties.get("LoggerName")).isEqualTo("smoketestappcontroller");
assertThat(properties.get("SourceType")).isEqualTo("Logger");
assertThat(properties.get("ThreadName")).isNotNull();
}
@Environment(TOMCAT_8_JAVA_8)
static class Tomcat8Java8Test extends TelemetryProcessorDeleteLogAttribute {}
@Environment(TOMCAT_8_JAVA_8_OPENJ9)
static class Tomcat8Java8OpenJ9Test extends TelemetryProcessorDeleteLogAttribute {}
@Environment(TOMCAT_8_JAVA_11)
static class Tomcat8Java11Test extends TelemetryProcessorDeleteLogAttribute {}
@Environment(TOMCAT_8_JAVA_11_OPENJ9)
static class Tomcat8Java11OpenJ9Test extends TelemetryProcessorDeleteLogAttribute {}
@Environment(TOMCAT_8_JAVA_17)
static class Tomcat8Java17Test extends TelemetryProcessorDeleteLogAttribute {}
@Environment(TOMCAT_8_JAVA_19)
static class Tomcat8Java19Test extends TelemetryProcessorDeleteLogAttribute {}
@Environment(TOMCAT_8_JAVA_20)
static class Tomcat8Java20Test extends TelemetryProcessorDeleteLogAttribute {}
@Environment(WILDFLY_13_JAVA_8)
static class Wildfly13Java8Test extends TelemetryProcessorDeleteLogAttribute {}
@Environment(WILDFLY_13_JAVA_8_OPENJ9)
static class Wildfly13Java8OpenJ9Test extends TelemetryProcessorDeleteLogAttribute {}
}

Просмотреть файл

@ -0,0 +1,102 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.microsoft.applicationinsights.smoketest;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_11;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_11_OPENJ9;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_17;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_19;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_20;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8_OPENJ9;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8_OPENJ9;
import static org.assertj.core.api.Assertions.assertThat;
import com.microsoft.applicationinsights.smoketest.schemav2.MessageData;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@UseAgent("applicationinsights-old-semconv.json")
abstract class TelemetryProcessorsOldSemconvTest {
@RegisterExtension static final SmokeTestExtension testing = SmokeTestExtension.create();
@Test
@TargetUri("/test")
void doMostBasicTest() throws Exception {
Telemetry telemetry = testing.getTelemetry(0);
assertThat(telemetry.rd.getProperties()).containsEntry("attribute1", "testValue1");
assertThat(telemetry.rd.getProperties()).containsEntry("attribute2", "testValue2");
assertThat(telemetry.rd.getProperties()).containsEntry("sensitiveAttribute1", "sensitiveData1");
assertThat(telemetry.rd.getProperties()).containsEntry("httpPath", "/TelemetryProcessors/test");
assertThat(telemetry.rd.getProperties()).hasSize(5);
assertThat(telemetry.rd.getProperties())
.containsEntry("_MS.ProcessedByMetricExtractors", "True");
assertThat(telemetry.rd.getSuccess()).isTrue();
// Log processor test
List<MessageData> logs = testing.mockedIngestion.getMessageDataInRequest(1);
MessageData md1 = logs.get(0);
assertThat(md1.getMessage()).isEqualTo("testValue1::testValue2");
}
@Test
@TargetUri("/sensitivedata")
void doSimpleTestPiiData() throws Exception {
Telemetry telemetry = testing.getTelemetry(0);
assertThat(telemetry.rd.getName()).isEqualTo("testValue1::testValue2");
assertThat(telemetry.rd.getProperties()).containsEntry("attribute1", "testValue1");
assertThat(telemetry.rd.getProperties()).containsEntry("attribute2", "testValue2");
assertThat(telemetry.rd.getProperties()).containsEntry("sensitiveAttribute1", "redacted");
assertThat(telemetry.rd.getProperties())
.containsEntry("httpPath", "/TelemetryProcessors/sensitivedata");
assertThat(telemetry.rd.getProperties()).hasSize(5);
assertThat(telemetry.rd.getProperties())
.containsEntry("_MS.ProcessedByMetricExtractors", "True");
assertThat(telemetry.rd.getSuccess()).isTrue();
}
@Test
@TargetUri("/user/123")
void shouldMask() throws Exception {
Telemetry telemetry = testing.getTelemetry(0);
String url = telemetry.rd.getUrl();
assertThat(url).startsWith("http://localhost:").endsWith("/TelemetryProcessors/user/***");
// We don't test the port that is different for each test execution
}
@Environment(TOMCAT_8_JAVA_8)
static class Tomcat8Java8Test extends TelemetryProcessorsOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_8_OPENJ9)
static class Tomcat8Java8OpenJ9Test extends TelemetryProcessorsOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_11)
static class Tomcat8Java11Test extends TelemetryProcessorsOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_11_OPENJ9)
static class Tomcat8Java11OpenJ9Test extends TelemetryProcessorsOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_17)
static class Tomcat8Java17Test extends TelemetryProcessorsOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_19)
static class Tomcat8Java19Test extends TelemetryProcessorsOldSemconvTest {}
@Environment(TOMCAT_8_JAVA_20)
static class Tomcat8Java20Test extends TelemetryProcessorsOldSemconvTest {}
@Environment(WILDFLY_13_JAVA_8)
static class Wildfly13Java8Test extends TelemetryProcessorsOldSemconvTest {}
@Environment(WILDFLY_13_JAVA_8_OPENJ9)
static class Wildfly13Java8OpenJ9Test extends TelemetryProcessorsOldSemconvTest {}
}

Просмотреть файл

@ -32,7 +32,7 @@ abstract class TelemetryProcessorsTest {
assertThat(telemetry.rd.getProperties()).containsEntry("attribute1", "testValue1");
assertThat(telemetry.rd.getProperties()).containsEntry("attribute2", "testValue2");
assertThat(telemetry.rd.getProperties()).containsEntry("sensitiveAttribute1", "sensitiveData1");
assertThat(telemetry.rd.getProperties().get("httpPath")).isEqualTo("/TelemetryProcessors/test");
assertThat(telemetry.rd.getProperties()).containsEntry("httpPath", "/TelemetryProcessors/test");
assertThat(telemetry.rd.getProperties()).hasSize(5);
assertThat(telemetry.rd.getProperties())
.containsEntry("_MS.ProcessedByMetricExtractors", "True");
@ -52,8 +52,8 @@ abstract class TelemetryProcessorsTest {
assertThat(telemetry.rd.getProperties()).containsEntry("attribute1", "testValue1");
assertThat(telemetry.rd.getProperties()).containsEntry("attribute2", "testValue2");
assertThat(telemetry.rd.getProperties()).containsEntry("sensitiveAttribute1", "redacted");
assertThat(telemetry.rd.getProperties().get("httpPath"))
.isEqualTo("/TelemetryProcessors/sensitivedata");
assertThat(telemetry.rd.getProperties())
.containsEntry("httpPath", "/TelemetryProcessors/sensitivedata");
assertThat(telemetry.rd.getProperties()).hasSize(5);
assertThat(telemetry.rd.getProperties())
.containsEntry("_MS.ProcessedByMetricExtractors", "True");

Просмотреть файл

@ -0,0 +1,24 @@
{
"role": {
"name": "testrolename",
"instance": "testroleinstance"
},
"sampling": {
"percentage": 100
},
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "toBeDeletedAttributeKey",
"action": "delete"
}
],
"id": "attributes/delete"
}
]
}
}

Просмотреть файл

@ -0,0 +1,114 @@
{
"role": {
"name": "testrolename",
"instance": "testroleinstance"
},
"sampling": {
"percentage": 100
},
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"value": "testValue",
"action": "insert"
},
{
"key": "attribute2",
"value": "testValue2",
"action": "insert"
},
{
"key": "sensitiveAttribute1",
"value": "sensitiveData1",
"action": "insert"
}
],
"id": "attributes/insert"
},
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"value": "testValue1",
"action": "update"
}
],
"id": "attributes/extractHttpMethod"
},
{
"type": "attribute",
"include": {
"matchType": "regexp",
"spanNames": [
"/sensitivedata"
]
},
"actions": [
{
"key": "sensitiveAttribute1",
"value": "redacted",
"action": "update"
}
],
"id": "attributes/maskSensitiveData"
},
{
"type": "span",
"include": {
"matchType": "regexp",
"spanNames": [
"/sensitivedata"
]
},
"name": {
"fromAttributes": [
"attribute1",
"attribute2"
],
"separator": "::"
},
"id": "attributes/fromAttributeTest"
},
{
"type": "attribute",
"actions": [
{
"key": "http.url",
"pattern": "https?://[^/]+(?<httpPath>/[^?]*)",
"action": "extract"
}
],
"id": "attributes/extract"
},
{
"type": "attribute",
"actions": [
{
"key": "http.url",
"pattern": "user\\/\\d+",
"replace": "user\\/***",
"action": "mask"
}
],
"id": "attributes/mask"
},
{
"type": "log",
"body": {
"fromAttributes": [
"attribute1",
"attribute2"
],
"separator": "::"
},
"id": "log/fromAttribute"
}
]
}
}

Просмотреть файл

@ -78,8 +78,8 @@
"type": "attribute",
"actions": [
{
"key": "http.url",
"pattern": "https?://[^/]+(?<httpPath>/[^?]*)",
"key": "url.path",
"pattern": "(?<httpPath>/[^?]*)",
"action": "extract"
}
],
@ -89,7 +89,7 @@
"type": "attribute",
"actions": [
{
"key": "http.url",
"key": "url.path",
"pattern": "user\\/\\d+",
"replace": "user\\/***",
"action": "mask"