Support stable HTTP semconv (#3418)
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:
Родитель
bb6c9d3e71
Коммит
c1fa18b58d
|
@ -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"
|
||||
|
|
Загрузка…
Ссылка в новой задаче