Inline incubating attributes + central semconv-incubating dependency (#1298)
Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
This commit is contained in:
parent
516aed9fdf
commit
aa5b65a649
|
@ -12,7 +12,7 @@ dependencies {
|
|||
api("io.opentelemetry:opentelemetry-sdk")
|
||||
|
||||
implementation("io.opentelemetry.semconv:opentelemetry-semconv")
|
||||
implementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating:1.25.0-alpha")
|
||||
testImplementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating")
|
||||
|
||||
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
|
||||
|
||||
|
|
|
@ -5,13 +5,13 @@
|
|||
|
||||
package io.opentelemetry.contrib.aws.resource;
|
||||
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PLATFORM;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PROVIDER;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudPlatformValues.AWS_ELASTIC_BEANSTALK;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudProviderValues.AWS;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.SERVICE_INSTANCE_ID;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.SERVICE_NAMESPACE;
|
||||
import static io.opentelemetry.semconv.ServiceAttributes.SERVICE_VERSION;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PLATFORM;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PROVIDER;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.AWS_ELASTIC_BEANSTALK;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudProviderValues.AWS;
|
||||
import static io.opentelemetry.semconv.incubating.ServiceIncubatingAttributes.SERVICE_INSTANCE_ID;
|
||||
import static io.opentelemetry.semconv.incubating.ServiceIncubatingAttributes.SERVICE_NAMESPACE;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonFactory;
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
package io.opentelemetry.contrib.aws.resource;
|
||||
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PROVIDER;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PROVIDER;
|
||||
|
||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
||||
import io.opentelemetry.sdk.autoconfigure.spi.internal.ConditionalResourceProvider;
|
||||
|
|
|
@ -5,16 +5,16 @@
|
|||
|
||||
package io.opentelemetry.contrib.aws.resource;
|
||||
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_ACCOUNT_ID;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_AVAILABILITY_ZONE;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PLATFORM;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PROVIDER;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_REGION;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.AWS_EC2;
|
||||
import static io.opentelemetry.semconv.incubating.HostIncubatingAttributes.HOST_ID;
|
||||
import static io.opentelemetry.semconv.incubating.HostIncubatingAttributes.HOST_IMAGE_ID;
|
||||
import static io.opentelemetry.semconv.incubating.HostIncubatingAttributes.HOST_NAME;
|
||||
import static io.opentelemetry.semconv.incubating.HostIncubatingAttributes.HOST_TYPE;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_ACCOUNT_ID;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_AVAILABILITY_ZONE;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PLATFORM;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PROVIDER;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_REGION;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudPlatformValues.AWS_EC2;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.HOST_ID;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.HOST_IMAGE_ID;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.HOST_NAME;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.HOST_TYPE;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonFactory;
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
|
@ -23,7 +23,6 @@ import io.opentelemetry.api.common.Attributes;
|
|||
import io.opentelemetry.api.common.AttributesBuilder;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import io.opentelemetry.semconv.SchemaUrls;
|
||||
import io.opentelemetry.semconv.incubating.CloudIncubatingAttributes;
|
||||
import java.io.IOException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
@ -90,7 +89,7 @@ public final class Ec2Resource {
|
|||
String hostname = fetchHostname(hostnameUrl, token);
|
||||
|
||||
AttributesBuilder attrBuilders = Attributes.builder();
|
||||
attrBuilders.put(CLOUD_PROVIDER, CloudIncubatingAttributes.CloudProviderValues.AWS);
|
||||
attrBuilders.put(CLOUD_PROVIDER, IncubatingAttributes.CloudProviderValues.AWS);
|
||||
attrBuilders.put(CLOUD_PLATFORM, AWS_EC2);
|
||||
|
||||
try (JsonParser parser = JSON_FACTORY.createParser(identity)) {
|
||||
|
|
|
@ -5,26 +5,26 @@
|
|||
|
||||
package io.opentelemetry.contrib.aws.resource;
|
||||
|
||||
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_ECS_CONTAINER_ARN;
|
||||
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_ECS_LAUNCHTYPE;
|
||||
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_ECS_TASK_ARN;
|
||||
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_ECS_TASK_FAMILY;
|
||||
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_ECS_TASK_REVISION;
|
||||
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_LOG_GROUP_ARNS;
|
||||
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_LOG_GROUP_NAMES;
|
||||
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_LOG_STREAM_ARNS;
|
||||
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_LOG_STREAM_NAMES;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_ACCOUNT_ID;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_AVAILABILITY_ZONE;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PLATFORM;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PROVIDER;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_REGION;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_RESOURCE_ID;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.AWS_ECS;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudProviderValues.AWS;
|
||||
import static io.opentelemetry.semconv.incubating.ContainerIncubatingAttributes.CONTAINER_ID;
|
||||
import static io.opentelemetry.semconv.incubating.ContainerIncubatingAttributes.CONTAINER_IMAGE_NAME;
|
||||
import static io.opentelemetry.semconv.incubating.ContainerIncubatingAttributes.CONTAINER_NAME;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_ECS_CONTAINER_ARN;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_ECS_LAUNCHTYPE;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_ECS_TASK_ARN;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_ECS_TASK_FAMILY;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_ECS_TASK_REVISION;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_LOG_GROUP_ARNS;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_LOG_GROUP_NAMES;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_LOG_STREAM_ARNS;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.AWS_LOG_STREAM_NAMES;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_ACCOUNT_ID;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_AVAILABILITY_ZONE;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PLATFORM;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PROVIDER;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_REGION;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_RESOURCE_ID;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CONTAINER_ID;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CONTAINER_IMAGE_NAME;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CONTAINER_NAME;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudPlatformValues.AWS_ECS;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudProviderValues.AWS;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonFactory;
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
|
||||
package io.opentelemetry.contrib.aws.resource;
|
||||
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PLATFORM;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PROVIDER;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.AWS_EKS;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudProviderValues.AWS;
|
||||
import static io.opentelemetry.semconv.incubating.ContainerIncubatingAttributes.CONTAINER_ID;
|
||||
import static io.opentelemetry.semconv.incubating.K8sIncubatingAttributes.K8S_CLUSTER_NAME;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PLATFORM;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PROVIDER;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CONTAINER_ID;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudPlatformValues.AWS_EKS;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudProviderValues.AWS;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.K8S_CLUSTER_NAME;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonFactory;
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
|
|
|
@ -0,0 +1,86 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.contrib.aws.resource;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Inlines incubating attributes until they are stable, doing this prevents having a direct
|
||||
* dependency on incubating artifact which can conflict with another incubating version.
|
||||
*/
|
||||
class IncubatingAttributes {
|
||||
private IncubatingAttributes() {}
|
||||
|
||||
public static final AttributeKey<String> CLOUD_ACCOUNT_ID =
|
||||
AttributeKey.stringKey("cloud.account.id");
|
||||
public static final AttributeKey<String> CLOUD_AVAILABILITY_ZONE =
|
||||
AttributeKey.stringKey("cloud.availability_zone");
|
||||
public static final AttributeKey<String> CLOUD_PLATFORM =
|
||||
AttributeKey.stringKey("cloud.platform");
|
||||
public static final AttributeKey<String> CLOUD_PROVIDER =
|
||||
AttributeKey.stringKey("cloud.provider");
|
||||
public static final AttributeKey<String> CLOUD_REGION = AttributeKey.stringKey("cloud.region");
|
||||
public static final AttributeKey<String> CLOUD_RESOURCE_ID =
|
||||
AttributeKey.stringKey("cloud.resource_id");
|
||||
|
||||
public static final class CloudPlatformValues {
|
||||
public static final String AWS_EC2 = "aws_ec2";
|
||||
public static final String AWS_ECS = "aws_ecs";
|
||||
public static final String AWS_EKS = "aws_eks";
|
||||
public static final String AWS_LAMBDA = "aws_lambda";
|
||||
public static final String AWS_ELASTIC_BEANSTALK = "aws_elastic_beanstalk";
|
||||
|
||||
private CloudPlatformValues() {}
|
||||
}
|
||||
|
||||
public static final class CloudProviderValues {
|
||||
public static final String AWS = "aws";
|
||||
|
||||
private CloudProviderValues() {}
|
||||
}
|
||||
|
||||
public static final AttributeKey<String> SERVICE_INSTANCE_ID =
|
||||
AttributeKey.stringKey("service.instance.id");
|
||||
public static final AttributeKey<String> SERVICE_NAMESPACE =
|
||||
AttributeKey.stringKey("service.namespace");
|
||||
|
||||
public static final AttributeKey<String> HOST_ID = AttributeKey.stringKey("host.id");
|
||||
public static final AttributeKey<String> HOST_IMAGE_ID = AttributeKey.stringKey("host.image.id");
|
||||
public static final AttributeKey<String> HOST_NAME = AttributeKey.stringKey("host.name");
|
||||
public static final AttributeKey<String> HOST_TYPE = AttributeKey.stringKey("host.type");
|
||||
|
||||
public static final AttributeKey<String> CONTAINER_ID = AttributeKey.stringKey("container.id");
|
||||
public static final AttributeKey<String> CONTAINER_IMAGE_NAME =
|
||||
AttributeKey.stringKey("container.image.name");
|
||||
public static final AttributeKey<String> CONTAINER_NAME =
|
||||
AttributeKey.stringKey("container.name");
|
||||
|
||||
public static final AttributeKey<String> K8S_CLUSTER_NAME =
|
||||
AttributeKey.stringKey("k8s.cluster.name");
|
||||
|
||||
public static final AttributeKey<String> AWS_ECS_CONTAINER_ARN =
|
||||
AttributeKey.stringKey("aws.ecs.container.arn");
|
||||
public static final AttributeKey<String> AWS_ECS_LAUNCHTYPE =
|
||||
AttributeKey.stringKey("aws.ecs.launchtype");
|
||||
public static final AttributeKey<String> AWS_ECS_TASK_ARN =
|
||||
AttributeKey.stringKey("aws.ecs.task.arn");
|
||||
public static final AttributeKey<String> AWS_ECS_TASK_FAMILY =
|
||||
AttributeKey.stringKey("aws.ecs.task.family");
|
||||
public static final AttributeKey<String> AWS_ECS_TASK_REVISION =
|
||||
AttributeKey.stringKey("aws.ecs.task.revision");
|
||||
public static final AttributeKey<List<String>> AWS_LOG_GROUP_ARNS =
|
||||
AttributeKey.stringArrayKey("aws.log.group.arns");
|
||||
public static final AttributeKey<List<String>> AWS_LOG_GROUP_NAMES =
|
||||
AttributeKey.stringArrayKey("aws.log.group.names");
|
||||
public static final AttributeKey<List<String>> AWS_LOG_STREAM_ARNS =
|
||||
AttributeKey.stringArrayKey("aws.log.stream.arns");
|
||||
public static final AttributeKey<List<String>> AWS_LOG_STREAM_NAMES =
|
||||
AttributeKey.stringArrayKey("aws.log.stream.names");
|
||||
|
||||
public static final AttributeKey<String> FAAS_NAME = AttributeKey.stringKey("faas.name");
|
||||
public static final AttributeKey<String> FAAS_VERSION = AttributeKey.stringKey("faas.version");
|
||||
}
|
|
@ -5,13 +5,13 @@
|
|||
|
||||
package io.opentelemetry.contrib.aws.resource;
|
||||
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PLATFORM;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PROVIDER;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_REGION;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.AWS_LAMBDA;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudProviderValues.AWS;
|
||||
import static io.opentelemetry.semconv.incubating.FaasIncubatingAttributes.FAAS_NAME;
|
||||
import static io.opentelemetry.semconv.incubating.FaasIncubatingAttributes.FAAS_VERSION;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PLATFORM;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_PROVIDER;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CLOUD_REGION;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudPlatformValues.AWS_LAMBDA;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.CloudProviderValues.AWS;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.FAAS_NAME;
|
||||
import static io.opentelemetry.contrib.aws.resource.IncubatingAttributes.FAAS_VERSION;
|
||||
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.common.AttributesBuilder;
|
||||
|
|
|
@ -23,6 +23,7 @@ val errorProneVersion = "2.27.1"
|
|||
val prometheusVersion = "0.16.0"
|
||||
val mockitoVersion = "4.11.0"
|
||||
val slf4jVersion = "2.0.13"
|
||||
val semConvVersion = "1.25.0-alpha"
|
||||
|
||||
val CORE_DEPENDENCIES = listOf(
|
||||
"com.google.auto.service:auto-service:${autoServiceVersion}",
|
||||
|
@ -33,6 +34,8 @@ val CORE_DEPENDENCIES = listOf(
|
|||
"com.google.errorprone:error_prone_core:${errorProneVersion}",
|
||||
"io.github.netmikey.logunit:logunit-jul:2.0.0",
|
||||
"io.opentelemetry.proto:opentelemetry-proto:1.0.0-alpha",
|
||||
"io.opentelemetry.semconv:opentelemetry-semconv:${semConvVersion}",
|
||||
"io.opentelemetry.semconv:opentelemetry-semconv-incubating:${semConvVersion}",
|
||||
"io.prometheus:simpleclient:${prometheusVersion}",
|
||||
"io.prometheus:simpleclient_common:${prometheusVersion}",
|
||||
"io.prometheus:simpleclient_httpserver:${prometheusVersion}",
|
||||
|
|
|
@ -15,7 +15,7 @@ dependencies {
|
|||
implementation("com.google.cloud.opentelemetry:detector-resources-support:0.29.0")
|
||||
|
||||
implementation("io.opentelemetry.semconv:opentelemetry-semconv")
|
||||
implementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating:1.25.0-alpha")
|
||||
testImplementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating")
|
||||
|
||||
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
|
||||
|
||||
|
|
|
@ -27,26 +27,26 @@ import static com.google.cloud.opentelemetry.detection.AttributeKeys.SERVERLESS_
|
|||
import static com.google.cloud.opentelemetry.detection.AttributeKeys.SERVERLESS_COMPUTE_INSTANCE_ID;
|
||||
import static com.google.cloud.opentelemetry.detection.AttributeKeys.SERVERLESS_COMPUTE_NAME;
|
||||
import static com.google.cloud.opentelemetry.detection.AttributeKeys.SERVERLESS_COMPUTE_REVISION;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_ACCOUNT_ID;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_AVAILABILITY_ZONE;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PLATFORM;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_PROVIDER;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_REGION;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.GCP_APP_ENGINE;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.GCP_CLOUD_FUNCTIONS;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.GCP_CLOUD_RUN;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.GCP_COMPUTE_ENGINE;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudPlatformValues.GCP_KUBERNETES_ENGINE;
|
||||
import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CloudProviderValues.GCP;
|
||||
import static io.opentelemetry.semconv.incubating.FaasIncubatingAttributes.FAAS_INSTANCE;
|
||||
import static io.opentelemetry.semconv.incubating.FaasIncubatingAttributes.FAAS_NAME;
|
||||
import static io.opentelemetry.semconv.incubating.FaasIncubatingAttributes.FAAS_VERSION;
|
||||
import static io.opentelemetry.semconv.incubating.GcpIncubatingAttributes.GCP_GCE_INSTANCE_HOSTNAME;
|
||||
import static io.opentelemetry.semconv.incubating.GcpIncubatingAttributes.GCP_GCE_INSTANCE_NAME;
|
||||
import static io.opentelemetry.semconv.incubating.HostIncubatingAttributes.HOST_ID;
|
||||
import static io.opentelemetry.semconv.incubating.HostIncubatingAttributes.HOST_NAME;
|
||||
import static io.opentelemetry.semconv.incubating.HostIncubatingAttributes.HOST_TYPE;
|
||||
import static io.opentelemetry.semconv.incubating.K8sIncubatingAttributes.K8S_CLUSTER_NAME;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.CLOUD_ACCOUNT_ID;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.CLOUD_AVAILABILITY_ZONE;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.CLOUD_PLATFORM;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.CLOUD_PROVIDER;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.CLOUD_REGION;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.CloudPlatformValues.GCP;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.CloudPlatformValues.GCP_APP_ENGINE;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.CloudPlatformValues.GCP_CLOUD_FUNCTIONS;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.CloudPlatformValues.GCP_CLOUD_RUN;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.CloudPlatformValues.GCP_COMPUTE_ENGINE;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.CloudPlatformValues.GCP_KUBERNETES_ENGINE;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.FAAS_INSTANCE;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.FAAS_NAME;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.FAAS_VERSION;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.GCP_GCE_INSTANCE_HOSTNAME;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.GCP_GCE_INSTANCE_NAME;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.HOST_ID;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.HOST_NAME;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.HOST_TYPE;
|
||||
import static io.opentelemetry.contrib.gcp.resource.IncubatingAttributes.K8S_CLUSTER_NAME;
|
||||
|
||||
import com.google.cloud.opentelemetry.detection.DetectedPlatform;
|
||||
import com.google.cloud.opentelemetry.detection.GCPPlatformDetector;
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.contrib.gcp.resource;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
|
||||
/**
|
||||
* Inlines incubating attributes until they are stable, doing this prevents having a direct
|
||||
* dependency on incubating artifact which can conflict with another incubating version.
|
||||
*/
|
||||
class IncubatingAttributes {
|
||||
|
||||
private IncubatingAttributes() {}
|
||||
|
||||
public static final AttributeKey<String> CLOUD_ACCOUNT_ID =
|
||||
AttributeKey.stringKey("cloud.account.id");
|
||||
public static final AttributeKey<String> CLOUD_AVAILABILITY_ZONE =
|
||||
AttributeKey.stringKey("cloud.availability_zone");
|
||||
public static final AttributeKey<String> CLOUD_PLATFORM =
|
||||
AttributeKey.stringKey("cloud.platform");
|
||||
public static final AttributeKey<String> CLOUD_PROVIDER =
|
||||
AttributeKey.stringKey("cloud.provider");
|
||||
public static final AttributeKey<String> CLOUD_REGION = AttributeKey.stringKey("cloud.region");
|
||||
|
||||
public static final class CloudPlatformValues {
|
||||
private CloudPlatformValues() {}
|
||||
|
||||
public static final String GCP_COMPUTE_ENGINE = "gcp_compute_engine";
|
||||
public static final String GCP_CLOUD_RUN = "gcp_cloud_run";
|
||||
public static final String GCP_KUBERNETES_ENGINE = "gcp_kubernetes_engine";
|
||||
public static final String GCP_CLOUD_FUNCTIONS = "gcp_cloud_functions";
|
||||
public static final String GCP_APP_ENGINE = "gcp_app_engine";
|
||||
public static final String GCP = "gcp";
|
||||
}
|
||||
|
||||
public static final AttributeKey<String> FAAS_INSTANCE = AttributeKey.stringKey("faas.instance");
|
||||
public static final AttributeKey<String> FAAS_NAME = AttributeKey.stringKey("faas.name");
|
||||
public static final AttributeKey<String> FAAS_VERSION = AttributeKey.stringKey("faas.version");
|
||||
|
||||
public static final AttributeKey<String> GCP_GCE_INSTANCE_HOSTNAME =
|
||||
AttributeKey.stringKey("gcp.gce.instance.hostname");
|
||||
public static final AttributeKey<String> GCP_GCE_INSTANCE_NAME =
|
||||
AttributeKey.stringKey("gcp.gce.instance.name");
|
||||
|
||||
public static final AttributeKey<String> HOST_ID = AttributeKey.stringKey("host.id");
|
||||
public static final AttributeKey<String> HOST_NAME = AttributeKey.stringKey("host.name");
|
||||
public static final AttributeKey<String> HOST_TYPE = AttributeKey.stringKey("host.type");
|
||||
|
||||
public static final AttributeKey<String> K8S_CLUSTER_NAME =
|
||||
AttributeKey.stringKey("k8s.cluster.name");
|
||||
}
|
|
@ -24,7 +24,7 @@ dependencies {
|
|||
implementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
|
||||
implementation("io.opentelemetry:opentelemetry-exporter-otlp")
|
||||
implementation("io.opentelemetry.semconv:opentelemetry-semconv")
|
||||
implementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating:1.25.0-alpha")
|
||||
testImplementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating")
|
||||
|
||||
annotationProcessor("com.google.auto.value:auto-value")
|
||||
compileOnly("com.google.auto.value:auto-value-annotations")
|
||||
|
|
|
@ -11,7 +11,6 @@ import io.opentelemetry.maven.MavenGoal;
|
|||
import io.opentelemetry.maven.semconv.MavenOtelSemanticAttributes;
|
||||
import io.opentelemetry.semconv.HttpAttributes;
|
||||
import io.opentelemetry.semconv.UrlAttributes;
|
||||
import io.opentelemetry.semconv.incubating.PeerIncubatingAttributes;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
@ -93,6 +92,6 @@ final class GoogleJibBuildHandler implements MojoGoalExecutionHandler {
|
|||
// Note: setting the "peer.service" helps visualization on Jaeger but
|
||||
// may not fully comply with the OTel "peer.service" spec as we don't know if the remote
|
||||
// service will be instrumented and what it "service.name" would be
|
||||
spanBuilder.setAttribute(PeerIncubatingAttributes.PEER_SERVICE, registryHostname);
|
||||
spanBuilder.setAttribute(MavenOtelSemanticAttributes.PEER_SERVICE, registryHostname);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,6 @@ import io.opentelemetry.maven.MavenGoal;
|
|||
import io.opentelemetry.maven.semconv.MavenOtelSemanticAttributes;
|
||||
import io.opentelemetry.semconv.HttpAttributes;
|
||||
import io.opentelemetry.semconv.UrlAttributes;
|
||||
import io.opentelemetry.semconv.incubating.PeerIncubatingAttributes;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.Collections;
|
||||
|
@ -56,7 +55,7 @@ final class MavenDeployHandler implements MojoGoalExecutionHandler {
|
|||
// may not fully comply with the OTel "peer.service" spec as we don't know if the remote
|
||||
// service will be instrumented and what it "service.name" would be
|
||||
spanBuilder.setAttribute(
|
||||
PeerIncubatingAttributes.PEER_SERVICE, new URL(artifactRepositoryUrl).getHost());
|
||||
MavenOtelSemanticAttributes.PEER_SERVICE, new URL(artifactRepositoryUrl).getHost());
|
||||
} catch (MalformedURLException e) {
|
||||
logger.debug("Ignore exception parsing artifact repository URL", e);
|
||||
}
|
||||
|
|
|
@ -8,10 +8,9 @@ package io.opentelemetry.maven.handler;
|
|||
import io.opentelemetry.api.trace.SpanBuilder;
|
||||
import io.opentelemetry.api.trace.SpanKind;
|
||||
import io.opentelemetry.maven.MavenGoal;
|
||||
import io.opentelemetry.maven.semconv.MavenOtelSemanticAttributes;
|
||||
import io.opentelemetry.semconv.HttpAttributes;
|
||||
import io.opentelemetry.semconv.UrlAttributes;
|
||||
import io.opentelemetry.semconv.incubating.PeerIncubatingAttributes;
|
||||
import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import org.apache.maven.execution.ExecutionEvent;
|
||||
|
@ -27,9 +26,9 @@ final class SnykMonitorHandler implements MojoGoalExecutionHandler {
|
|||
@Override
|
||||
public void enrichSpan(SpanBuilder spanBuilder, ExecutionEvent executionEvent) {
|
||||
spanBuilder.setSpanKind(SpanKind.CLIENT);
|
||||
spanBuilder.setAttribute(PeerIncubatingAttributes.PEER_SERVICE, "snyk.io");
|
||||
spanBuilder.setAttribute(MavenOtelSemanticAttributes.PEER_SERVICE, "snyk.io");
|
||||
spanBuilder.setAttribute(UrlAttributes.URL_FULL, "https://snyk.io/api/v1/monitor/maven");
|
||||
spanBuilder.setAttribute(RpcIncubatingAttributes.RPC_METHOD, "monitor");
|
||||
spanBuilder.setAttribute(MavenOtelSemanticAttributes.RPC_METHOD, "monitor");
|
||||
spanBuilder.setAttribute(HttpAttributes.HTTP_REQUEST_METHOD, "POST");
|
||||
}
|
||||
|
||||
|
|
|
@ -8,10 +8,9 @@ package io.opentelemetry.maven.handler;
|
|||
import io.opentelemetry.api.trace.SpanBuilder;
|
||||
import io.opentelemetry.api.trace.SpanKind;
|
||||
import io.opentelemetry.maven.MavenGoal;
|
||||
import io.opentelemetry.maven.semconv.MavenOtelSemanticAttributes;
|
||||
import io.opentelemetry.semconv.HttpAttributes;
|
||||
import io.opentelemetry.semconv.UrlAttributes;
|
||||
import io.opentelemetry.semconv.incubating.PeerIncubatingAttributes;
|
||||
import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import org.apache.maven.execution.ExecutionEvent;
|
||||
|
@ -27,9 +26,9 @@ final class SnykTestHandler implements MojoGoalExecutionHandler {
|
|||
@Override
|
||||
public void enrichSpan(SpanBuilder spanBuilder, ExecutionEvent executionEvent) {
|
||||
spanBuilder.setSpanKind(SpanKind.CLIENT);
|
||||
spanBuilder.setAttribute(PeerIncubatingAttributes.PEER_SERVICE, "snyk.io");
|
||||
spanBuilder.setAttribute(MavenOtelSemanticAttributes.PEER_SERVICE, "snyk.io");
|
||||
spanBuilder.setAttribute(UrlAttributes.URL_FULL, "https://snyk.io/api/v1/test-dep-graph");
|
||||
spanBuilder.setAttribute(RpcIncubatingAttributes.RPC_METHOD, "test");
|
||||
spanBuilder.setAttribute(MavenOtelSemanticAttributes.RPC_METHOD, "test");
|
||||
spanBuilder.setAttribute(HttpAttributes.HTTP_REQUEST_METHOD, "POST");
|
||||
}
|
||||
|
||||
|
|
|
@ -11,7 +11,6 @@ import io.opentelemetry.maven.MavenGoal;
|
|||
import io.opentelemetry.maven.semconv.MavenOtelSemanticAttributes;
|
||||
import io.opentelemetry.semconv.HttpAttributes;
|
||||
import io.opentelemetry.semconv.UrlAttributes;
|
||||
import io.opentelemetry.semconv.incubating.PeerIncubatingAttributes;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.Collections;
|
||||
|
@ -108,7 +107,7 @@ final class SpringBootBuildImageHandler implements MojoGoalExecutionHandler {
|
|||
// may not fully comply with the OTel "peer.service" spec as we don't know if the remote
|
||||
// service will be instrumented and what it "service.name" would be
|
||||
spanBuilder.setAttribute(
|
||||
PeerIncubatingAttributes.PEER_SERVICE, new URL(registryUrl).getHost());
|
||||
MavenOtelSemanticAttributes.PEER_SERVICE, new URL(registryUrl).getHost());
|
||||
} catch (MalformedURLException e) {
|
||||
logger.debug("Ignore exception parsing container registry URL", e);
|
||||
}
|
||||
|
|
|
@ -10,11 +10,11 @@ import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
|||
import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import io.opentelemetry.semconv.ServiceAttributes;
|
||||
import io.opentelemetry.semconv.incubating.TelemetryIncubatingAttributes;
|
||||
import org.apache.maven.rtinfo.RuntimeInformation;
|
||||
import org.apache.maven.rtinfo.internal.DefaultRuntimeInformation;
|
||||
|
||||
public class MavenResourceProvider implements ResourceProvider {
|
||||
|
||||
@Override
|
||||
public Resource createResource(ConfigProperties config) {
|
||||
// TODO verify if there is solution to retrieve the RuntimeInformation instance loaded by the
|
||||
|
@ -24,10 +24,10 @@ public class MavenResourceProvider implements ResourceProvider {
|
|||
.put(ServiceAttributes.SERVICE_NAME, MavenOtelSemanticAttributes.SERVICE_NAME_VALUE)
|
||||
.put(ServiceAttributes.SERVICE_VERSION, runtimeInformation.getMavenVersion())
|
||||
.put(
|
||||
TelemetryIncubatingAttributes.TELEMETRY_DISTRO_NAME,
|
||||
MavenOtelSemanticAttributes.TELEMETRY_DISTRO_NAME,
|
||||
MavenOtelSemanticAttributes.TELEMETRY_DISTRO_NAME_VALUE)
|
||||
.put(
|
||||
TelemetryIncubatingAttributes.TELEMETRY_DISTRO_VERSION,
|
||||
MavenOtelSemanticAttributes.TELEMETRY_DISTRO_VERSION,
|
||||
MavenOtelSemanticAttributes.TELEMETRY_DISTRO_VERSION_VALUE)
|
||||
.build();
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey;
|
|||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.maven.OpenTelemetrySdkService;
|
||||
import io.opentelemetry.semconv.incubating.ContainerIncubatingAttributes;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -21,13 +20,13 @@ import java.util.List;
|
|||
public class MavenOtelSemanticAttributes {
|
||||
|
||||
/**
|
||||
* See {@link
|
||||
* See {@code
|
||||
* io.opentelemetry.semconv.incubating.ContainerIncubatingAttributes#CONTAINER_IMAGE_NAME}
|
||||
*/
|
||||
public static final AttributeKey<String> MAVEN_BUILD_CONTAINER_IMAGE_NAME =
|
||||
stringKey("maven.build.container.image.name");
|
||||
|
||||
/** See {@link ContainerIncubatingAttributes#CONTAINER_IMAGE_TAGS} */
|
||||
/** See {@code ContainerIncubatingAttributes#CONTAINER_IMAGE_TAGS} */
|
||||
public static final AttributeKey<List<String>> MAVEN_BUILD_CONTAINER_IMAGE_TAGS =
|
||||
stringArrayKey("maven.build.container.image.tags");
|
||||
|
||||
|
@ -56,6 +55,14 @@ public class MavenOtelSemanticAttributes {
|
|||
|
||||
public static final String SERVICE_NAME_VALUE = "maven";
|
||||
|
||||
// inlined incubating attribute to prevent direct dependency on incubating semconv
|
||||
public static final AttributeKey<String> PEER_SERVICE = AttributeKey.stringKey("peer.service");
|
||||
public static final AttributeKey<String> RPC_METHOD = AttributeKey.stringKey("rpc.method");
|
||||
public static final AttributeKey<String> TELEMETRY_DISTRO_NAME =
|
||||
AttributeKey.stringKey("telemetry.distro.name");
|
||||
public static final AttributeKey<String> TELEMETRY_DISTRO_VERSION =
|
||||
AttributeKey.stringKey("telemetry.distro.version");
|
||||
|
||||
public static final String TELEMETRY_DISTRO_NAME_VALUE = "opentelemetry-maven-extension";
|
||||
|
||||
public static final String TELEMETRY_DISTRO_VERSION_VALUE =
|
||||
|
|
|
@ -9,7 +9,7 @@ otelJava.moduleName.set("io.opentelemetry.contrib.sampler")
|
|||
dependencies {
|
||||
api("io.opentelemetry:opentelemetry-sdk")
|
||||
implementation("io.opentelemetry.semconv:opentelemetry-semconv")
|
||||
implementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating:1.25.0-alpha")
|
||||
testImplementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating")
|
||||
testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
|
||||
api("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi")
|
||||
}
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
|
||||
package io.opentelemetry.contrib.sampler;
|
||||
|
||||
import static io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes.THREAD_NAME;
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.trace.SpanKind;
|
||||
import io.opentelemetry.context.Context;
|
||||
|
@ -33,6 +33,10 @@ import java.util.List;
|
|||
* <p>If none of the rules matched, the default fallback sampler will make a decision.
|
||||
*/
|
||||
public final class RuleBasedRoutingSampler implements Sampler {
|
||||
|
||||
// inlined incubating attribute to prevent direct dependency on incubating semconv
|
||||
private static final AttributeKey<String> THREAD_NAME = AttributeKey.stringKey("thread.name");
|
||||
|
||||
private final List<SamplingRule> rules;
|
||||
private final SpanKind kind;
|
||||
private final Sampler fallback;
|
||||
|
|
|
@ -9,4 +9,6 @@ otelJava.moduleName.set("io.opentelemetry.contrib.stacktrace")
|
|||
dependencies {
|
||||
api("io.opentelemetry:opentelemetry-sdk")
|
||||
testImplementation("io.opentelemetry:opentelemetry-sdk-testing")
|
||||
|
||||
testImplementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating")
|
||||
}
|
||||
|
|
|
@ -18,8 +18,9 @@ import java.util.logging.Logger;
|
|||
|
||||
public class StackTraceSpanProcessor extends AbstractSimpleChainingSpanProcessor {
|
||||
|
||||
// TODO : remove this once semconv 1.24.0 is available
|
||||
static final AttributeKey<String> SPAN_STACKTRACE = AttributeKey.stringKey("code.stacktrace");
|
||||
// inlined incubating attribute to prevent direct dependency on incubating semconv
|
||||
private static final AttributeKey<String> SPAN_STACKTRACE =
|
||||
AttributeKey.stringKey("code.stacktrace");
|
||||
|
||||
private static final Logger logger = Logger.getLogger(StackTraceSpanProcessor.class.getName());
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ import io.opentelemetry.sdk.trace.ReadableSpan;
|
|||
import io.opentelemetry.sdk.trace.SpanProcessor;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
|
||||
import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes;
|
||||
import java.time.Instant;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
@ -54,7 +55,7 @@ class StackTraceSpanProcessorTest {
|
|||
span -> true,
|
||||
20,
|
||||
1,
|
||||
sb -> sb.setAttribute(StackTraceSpanProcessor.SPAN_STACKTRACE, "hello"),
|
||||
sb -> sb.setAttribute(CodeIncubatingAttributes.CODE_STACKTRACE, "hello"),
|
||||
stacktrace -> assertThat(stacktrace).isEqualTo("hello"));
|
||||
}
|
||||
|
||||
|
@ -99,7 +100,7 @@ class StackTraceSpanProcessorTest {
|
|||
|
||||
if (!finishedSpans.isEmpty()) {
|
||||
String stackTrace =
|
||||
finishedSpans.get(0).getAttributes().get(StackTraceSpanProcessor.SPAN_STACKTRACE);
|
||||
finishedSpans.get(0).getAttributes().get(CodeIncubatingAttributes.CODE_STACKTRACE);
|
||||
|
||||
stackTraceCheck.accept(stackTrace);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue