From cc95b7d0ebac5dc407d141f04e312951539eef85 Mon Sep 17 00:00:00 2001 From: john Date: Thu, 10 Nov 2022 19:31:19 -0800 Subject: [PATCH 1/3] Update semantic and resource attributes for spec v0.15.0 --- buildscripts/semantic-convention/generate.sh | 5 +- .../templates/SemanticAttributes.java.j2 | 1 + .../attributes/ResourceAttributes.java | 42 +- .../trace/attributes/SemanticAttributes.java | 952 +++++++++++++++++- 4 files changed, 953 insertions(+), 47 deletions(-) diff --git a/buildscripts/semantic-convention/generate.sh b/buildscripts/semantic-convention/generate.sh index ee0a0ef4cf7..0987cc54865 100755 --- a/buildscripts/semantic-convention/generate.sh +++ b/buildscripts/semantic-convention/generate.sh @@ -4,7 +4,7 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" ROOT_DIR="${SCRIPT_DIR}/../../" # freeze the spec & generator tools versions to make SemanticAttributes generation reproducible -SEMCONV_VERSION=1.13.0 +SEMCONV_VERSION=1.15.0 SPEC_VERSION=v$SEMCONV_VERSION SCHEMA_URL=https://opentelemetry.io/schemas/$SEMCONV_VERSION GENERATOR_VERSION=0.14.0 @@ -22,13 +22,14 @@ git reset --hard FETCH_HEAD cd ${SCRIPT_DIR} docker run --rm \ - -v ${SCRIPT_DIR}/opentelemetry-specification/semantic_conventions/trace:/source \ + -v ${SCRIPT_DIR}/opentelemetry-specification/semantic_conventions:/source \ -v ${SCRIPT_DIR}/templates:/templates \ -v ${ROOT_DIR}/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/:/output \ otel/semconvgen:$GENERATOR_VERSION \ -f /source code \ --template /templates/SemanticAttributes.java.j2 \ --output /output/SemanticAttributes.java \ + -Dsemconv=trace \ -Dclass=SemanticAttributes \ -DschemaUrl=$SCHEMA_URL \ -Dpkg=io.opentelemetry.semconv.trace.attributes diff --git a/buildscripts/semantic-convention/templates/SemanticAttributes.java.j2 b/buildscripts/semantic-convention/templates/SemanticAttributes.java.j2 index e0c5135515f..e1d4529e5b8 100644 --- a/buildscripts/semantic-convention/templates/SemanticAttributes.java.j2 +++ b/buildscripts/semantic-convention/templates/SemanticAttributes.java.j2 @@ -56,6 +56,7 @@ import io.opentelemetry.api.common.AttributeKey; import java.util.List; // DO NOT EDIT, this is an Auto-generated file from buildscripts/semantic-convention{{template}} +@SuppressWarnings("unused") public final class {{class}} { /** * The URL of the OpenTelemetry schema for these keys and values. diff --git a/semconv/src/main/java/io/opentelemetry/semconv/resource/attributes/ResourceAttributes.java b/semconv/src/main/java/io/opentelemetry/semconv/resource/attributes/ResourceAttributes.java index 03c5d2263f0..651af884035 100644 --- a/semconv/src/main/java/io/opentelemetry/semconv/resource/attributes/ResourceAttributes.java +++ b/semconv/src/main/java/io/opentelemetry/semconv/resource/attributes/ResourceAttributes.java @@ -5,6 +5,7 @@ package io.opentelemetry.semconv.resource.attributes; +import static io.opentelemetry.api.common.AttributeKey.booleanKey; import static io.opentelemetry.api.common.AttributeKey.longKey; import static io.opentelemetry.api.common.AttributeKey.stringArrayKey; import static io.opentelemetry.api.common.AttributeKey.stringKey; @@ -14,9 +15,10 @@ // DO NOT EDIT, this is an Auto-generated file from // buildscripts/semantic-convention/templates/SemanticAttributes.java.j2 +@SuppressWarnings("unused") public final class ResourceAttributes { /** The URL of the OpenTelemetry schema for these keys and values. */ - public static final String SCHEMA_URL = "https://opentelemetry.io/schemas/1.13.0"; + public static final String SCHEMA_URL = "https://opentelemetry.io/schemas/1.15.0"; /** * Array of brand name and version separated by a space @@ -25,8 +27,8 @@ public final class ResourceAttributes { * * */ public static final AttributeKey> BROWSER_BRANDS = stringArrayKey("browser.brands"); @@ -38,19 +40,32 @@ public final class ResourceAttributes { * * */ public static final AttributeKey BROWSER_PLATFORM = stringKey("browser.platform"); + /** + * A boolean that is true if the browser is running on a mobile device + * + *

Notes: + * + *

    + *
  • This value is intended to be taken from the UA client hints API ({@code + * navigator.userAgentData.mobile}). If unavailable, this attribute SHOULD be left unset. + *
+ */ + public static final AttributeKey BROWSER_MOBILE = booleanKey("browser.mobile"); + /** * Full user-agent string provided by the browser * @@ -64,6 +79,17 @@ public final class ResourceAttributes { */ public static final AttributeKey BROWSER_USER_AGENT = stringKey("browser.user_agent"); + /** + * Preferred language of the user using the browser + * + *

Notes: + * + *

    + *
  • This value is intended to be taken from the Navigator API {@code navigator.language}. + *
+ */ + public static final AttributeKey BROWSER_LANGUAGE = stringKey("browser.language"); + /** Name of the cloud provider. */ public static final AttributeKey CLOUD_PROVIDER = stringKey("cloud.provider"); diff --git a/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/SemanticAttributes.java b/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/SemanticAttributes.java index d3287d37091..fd1eddf6bbd 100644 --- a/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/SemanticAttributes.java +++ b/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/SemanticAttributes.java @@ -16,9 +16,696 @@ // DO NOT EDIT, this is an Auto-generated file from // buildscripts/semantic-convention/templates/SemanticAttributes.java.j2 +@SuppressWarnings("unused") public final class SemanticAttributes { /** The URL of the OpenTelemetry schema for these keys and values. */ - public static final String SCHEMA_URL = "https://opentelemetry.io/schemas/1.13.0"; + public static final String SCHEMA_URL = "https://opentelemetry.io/schemas/1.15.0"; + + /** + * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of + * the exception should be preferred over the static type in languages that support it. + */ + public static final AttributeKey EXCEPTION_TYPE = stringKey("exception.type"); + + /** The exception message. */ + public static final AttributeKey EXCEPTION_MESSAGE = stringKey("exception.message"); + + /** + * A stacktrace as a string in the natural representation for the language runtime. The + * representation is to be determined and documented by each language SIG. + */ + public static final AttributeKey EXCEPTION_STACKTRACE = stringKey("exception.stacktrace"); + + /** The name identifies the event. */ + public static final AttributeKey EVENT_NAME = stringKey("event.name"); + + /** + * The domain identifies the context in which an event happened. An event name is unique only + * within a domain. + * + *

Notes: + * + *

    + *
  • An {@code event.name} is supposed to be unique only in the context of an {@code + * event.domain}, so this allows for two events in different domains to have same {@code + * event.name}, yet be unrelated events. + *
+ */ + public static final AttributeKey EVENT_DOMAIN = stringKey("event.domain"); + + /** + * Array of brand name and version separated by a space + * + *

Notes: + * + *

    + *
  • This value is intended to be taken from the UA client hints API ({@code + * navigator.userAgentData.brands}). + *
+ */ + public static final AttributeKey> BROWSER_BRANDS = stringArrayKey("browser.brands"); + + /** + * The platform on which the browser is running + * + *

Notes: + * + *

    + *
  • This value is intended to be taken from the UA client hints API ({@code + * navigator.userAgentData.platform}). If unavailable, the legacy {@code navigator.platform} + * API SHOULD NOT be used instead and this attribute SHOULD be left unset in order for the + * values to be consistent. The list of possible values is defined in the W3C User-Agent Client + * Hints specification. Note that some (but not all) of these values can overlap with + * values in the {@code os.type} and {@code os.name} attributes. + * However, for consistency, the values in the {@code browser.platform} attribute should + * capture the exact value that the user agent provides. + *
+ */ + public static final AttributeKey BROWSER_PLATFORM = stringKey("browser.platform"); + + /** + * A boolean that is true if the browser is running on a mobile device + * + *

Notes: + * + *

    + *
  • This value is intended to be taken from the UA client hints API ({@code + * navigator.userAgentData.mobile}). If unavailable, this attribute SHOULD be left unset. + *
+ */ + public static final AttributeKey BROWSER_MOBILE = booleanKey("browser.mobile"); + + /** + * Full user-agent string provided by the browser + * + *

Notes: + * + *

    + *
  • The user-agent value SHOULD be provided only from browsers that do not have a mechanism + * to retrieve brands and platform individually from the User-Agent Client Hints API. To + * retrieve the value, the legacy {@code navigator.userAgent} API can be used. + *
+ */ + public static final AttributeKey BROWSER_USER_AGENT = stringKey("browser.user_agent"); + + /** + * Preferred language of the user using the browser + * + *

Notes: + * + *

    + *
  • This value is intended to be taken from the Navigator API {@code navigator.language}. + *
+ */ + public static final AttributeKey BROWSER_LANGUAGE = stringKey("browser.language"); + + /** Name of the cloud provider. */ + public static final AttributeKey CLOUD_PROVIDER = stringKey("cloud.provider"); + + /** The cloud account ID the resource is assigned to. */ + public static final AttributeKey CLOUD_ACCOUNT_ID = stringKey("cloud.account.id"); + + /** + * The geographical region the resource is running. + * + *

Notes: + * + *

+ */ + public static final AttributeKey CLOUD_REGION = stringKey("cloud.region"); + + /** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. + * Availability zone represents the zone where the resource is running. + * + *

Notes: + * + *

    + *
  • Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + *
+ */ + public static final AttributeKey CLOUD_AVAILABILITY_ZONE = + stringKey("cloud.availability_zone"); + + /** + * The cloud platform in use. + * + *

Notes: + * + *

    + *
  • The prefix of the service SHOULD match the one specified in {@code cloud.provider}. + *
+ */ + public static final AttributeKey CLOUD_PLATFORM = stringKey("cloud.platform"); + + /** + * The Amazon Resource Name (ARN) of an ECS + * container instance. + */ + public static final AttributeKey AWS_ECS_CONTAINER_ARN = + stringKey("aws.ecs.container.arn"); + + /** + * The ARN of an ECS + * cluster. + */ + public static final AttributeKey AWS_ECS_CLUSTER_ARN = stringKey("aws.ecs.cluster.arn"); + + /** + * The launch + * type for an ECS task. + */ + public static final AttributeKey AWS_ECS_LAUNCHTYPE = stringKey("aws.ecs.launchtype"); + + /** + * The ARN of an ECS + * task definition. + */ + public static final AttributeKey AWS_ECS_TASK_ARN = stringKey("aws.ecs.task.arn"); + + /** The task definition family this task definition is a member of. */ + public static final AttributeKey AWS_ECS_TASK_FAMILY = stringKey("aws.ecs.task.family"); + + /** The revision for this task definition. */ + public static final AttributeKey AWS_ECS_TASK_REVISION = + stringKey("aws.ecs.task.revision"); + + /** The ARN of an EKS cluster. */ + public static final AttributeKey AWS_EKS_CLUSTER_ARN = stringKey("aws.eks.cluster.arn"); + + /** + * The name(s) of the AWS log group(s) an application is writing to. + * + *

Notes: + * + *

    + *
  • Multiple log groups must be supported for cases like multi-container applications, where + * a single application has sidecar containers, and each write to their own log group. + *
+ */ + public static final AttributeKey> AWS_LOG_GROUP_NAMES = + stringArrayKey("aws.log.group.names"); + + /** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + *

Notes: + * + *

+ */ + public static final AttributeKey> AWS_LOG_GROUP_ARNS = + stringArrayKey("aws.log.group.arns"); + + /** The name(s) of the AWS log stream(s) an application is writing to. */ + public static final AttributeKey> AWS_LOG_STREAM_NAMES = + stringArrayKey("aws.log.stream.names"); + + /** + * The ARN(s) of the AWS log stream(s). + * + *

Notes: + * + *

+ */ + public static final AttributeKey> AWS_LOG_STREAM_ARNS = + stringArrayKey("aws.log.stream.arns"); + + /** Container name used by container runtime. */ + public static final AttributeKey CONTAINER_NAME = stringKey("container.name"); + + /** + * Container ID. Usually a UUID, as for example used to identify Docker + * containers. The UUID might be abbreviated. + */ + public static final AttributeKey CONTAINER_ID = stringKey("container.id"); + + /** The container runtime managing this container. */ + public static final AttributeKey CONTAINER_RUNTIME = stringKey("container.runtime"); + + /** Name of the image the container was built on. */ + public static final AttributeKey CONTAINER_IMAGE_NAME = stringKey("container.image.name"); + + /** Container image tag. */ + public static final AttributeKey CONTAINER_IMAGE_TAG = stringKey("container.image.tag"); + + /** + * Name of the deployment + * environment (aka deployment tier). + */ + public static final AttributeKey DEPLOYMENT_ENVIRONMENT = + stringKey("deployment.environment"); + + /** + * A unique identifier representing the device + * + *

Notes: + * + *

    + *
  • The device identifier MUST only be defined using the values outlined below. This value is + * not an advertising identifier and MUST NOT be used as such. On iOS (Swift or + * Objective-C), this value MUST be equal to the vendor + * identifier. On Android (Java or Kotlin), this value MUST be equal to the Firebase + * Installation ID or a globally unique UUID which is persisted across sessions in your + * application. More information can be found here on best + * practices and exact implementation details. Caution should be taken when storing personal + * data or anything which can identify a user. GDPR and data protection laws may apply, + * ensure you do your own due diligence. + *
+ */ + public static final AttributeKey DEVICE_ID = stringKey("device.id"); + + /** + * The model identifier for the device + * + *

Notes: + * + *

    + *
  • It's recommended this value represents a machine readable version of the model identifier + * rather than the market or consumer-friendly name of the device. + *
+ */ + public static final AttributeKey DEVICE_MODEL_IDENTIFIER = + stringKey("device.model.identifier"); + + /** + * The marketing name for the device model + * + *

Notes: + * + *

    + *
  • It's recommended this value represents a human readable version of the device model + * rather than a machine readable alternative. + *
+ */ + public static final AttributeKey DEVICE_MODEL_NAME = stringKey("device.model.name"); + + /** + * The name of the device manufacturer + * + *

Notes: + * + *

    + *
  • The Android OS provides this field via Build. + * iOS apps SHOULD hardcode the value {@code Apple}. + *
+ */ + public static final AttributeKey DEVICE_MANUFACTURER = stringKey("device.manufacturer"); + + /** + * The name of the single function that this runtime instance executes. + * + *

Notes: + * + *

    + *
  • This is the name of the function as configured/deployed on the FaaS platform and is + * usually different from the name of the callback function (which may be stored in the {@code + * code.namespace}/{@code code.function} span attributes). + *
  • For some cloud providers, the above definition is ambiguous. The following definition of + * function name MUST be used for this attribute (and consequently the span name) for the + * listed cloud providers/products: + *
  • Azure: The full name {@code /}, i.e., function app name + * followed by a forward slash followed by the function name (this form can also be seen in + * the resource JSON for the function). This means that a span attribute MUST be used, as an + * Azure function app can host multiple functions that would usually share a TracerProvider + * (see also the {@code faas.id} attribute). + *
+ */ + public static final AttributeKey FAAS_NAME = stringKey("faas.name"); + + /** + * The unique ID of the single function that this runtime instance executes. + * + *

Notes: + * + *

    + *
  • On some cloud providers, it may not be possible to determine the full ID at startup, so + * consider setting {@code faas.id} as a span attribute instead. + *
  • The exact value to use for {@code faas.id} depends on the cloud provider: + *
  • AWS Lambda: The function ARN. + * Take care not to use the "invoked ARN" directly but replace any alias + * suffix with the resolved function version, as the same runtime instance may be + * invokable with multiple different aliases. + *
  • GCP: The URI of the resource + *
  • Azure: The Fully + * Qualified Resource ID of the invoked function, not the function app, having + * the form {@code + * /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/}. + * This means that a span attribute MUST be used, as an Azure function app can host multiple + * functions that would usually share a TracerProvider. + *
+ */ + public static final AttributeKey FAAS_ID = stringKey("faas.id"); + + /** + * The immutable version of the function being executed. + * + *

Notes: + * + *

    + *
  • Depending on the cloud provider and platform, use: + *
  • AWS Lambda: The function + * version (an integer represented as a decimal string). + *
  • Google Cloud Run: The revision (i.e., the + * function name plus the revision suffix). + *
  • Google Cloud Functions: The value of the {@code + * K_REVISION} environment variable. + *
  • Azure Functions: Not applicable. Do not set this attribute. + *
+ */ + public static final AttributeKey FAAS_VERSION = stringKey("faas.version"); + + /** + * The execution environment ID as a string, that will be potentially reused for other invocations + * to the same function/function version. + * + *

Notes: + * + *

    + *
  • AWS Lambda: Use the (full) log stream name. + *
+ */ + public static final AttributeKey FAAS_INSTANCE = stringKey("faas.instance"); + + /** + * The amount of memory available to the serverless function in MiB. + * + *

Notes: + * + *

    + *
  • It's recommended to set this attribute since e.g. too little memory can easily stop a + * Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable + * {@code AWS_LAMBDA_FUNCTION_MEMORY_SIZE} provides this information. + *
+ */ + public static final AttributeKey FAAS_MAX_MEMORY = longKey("faas.max_memory"); + + /** Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. */ + public static final AttributeKey HOST_ID = stringKey("host.id"); + + /** + * Name of the host. On Unix systems, it may contain what the hostname command returns, or the + * fully qualified hostname, or another name specified by the user. + */ + public static final AttributeKey HOST_NAME = stringKey("host.name"); + + /** Type of host. For Cloud, this must be the machine type. */ + public static final AttributeKey HOST_TYPE = stringKey("host.type"); + + /** The CPU architecture the host system is running on. */ + public static final AttributeKey HOST_ARCH = stringKey("host.arch"); + + /** Name of the VM image or OS install the host was instantiated from. */ + public static final AttributeKey HOST_IMAGE_NAME = stringKey("host.image.name"); + + /** VM image ID. For Cloud, this value is from the provider. */ + public static final AttributeKey HOST_IMAGE_ID = stringKey("host.image.id"); + + /** + * The version string of the VM image as defined in Version + * Attributes. + */ + public static final AttributeKey HOST_IMAGE_VERSION = stringKey("host.image.version"); + + /** The name of the cluster. */ + public static final AttributeKey K8S_CLUSTER_NAME = stringKey("k8s.cluster.name"); + + /** The name of the Node. */ + public static final AttributeKey K8S_NODE_NAME = stringKey("k8s.node.name"); + + /** The UID of the Node. */ + public static final AttributeKey K8S_NODE_UID = stringKey("k8s.node.uid"); + + /** The name of the namespace that the pod is running in. */ + public static final AttributeKey K8S_NAMESPACE_NAME = stringKey("k8s.namespace.name"); + + /** The UID of the Pod. */ + public static final AttributeKey K8S_POD_UID = stringKey("k8s.pod.uid"); + + /** The name of the Pod. */ + public static final AttributeKey K8S_POD_NAME = stringKey("k8s.pod.name"); + + /** + * The name of the Container from Pod specification, must be unique within a Pod. Container + * runtime usually uses different globally unique name ({@code container.name}). + */ + public static final AttributeKey K8S_CONTAINER_NAME = stringKey("k8s.container.name"); + + /** + * Number of times the container was restarted. This attribute can be used to identify a + * particular container (running or stopped) within a container spec. + */ + public static final AttributeKey K8S_CONTAINER_RESTART_COUNT = + longKey("k8s.container.restart_count"); + + /** The UID of the ReplicaSet. */ + public static final AttributeKey K8S_REPLICASET_UID = stringKey("k8s.replicaset.uid"); + + /** The name of the ReplicaSet. */ + public static final AttributeKey K8S_REPLICASET_NAME = stringKey("k8s.replicaset.name"); + + /** The UID of the Deployment. */ + public static final AttributeKey K8S_DEPLOYMENT_UID = stringKey("k8s.deployment.uid"); + + /** The name of the Deployment. */ + public static final AttributeKey K8S_DEPLOYMENT_NAME = stringKey("k8s.deployment.name"); + + /** The UID of the StatefulSet. */ + public static final AttributeKey K8S_STATEFULSET_UID = stringKey("k8s.statefulset.uid"); + + /** The name of the StatefulSet. */ + public static final AttributeKey K8S_STATEFULSET_NAME = stringKey("k8s.statefulset.name"); + + /** The UID of the DaemonSet. */ + public static final AttributeKey K8S_DAEMONSET_UID = stringKey("k8s.daemonset.uid"); + + /** The name of the DaemonSet. */ + public static final AttributeKey K8S_DAEMONSET_NAME = stringKey("k8s.daemonset.name"); + + /** The UID of the Job. */ + public static final AttributeKey K8S_JOB_UID = stringKey("k8s.job.uid"); + + /** The name of the Job. */ + public static final AttributeKey K8S_JOB_NAME = stringKey("k8s.job.name"); + + /** The UID of the CronJob. */ + public static final AttributeKey K8S_CRONJOB_UID = stringKey("k8s.cronjob.uid"); + + /** The name of the CronJob. */ + public static final AttributeKey K8S_CRONJOB_NAME = stringKey("k8s.cronjob.name"); + + /** The operating system type. */ + public static final AttributeKey OS_TYPE = stringKey("os.type"); + + /** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by {@code + * ver} or {@code lsb_release -a} commands. + */ + public static final AttributeKey OS_DESCRIPTION = stringKey("os.description"); + + /** Human readable operating system name. */ + public static final AttributeKey OS_NAME = stringKey("os.name"); + + /** + * The version string of the operating system as defined in Version Attributes. + */ + public static final AttributeKey OS_VERSION = stringKey("os.version"); + + /** Process identifier (PID). */ + public static final AttributeKey PROCESS_PID = longKey("process.pid"); + + /** Parent Process identifier (PID). */ + public static final AttributeKey PROCESS_PARENT_PID = longKey("process.parent_pid"); + + /** + * The name of the process executable. On Linux based systems, can be set to the {@code Name} in + * {@code proc/[pid]/status}. On Windows, can be set to the base name of {@code + * GetProcessImageFileNameW}. + */ + public static final AttributeKey PROCESS_EXECUTABLE_NAME = + stringKey("process.executable.name"); + + /** + * The full path to the process executable. On Linux based systems, can be set to the target of + * {@code proc/[pid]/exe}. On Windows, can be set to the result of {@code + * GetProcessImageFileNameW}. + */ + public static final AttributeKey PROCESS_EXECUTABLE_PATH = + stringKey("process.executable.path"); + + /** + * The command used to launch the process (i.e. the command name). On Linux based systems, can be + * set to the zeroth string in {@code proc/[pid]/cmdline}. On Windows, can be set to the first + * parameter extracted from {@code GetCommandLineW}. + */ + public static final AttributeKey PROCESS_COMMAND = stringKey("process.command"); + + /** + * The full command used to launch the process as a single string representing the full command. + * On Windows, can be set to the result of {@code GetCommandLineW}. Do not set this if you have to + * assemble it just for monitoring; use {@code process.command_args} instead. + */ + public static final AttributeKey PROCESS_COMMAND_LINE = stringKey("process.command_line"); + + /** + * All the command arguments (including the command/executable itself) as received by the process. + * On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according + * to the list of null-delimited strings extracted from {@code proc/[pid]/cmdline}. For libc-based + * executables, this would be the full argv vector passed to {@code main}. + */ + public static final AttributeKey> PROCESS_COMMAND_ARGS = + stringArrayKey("process.command_args"); + + /** The username of the user that owns the process. */ + public static final AttributeKey PROCESS_OWNER = stringKey("process.owner"); + + /** + * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name + * of the compiler. + */ + public static final AttributeKey PROCESS_RUNTIME_NAME = stringKey("process.runtime.name"); + + /** + * The version of the runtime of this process, as returned by the runtime without modification. + */ + public static final AttributeKey PROCESS_RUNTIME_VERSION = + stringKey("process.runtime.version"); + + /** + * An additional description about the runtime of the process, for example a specific vendor + * customization of the runtime environment. + */ + public static final AttributeKey PROCESS_RUNTIME_DESCRIPTION = + stringKey("process.runtime.description"); + + /** + * Logical name of the service. + * + *

Notes: + * + *

    + *
  • MUST be the same for all instances of horizontally scaled services. If the value was not + * specified, SDKs MUST fallback to {@code unknown_service:} concatenated with {@code process.executable.name}, e.g. {@code + * unknown_service:bash}. If {@code process.executable.name} is not available, the value + * MUST be set to {@code unknown_service}. + *
+ */ + public static final AttributeKey SERVICE_NAME = stringKey("service.name"); + + /** + * A namespace for {@code service.name}. + * + *

Notes: + * + *

    + *
  • A string value having a meaning that helps to distinguish a group of services, for + * example the team name that owns a group of services. {@code service.name} is expected to + * be unique within the same namespace. If {@code service.namespace} is not specified in the + * Resource then {@code service.name} is expected to be unique for all services that have no + * explicit namespace defined (so the empty/unspecified namespace is simply one more valid + * namespace). Zero-length namespace string is assumed equal to unspecified namespace. + *
+ */ + public static final AttributeKey SERVICE_NAMESPACE = stringKey("service.namespace"); + + /** + * The string ID of the service instance. + * + *

Notes: + * + *

    + *
  • MUST be unique for each instance of the same {@code service.namespace,service.name} pair + * (in other words {@code service.namespace,service.name,service.instance.id} triplet MUST + * be globally unique). The ID helps to distinguish instances of the same service that exist + * at the same time (e.g. instances of a horizontally scaled service). It is preferable for + * the ID to be persistent and stay the same for the lifetime of the service instance, + * however it is acceptable that the ID is ephemeral and changes during important lifetime + * events for the service (e.g. service restarts). If the service has no inherent unique ID + * that can be used as the value of this attribute it is recommended to generate a random + * Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use + * Version 5, see RFC 4122 for more recommendations). + *
+ */ + public static final AttributeKey SERVICE_INSTANCE_ID = stringKey("service.instance.id"); + + /** The version string of the service API or implementation. */ + public static final AttributeKey SERVICE_VERSION = stringKey("service.version"); + + /** The name of the telemetry SDK as defined above. */ + public static final AttributeKey TELEMETRY_SDK_NAME = stringKey("telemetry.sdk.name"); + + /** The language of the telemetry SDK. */ + public static final AttributeKey TELEMETRY_SDK_LANGUAGE = + stringKey("telemetry.sdk.language"); + + /** The version string of the telemetry SDK. */ + public static final AttributeKey TELEMETRY_SDK_VERSION = + stringKey("telemetry.sdk.version"); + + /** The version string of the auto instrumentation agent, if used. */ + public static final AttributeKey TELEMETRY_AUTO_VERSION = + stringKey("telemetry.auto.version"); + + /** The name of the web engine. */ + public static final AttributeKey WEBENGINE_NAME = stringKey("webengine.name"); + + /** The version of the web engine. */ + public static final AttributeKey WEBENGINE_VERSION = stringKey("webengine.version"); + + /** Additional description of the web engine (e.g. detailed version and edition information). */ + public static final AttributeKey WEBENGINE_DESCRIPTION = + stringKey("webengine.description"); + + /** The name of the instrumentation scope - ({@code InstrumentationScope.Name} in OTLP). */ + public static final AttributeKey OTEL_SCOPE_NAME = stringKey("otel.scope.name"); + + /** The version of the instrumentation scope - ({@code InstrumentationScope.Version} in OTLP). */ + public static final AttributeKey OTEL_SCOPE_VERSION = stringKey("otel.scope.version"); + + /** Deprecated, use the {@code otel.scope.name} attribute. */ + public static final AttributeKey OTEL_LIBRARY_NAME = stringKey("otel.library.name"); + + /** Deprecated, use the {@code otel.scope.version} attribute. */ + public static final AttributeKey OTEL_LIBRARY_VERSION = stringKey("otel.library.version"); /** * The full invoked ARN as provided on the {@code Context} passed to the function ({@code @@ -237,42 +924,14 @@ public final class SemanticAttributes { public static final AttributeKey DB_SQL_TABLE = stringKey("db.sql.table"); /** - * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of - * the exception should be preferred over the static type in languages that support it. + * Name of the code, either "OK" or "ERROR". MUST NOT be set if the status + * code is UNSET. */ - public static final AttributeKey EXCEPTION_TYPE = stringKey("exception.type"); - - /** The exception message. */ - public static final AttributeKey EXCEPTION_MESSAGE = stringKey("exception.message"); + public static final AttributeKey OTEL_STATUS_CODE = stringKey("otel.status_code"); - /** - * A stacktrace as a string in the natural representation for the language runtime. The - * representation is to be determined and documented by each language SIG. - */ - public static final AttributeKey EXCEPTION_STACKTRACE = stringKey("exception.stacktrace"); - - /** - * SHOULD be set to true if the exception event is recorded at a point where it is known that the - * exception is escaping the scope of the span. - * - *

Notes: - * - *

    - *
  • An exception is considered to have escaped (or left) the scope of a span, if that span is - * ended while the exception is still logically "in flight". This may be actually - * "in flight" in some languages (e.g. if the exception is passed to a Context - * manager's {@code __exit__} method in Python) but will usually be caught at the point of - * recording the exception in most languages. - *
  • It is usually not possible to determine at the point where an exception is thrown whether - * it will escape the scope of a span. However, it is trivial to know that an exception will - * escape, if one checks for an active exception just before ending the span, as done in the - * example above. - *
  • It follows that an exception may still escape the scope of the span even if the {@code - * exception.escaped} attribute was not set or set to false, since the event might have been - * recorded at a time where it was not clear whether the exception will escape. - *
- */ - public static final AttributeKey EXCEPTION_ESCAPED = booleanKey("exception.escaped"); + /** Description of the Status if it has a value, otherwise not set. */ + public static final AttributeKey OTEL_STATUS_DESCRIPTION = + stringKey("otel.status_description"); /** * Type of the trigger which caused this function execution. @@ -579,8 +1238,18 @@ public final class SemanticAttributes { */ public static final AttributeKey HTTP_URL = stringKey("http.url"); - /** The ordinal number of request re-sending attempt. */ - public static final AttributeKey HTTP_RETRY_COUNT = longKey("http.retry_count"); + /** + * The ordinal number of request resending attempt (for any reason, including redirects). + * + *

Notes: + * + *

    + *
  • The resend count SHOULD be updated each time an HTTP request gets resent by the client, + * regardless of what was the cause of the resending (e.g. redirection, authorization + * failure, 503 Server Unavailable, network issues, or any other). + *
+ */ + public static final AttributeKey HTTP_RESEND_COUNT = longKey("http.resend_count"); /** The URI scheme identifying the used protocol. */ public static final AttributeKey HTTP_SCHEME = stringKey("http.scheme"); @@ -849,6 +1518,23 @@ public final class SemanticAttributes { public static final AttributeKey MESSAGING_ROCKETMQ_CLIENT_ID = stringKey("messaging.rocketmq.client_id"); + /** + * The timestamp in milliseconds that the delay message is expected to be delivered to consumer. + */ + public static final AttributeKey MESSAGING_ROCKETMQ_DELIVERY_TIMESTAMP = + longKey("messaging.rocketmq.delivery_timestamp"); + + /** The delay time level for delay message, which determines the message delay time. */ + public static final AttributeKey MESSAGING_ROCKETMQ_DELAY_TIME_LEVEL = + longKey("messaging.rocketmq.delay_time_level"); + + /** + * It is essential for FIFO message. Messages that belong to the same message group are always + * processed one by one within the same consumer group. + */ + public static final AttributeKey MESSAGING_ROCKETMQ_MESSAGE_GROUP = + stringKey("messaging.rocketmq.message_group"); + /** Type of message. */ public static final AttributeKey MESSAGING_ROCKETMQ_MESSAGE_TYPE = stringKey("messaging.rocketmq.message_type"); @@ -949,7 +1635,187 @@ public final class SemanticAttributes { public static final AttributeKey MESSAGE_UNCOMPRESSED_SIZE = longKey("message.uncompressed_size"); + /** + * SHOULD be set to true if the exception event is recorded at a point where it is known that the + * exception is escaping the scope of the span. + * + *

Notes: + * + *

    + *
  • An exception is considered to have escaped (or left) the scope of a span, if that span is + * ended while the exception is still logically "in flight". This may be actually + * "in flight" in some languages (e.g. if the exception is passed to a Context + * manager's {@code __exit__} method in Python) but will usually be caught at the point of + * recording the exception in most languages. + *
  • It is usually not possible to determine at the point where an exception is thrown whether + * it will escape the scope of a span. However, it is trivial to know that an exception will + * escape, if one checks for an active exception just before ending the span, as done in the + * example above. + *
  • It follows that an exception may still escape the scope of the span even if the {@code + * exception.escaped} attribute was not set or set to false, since the event might have been + * recorded at a time where it was not clear whether the exception will escape. + *
+ */ + public static final AttributeKey EXCEPTION_ESCAPED = booleanKey("exception.escaped"); + // Enum definitions + public static final class EventDomainValues { + /** Events from browser apps. */ + public static final String BROWSER = "browser"; + /** Events from mobile apps. */ + public static final String DEVICE = "device"; + /** Events from Kubernetes. */ + public static final String K8S = "k8s"; + + private EventDomainValues() {} + } + + public static final class CloudProviderValues { + /** Alibaba Cloud. */ + public static final String ALIBABA_CLOUD = "alibaba_cloud"; + /** Amazon Web Services. */ + public static final String AWS = "aws"; + /** Microsoft Azure. */ + public static final String AZURE = "azure"; + /** Google Cloud Platform. */ + public static final String GCP = "gcp"; + /** Tencent Cloud. */ + public static final String TENCENT_CLOUD = "tencent_cloud"; + + private CloudProviderValues() {} + } + + public static final class CloudPlatformValues { + /** Alibaba Cloud Elastic Compute Service. */ + public static final String ALIBABA_CLOUD_ECS = "alibaba_cloud_ecs"; + /** Alibaba Cloud Function Compute. */ + public static final String ALIBABA_CLOUD_FC = "alibaba_cloud_fc"; + /** AWS Elastic Compute Cloud. */ + public static final String AWS_EC2 = "aws_ec2"; + /** AWS Elastic Container Service. */ + public static final String AWS_ECS = "aws_ecs"; + /** AWS Elastic Kubernetes Service. */ + public static final String AWS_EKS = "aws_eks"; + /** AWS Lambda. */ + public static final String AWS_LAMBDA = "aws_lambda"; + /** AWS Elastic Beanstalk. */ + public static final String AWS_ELASTIC_BEANSTALK = "aws_elastic_beanstalk"; + /** AWS App Runner. */ + public static final String AWS_APP_RUNNER = "aws_app_runner"; + /** Azure Virtual Machines. */ + public static final String AZURE_VM = "azure_vm"; + /** Azure Container Instances. */ + public static final String AZURE_CONTAINER_INSTANCES = "azure_container_instances"; + /** Azure Kubernetes Service. */ + public static final String AZURE_AKS = "azure_aks"; + /** Azure Functions. */ + public static final String AZURE_FUNCTIONS = "azure_functions"; + /** Azure App Service. */ + public static final String AZURE_APP_SERVICE = "azure_app_service"; + /** Google Cloud Compute Engine (GCE). */ + public static final String GCP_COMPUTE_ENGINE = "gcp_compute_engine"; + /** Google Cloud Run. */ + public static final String GCP_CLOUD_RUN = "gcp_cloud_run"; + /** Google Cloud Kubernetes Engine (GKE). */ + public static final String GCP_KUBERNETES_ENGINE = "gcp_kubernetes_engine"; + /** Google Cloud Functions (GCF). */ + public static final String GCP_CLOUD_FUNCTIONS = "gcp_cloud_functions"; + /** Google Cloud App Engine (GAE). */ + public static final String GCP_APP_ENGINE = "gcp_app_engine"; + /** Tencent Cloud Cloud Virtual Machine (CVM). */ + public static final String TENCENT_CLOUD_CVM = "tencent_cloud_cvm"; + /** Tencent Cloud Elastic Kubernetes Service (EKS). */ + public static final String TENCENT_CLOUD_EKS = "tencent_cloud_eks"; + /** Tencent Cloud Serverless Cloud Function (SCF). */ + public static final String TENCENT_CLOUD_SCF = "tencent_cloud_scf"; + + private CloudPlatformValues() {} + } + + public static final class AwsEcsLaunchtypeValues { + /** ec2. */ + public static final String EC2 = "ec2"; + /** fargate. */ + public static final String FARGATE = "fargate"; + + private AwsEcsLaunchtypeValues() {} + } + + public static final class HostArchValues { + /** AMD64. */ + public static final String AMD64 = "amd64"; + /** ARM32. */ + public static final String ARM32 = "arm32"; + /** ARM64. */ + public static final String ARM64 = "arm64"; + /** Itanium. */ + public static final String IA64 = "ia64"; + /** 32-bit PowerPC. */ + public static final String PPC32 = "ppc32"; + /** 64-bit PowerPC. */ + public static final String PPC64 = "ppc64"; + /** IBM z/Architecture. */ + public static final String S390X = "s390x"; + /** 32-bit x86. */ + public static final String X86 = "x86"; + + private HostArchValues() {} + } + + public static final class OsTypeValues { + /** Microsoft Windows. */ + public static final String WINDOWS = "windows"; + /** Linux. */ + public static final String LINUX = "linux"; + /** Apple Darwin. */ + public static final String DARWIN = "darwin"; + /** FreeBSD. */ + public static final String FREEBSD = "freebsd"; + /** NetBSD. */ + public static final String NETBSD = "netbsd"; + /** OpenBSD. */ + public static final String OPENBSD = "openbsd"; + /** DragonFly BSD. */ + public static final String DRAGONFLYBSD = "dragonflybsd"; + /** HP-UX (Hewlett Packard Unix). */ + public static final String HPUX = "hpux"; + /** AIX (Advanced Interactive eXecutive). */ + public static final String AIX = "aix"; + /** SunOS, Oracle Solaris. */ + public static final String SOLARIS = "solaris"; + /** IBM z/OS. */ + public static final String Z_OS = "z_os"; + + private OsTypeValues() {} + } + + public static final class TelemetrySdkLanguageValues { + /** cpp. */ + public static final String CPP = "cpp"; + /** dotnet. */ + public static final String DOTNET = "dotnet"; + /** erlang. */ + public static final String ERLANG = "erlang"; + /** go. */ + public static final String GO = "go"; + /** java. */ + public static final String JAVA = "java"; + /** nodejs. */ + public static final String NODEJS = "nodejs"; + /** php. */ + public static final String PHP = "php"; + /** python. */ + public static final String PYTHON = "python"; + /** ruby. */ + public static final String RUBY = "ruby"; + /** webjs. */ + public static final String WEBJS = "webjs"; + /** swift. */ + public static final String SWIFT = "swift"; + + private TelemetrySdkLanguageValues() {} + } + public static final class OpentracingRefTypeValues { /** The parent Span depends on the child Span in some capacity. */ public static final String CHILD_OF = "child_of"; @@ -1087,6 +1953,18 @@ public static final class DbCassandraConsistencyLevelValues { private DbCassandraConsistencyLevelValues() {} } + public static final class OtelStatusCodeValues { + /** + * The operation has been validated by an Application developer or Operator to have completed + * successfully. + */ + public static final String OK = "OK"; + /** The operation contains an error. */ + public static final String ERROR = "ERROR"; + + private OtelStatusCodeValues() {} + } + public static final class FaasTriggerValues { /** A response to some data source operation such as a database or filesystem read/write. */ public static final String DATASOURCE = "datasource"; From e5e3cc6007ce3f757089bd275b0051c7f4502d86 Mon Sep 17 00:00:00 2001 From: john Date: Fri, 11 Nov 2022 10:24:12 -0800 Subject: [PATCH 2/3] explicitly exclude resource attributes --- buildscripts/semantic-convention/generate.sh | 1 + .../trace/attributes/SemanticAttributes.java | 694 ------------------ 2 files changed, 1 insertion(+), 694 deletions(-) diff --git a/buildscripts/semantic-convention/generate.sh b/buildscripts/semantic-convention/generate.sh index 0987cc54865..0f722a7823c 100755 --- a/buildscripts/semantic-convention/generate.sh +++ b/buildscripts/semantic-convention/generate.sh @@ -26,6 +26,7 @@ docker run --rm \ -v ${SCRIPT_DIR}/templates:/templates \ -v ${ROOT_DIR}/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/:/output \ otel/semconvgen:$GENERATOR_VERSION \ + --exclude resource/* \ -f /source code \ --template /templates/SemanticAttributes.java.j2 \ --output /output/SemanticAttributes.java \ diff --git a/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/SemanticAttributes.java b/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/SemanticAttributes.java index fd1eddf6bbd..bfcdad31992 100644 --- a/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/SemanticAttributes.java +++ b/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/SemanticAttributes.java @@ -53,124 +53,6 @@ public final class SemanticAttributes { */ public static final AttributeKey EVENT_DOMAIN = stringKey("event.domain"); - /** - * Array of brand name and version separated by a space - * - *

Notes: - * - *

    - *
  • This value is intended to be taken from the UA client hints API ({@code - * navigator.userAgentData.brands}). - *
- */ - public static final AttributeKey> BROWSER_BRANDS = stringArrayKey("browser.brands"); - - /** - * The platform on which the browser is running - * - *

Notes: - * - *

    - *
  • This value is intended to be taken from the UA client hints API ({@code - * navigator.userAgentData.platform}). If unavailable, the legacy {@code navigator.platform} - * API SHOULD NOT be used instead and this attribute SHOULD be left unset in order for the - * values to be consistent. The list of possible values is defined in the W3C User-Agent Client - * Hints specification. Note that some (but not all) of these values can overlap with - * values in the {@code os.type} and {@code os.name} attributes. - * However, for consistency, the values in the {@code browser.platform} attribute should - * capture the exact value that the user agent provides. - *
- */ - public static final AttributeKey BROWSER_PLATFORM = stringKey("browser.platform"); - - /** - * A boolean that is true if the browser is running on a mobile device - * - *

Notes: - * - *

    - *
  • This value is intended to be taken from the UA client hints API ({@code - * navigator.userAgentData.mobile}). If unavailable, this attribute SHOULD be left unset. - *
- */ - public static final AttributeKey BROWSER_MOBILE = booleanKey("browser.mobile"); - - /** - * Full user-agent string provided by the browser - * - *

Notes: - * - *

    - *
  • The user-agent value SHOULD be provided only from browsers that do not have a mechanism - * to retrieve brands and platform individually from the User-Agent Client Hints API. To - * retrieve the value, the legacy {@code navigator.userAgent} API can be used. - *
- */ - public static final AttributeKey BROWSER_USER_AGENT = stringKey("browser.user_agent"); - - /** - * Preferred language of the user using the browser - * - *

Notes: - * - *

    - *
  • This value is intended to be taken from the Navigator API {@code navigator.language}. - *
- */ - public static final AttributeKey BROWSER_LANGUAGE = stringKey("browser.language"); - - /** Name of the cloud provider. */ - public static final AttributeKey CLOUD_PROVIDER = stringKey("cloud.provider"); - - /** The cloud account ID the resource is assigned to. */ - public static final AttributeKey CLOUD_ACCOUNT_ID = stringKey("cloud.account.id"); - - /** - * The geographical region the resource is running. - * - *

Notes: - * - *

- */ - public static final AttributeKey CLOUD_REGION = stringKey("cloud.region"); - - /** - * Cloud regions often have multiple, isolated locations known as zones to increase availability. - * Availability zone represents the zone where the resource is running. - * - *

Notes: - * - *

    - *
  • Availability zones are called "zones" on Alibaba Cloud and Google Cloud. - *
- */ - public static final AttributeKey CLOUD_AVAILABILITY_ZONE = - stringKey("cloud.availability_zone"); - - /** - * The cloud platform in use. - * - *

Notes: - * - *

    - *
  • The prefix of the service SHOULD match the one specified in {@code cloud.provider}. - *
- */ - public static final AttributeKey CLOUD_PLATFORM = stringKey("cloud.platform"); - /** * The Amazon Resource Name (ARN) of an ECS @@ -256,445 +138,6 @@ public final class SemanticAttributes { public static final AttributeKey> AWS_LOG_STREAM_ARNS = stringArrayKey("aws.log.stream.arns"); - /** Container name used by container runtime. */ - public static final AttributeKey CONTAINER_NAME = stringKey("container.name"); - - /** - * Container ID. Usually a UUID, as for example used to identify Docker - * containers. The UUID might be abbreviated. - */ - public static final AttributeKey CONTAINER_ID = stringKey("container.id"); - - /** The container runtime managing this container. */ - public static final AttributeKey CONTAINER_RUNTIME = stringKey("container.runtime"); - - /** Name of the image the container was built on. */ - public static final AttributeKey CONTAINER_IMAGE_NAME = stringKey("container.image.name"); - - /** Container image tag. */ - public static final AttributeKey CONTAINER_IMAGE_TAG = stringKey("container.image.tag"); - - /** - * Name of the deployment - * environment (aka deployment tier). - */ - public static final AttributeKey DEPLOYMENT_ENVIRONMENT = - stringKey("deployment.environment"); - - /** - * A unique identifier representing the device - * - *

Notes: - * - *

    - *
  • The device identifier MUST only be defined using the values outlined below. This value is - * not an advertising identifier and MUST NOT be used as such. On iOS (Swift or - * Objective-C), this value MUST be equal to the vendor - * identifier. On Android (Java or Kotlin), this value MUST be equal to the Firebase - * Installation ID or a globally unique UUID which is persisted across sessions in your - * application. More information can be found here on best - * practices and exact implementation details. Caution should be taken when storing personal - * data or anything which can identify a user. GDPR and data protection laws may apply, - * ensure you do your own due diligence. - *
- */ - public static final AttributeKey DEVICE_ID = stringKey("device.id"); - - /** - * The model identifier for the device - * - *

Notes: - * - *

    - *
  • It's recommended this value represents a machine readable version of the model identifier - * rather than the market or consumer-friendly name of the device. - *
- */ - public static final AttributeKey DEVICE_MODEL_IDENTIFIER = - stringKey("device.model.identifier"); - - /** - * The marketing name for the device model - * - *

Notes: - * - *

    - *
  • It's recommended this value represents a human readable version of the device model - * rather than a machine readable alternative. - *
- */ - public static final AttributeKey DEVICE_MODEL_NAME = stringKey("device.model.name"); - - /** - * The name of the device manufacturer - * - *

Notes: - * - *

    - *
  • The Android OS provides this field via Build. - * iOS apps SHOULD hardcode the value {@code Apple}. - *
- */ - public static final AttributeKey DEVICE_MANUFACTURER = stringKey("device.manufacturer"); - - /** - * The name of the single function that this runtime instance executes. - * - *

Notes: - * - *

    - *
  • This is the name of the function as configured/deployed on the FaaS platform and is - * usually different from the name of the callback function (which may be stored in the {@code - * code.namespace}/{@code code.function} span attributes). - *
  • For some cloud providers, the above definition is ambiguous. The following definition of - * function name MUST be used for this attribute (and consequently the span name) for the - * listed cloud providers/products: - *
  • Azure: The full name {@code /}, i.e., function app name - * followed by a forward slash followed by the function name (this form can also be seen in - * the resource JSON for the function). This means that a span attribute MUST be used, as an - * Azure function app can host multiple functions that would usually share a TracerProvider - * (see also the {@code faas.id} attribute). - *
- */ - public static final AttributeKey FAAS_NAME = stringKey("faas.name"); - - /** - * The unique ID of the single function that this runtime instance executes. - * - *

Notes: - * - *

    - *
  • On some cloud providers, it may not be possible to determine the full ID at startup, so - * consider setting {@code faas.id} as a span attribute instead. - *
  • The exact value to use for {@code faas.id} depends on the cloud provider: - *
  • AWS Lambda: The function ARN. - * Take care not to use the "invoked ARN" directly but replace any alias - * suffix with the resolved function version, as the same runtime instance may be - * invokable with multiple different aliases. - *
  • GCP: The URI of the resource - *
  • Azure: The Fully - * Qualified Resource ID of the invoked function, not the function app, having - * the form {@code - * /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/}. - * This means that a span attribute MUST be used, as an Azure function app can host multiple - * functions that would usually share a TracerProvider. - *
- */ - public static final AttributeKey FAAS_ID = stringKey("faas.id"); - - /** - * The immutable version of the function being executed. - * - *

Notes: - * - *

    - *
  • Depending on the cloud provider and platform, use: - *
  • AWS Lambda: The function - * version (an integer represented as a decimal string). - *
  • Google Cloud Run: The revision (i.e., the - * function name plus the revision suffix). - *
  • Google Cloud Functions: The value of the {@code - * K_REVISION} environment variable. - *
  • Azure Functions: Not applicable. Do not set this attribute. - *
- */ - public static final AttributeKey FAAS_VERSION = stringKey("faas.version"); - - /** - * The execution environment ID as a string, that will be potentially reused for other invocations - * to the same function/function version. - * - *

Notes: - * - *

    - *
  • AWS Lambda: Use the (full) log stream name. - *
- */ - public static final AttributeKey FAAS_INSTANCE = stringKey("faas.instance"); - - /** - * The amount of memory available to the serverless function in MiB. - * - *

Notes: - * - *

    - *
  • It's recommended to set this attribute since e.g. too little memory can easily stop a - * Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable - * {@code AWS_LAMBDA_FUNCTION_MEMORY_SIZE} provides this information. - *
- */ - public static final AttributeKey FAAS_MAX_MEMORY = longKey("faas.max_memory"); - - /** Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. */ - public static final AttributeKey HOST_ID = stringKey("host.id"); - - /** - * Name of the host. On Unix systems, it may contain what the hostname command returns, or the - * fully qualified hostname, or another name specified by the user. - */ - public static final AttributeKey HOST_NAME = stringKey("host.name"); - - /** Type of host. For Cloud, this must be the machine type. */ - public static final AttributeKey HOST_TYPE = stringKey("host.type"); - - /** The CPU architecture the host system is running on. */ - public static final AttributeKey HOST_ARCH = stringKey("host.arch"); - - /** Name of the VM image or OS install the host was instantiated from. */ - public static final AttributeKey HOST_IMAGE_NAME = stringKey("host.image.name"); - - /** VM image ID. For Cloud, this value is from the provider. */ - public static final AttributeKey HOST_IMAGE_ID = stringKey("host.image.id"); - - /** - * The version string of the VM image as defined in Version - * Attributes. - */ - public static final AttributeKey HOST_IMAGE_VERSION = stringKey("host.image.version"); - - /** The name of the cluster. */ - public static final AttributeKey K8S_CLUSTER_NAME = stringKey("k8s.cluster.name"); - - /** The name of the Node. */ - public static final AttributeKey K8S_NODE_NAME = stringKey("k8s.node.name"); - - /** The UID of the Node. */ - public static final AttributeKey K8S_NODE_UID = stringKey("k8s.node.uid"); - - /** The name of the namespace that the pod is running in. */ - public static final AttributeKey K8S_NAMESPACE_NAME = stringKey("k8s.namespace.name"); - - /** The UID of the Pod. */ - public static final AttributeKey K8S_POD_UID = stringKey("k8s.pod.uid"); - - /** The name of the Pod. */ - public static final AttributeKey K8S_POD_NAME = stringKey("k8s.pod.name"); - - /** - * The name of the Container from Pod specification, must be unique within a Pod. Container - * runtime usually uses different globally unique name ({@code container.name}). - */ - public static final AttributeKey K8S_CONTAINER_NAME = stringKey("k8s.container.name"); - - /** - * Number of times the container was restarted. This attribute can be used to identify a - * particular container (running or stopped) within a container spec. - */ - public static final AttributeKey K8S_CONTAINER_RESTART_COUNT = - longKey("k8s.container.restart_count"); - - /** The UID of the ReplicaSet. */ - public static final AttributeKey K8S_REPLICASET_UID = stringKey("k8s.replicaset.uid"); - - /** The name of the ReplicaSet. */ - public static final AttributeKey K8S_REPLICASET_NAME = stringKey("k8s.replicaset.name"); - - /** The UID of the Deployment. */ - public static final AttributeKey K8S_DEPLOYMENT_UID = stringKey("k8s.deployment.uid"); - - /** The name of the Deployment. */ - public static final AttributeKey K8S_DEPLOYMENT_NAME = stringKey("k8s.deployment.name"); - - /** The UID of the StatefulSet. */ - public static final AttributeKey K8S_STATEFULSET_UID = stringKey("k8s.statefulset.uid"); - - /** The name of the StatefulSet. */ - public static final AttributeKey K8S_STATEFULSET_NAME = stringKey("k8s.statefulset.name"); - - /** The UID of the DaemonSet. */ - public static final AttributeKey K8S_DAEMONSET_UID = stringKey("k8s.daemonset.uid"); - - /** The name of the DaemonSet. */ - public static final AttributeKey K8S_DAEMONSET_NAME = stringKey("k8s.daemonset.name"); - - /** The UID of the Job. */ - public static final AttributeKey K8S_JOB_UID = stringKey("k8s.job.uid"); - - /** The name of the Job. */ - public static final AttributeKey K8S_JOB_NAME = stringKey("k8s.job.name"); - - /** The UID of the CronJob. */ - public static final AttributeKey K8S_CRONJOB_UID = stringKey("k8s.cronjob.uid"); - - /** The name of the CronJob. */ - public static final AttributeKey K8S_CRONJOB_NAME = stringKey("k8s.cronjob.name"); - - /** The operating system type. */ - public static final AttributeKey OS_TYPE = stringKey("os.type"); - - /** - * Human readable (not intended to be parsed) OS version information, like e.g. reported by {@code - * ver} or {@code lsb_release -a} commands. - */ - public static final AttributeKey OS_DESCRIPTION = stringKey("os.description"); - - /** Human readable operating system name. */ - public static final AttributeKey OS_NAME = stringKey("os.name"); - - /** - * The version string of the operating system as defined in Version Attributes. - */ - public static final AttributeKey OS_VERSION = stringKey("os.version"); - - /** Process identifier (PID). */ - public static final AttributeKey PROCESS_PID = longKey("process.pid"); - - /** Parent Process identifier (PID). */ - public static final AttributeKey PROCESS_PARENT_PID = longKey("process.parent_pid"); - - /** - * The name of the process executable. On Linux based systems, can be set to the {@code Name} in - * {@code proc/[pid]/status}. On Windows, can be set to the base name of {@code - * GetProcessImageFileNameW}. - */ - public static final AttributeKey PROCESS_EXECUTABLE_NAME = - stringKey("process.executable.name"); - - /** - * The full path to the process executable. On Linux based systems, can be set to the target of - * {@code proc/[pid]/exe}. On Windows, can be set to the result of {@code - * GetProcessImageFileNameW}. - */ - public static final AttributeKey PROCESS_EXECUTABLE_PATH = - stringKey("process.executable.path"); - - /** - * The command used to launch the process (i.e. the command name). On Linux based systems, can be - * set to the zeroth string in {@code proc/[pid]/cmdline}. On Windows, can be set to the first - * parameter extracted from {@code GetCommandLineW}. - */ - public static final AttributeKey PROCESS_COMMAND = stringKey("process.command"); - - /** - * The full command used to launch the process as a single string representing the full command. - * On Windows, can be set to the result of {@code GetCommandLineW}. Do not set this if you have to - * assemble it just for monitoring; use {@code process.command_args} instead. - */ - public static final AttributeKey PROCESS_COMMAND_LINE = stringKey("process.command_line"); - - /** - * All the command arguments (including the command/executable itself) as received by the process. - * On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according - * to the list of null-delimited strings extracted from {@code proc/[pid]/cmdline}. For libc-based - * executables, this would be the full argv vector passed to {@code main}. - */ - public static final AttributeKey> PROCESS_COMMAND_ARGS = - stringArrayKey("process.command_args"); - - /** The username of the user that owns the process. */ - public static final AttributeKey PROCESS_OWNER = stringKey("process.owner"); - - /** - * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name - * of the compiler. - */ - public static final AttributeKey PROCESS_RUNTIME_NAME = stringKey("process.runtime.name"); - - /** - * The version of the runtime of this process, as returned by the runtime without modification. - */ - public static final AttributeKey PROCESS_RUNTIME_VERSION = - stringKey("process.runtime.version"); - - /** - * An additional description about the runtime of the process, for example a specific vendor - * customization of the runtime environment. - */ - public static final AttributeKey PROCESS_RUNTIME_DESCRIPTION = - stringKey("process.runtime.description"); - - /** - * Logical name of the service. - * - *

Notes: - * - *

    - *
  • MUST be the same for all instances of horizontally scaled services. If the value was not - * specified, SDKs MUST fallback to {@code unknown_service:} concatenated with {@code process.executable.name}, e.g. {@code - * unknown_service:bash}. If {@code process.executable.name} is not available, the value - * MUST be set to {@code unknown_service}. - *
- */ - public static final AttributeKey SERVICE_NAME = stringKey("service.name"); - - /** - * A namespace for {@code service.name}. - * - *

Notes: - * - *

    - *
  • A string value having a meaning that helps to distinguish a group of services, for - * example the team name that owns a group of services. {@code service.name} is expected to - * be unique within the same namespace. If {@code service.namespace} is not specified in the - * Resource then {@code service.name} is expected to be unique for all services that have no - * explicit namespace defined (so the empty/unspecified namespace is simply one more valid - * namespace). Zero-length namespace string is assumed equal to unspecified namespace. - *
- */ - public static final AttributeKey SERVICE_NAMESPACE = stringKey("service.namespace"); - - /** - * The string ID of the service instance. - * - *

Notes: - * - *

    - *
  • MUST be unique for each instance of the same {@code service.namespace,service.name} pair - * (in other words {@code service.namespace,service.name,service.instance.id} triplet MUST - * be globally unique). The ID helps to distinguish instances of the same service that exist - * at the same time (e.g. instances of a horizontally scaled service). It is preferable for - * the ID to be persistent and stay the same for the lifetime of the service instance, - * however it is acceptable that the ID is ephemeral and changes during important lifetime - * events for the service (e.g. service restarts). If the service has no inherent unique ID - * that can be used as the value of this attribute it is recommended to generate a random - * Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use - * Version 5, see RFC 4122 for more recommendations). - *
- */ - public static final AttributeKey SERVICE_INSTANCE_ID = stringKey("service.instance.id"); - - /** The version string of the service API or implementation. */ - public static final AttributeKey SERVICE_VERSION = stringKey("service.version"); - - /** The name of the telemetry SDK as defined above. */ - public static final AttributeKey TELEMETRY_SDK_NAME = stringKey("telemetry.sdk.name"); - - /** The language of the telemetry SDK. */ - public static final AttributeKey TELEMETRY_SDK_LANGUAGE = - stringKey("telemetry.sdk.language"); - - /** The version string of the telemetry SDK. */ - public static final AttributeKey TELEMETRY_SDK_VERSION = - stringKey("telemetry.sdk.version"); - - /** The version string of the auto instrumentation agent, if used. */ - public static final AttributeKey TELEMETRY_AUTO_VERSION = - stringKey("telemetry.auto.version"); - - /** The name of the web engine. */ - public static final AttributeKey WEBENGINE_NAME = stringKey("webengine.name"); - - /** The version of the web engine. */ - public static final AttributeKey WEBENGINE_VERSION = stringKey("webengine.version"); - - /** Additional description of the web engine (e.g. detailed version and edition information). */ - public static final AttributeKey WEBENGINE_DESCRIPTION = - stringKey("webengine.description"); - /** The name of the instrumentation scope - ({@code InstrumentationScope.Name} in OTLP). */ public static final AttributeKey OTEL_SCOPE_NAME = stringKey("otel.scope.name"); @@ -1670,68 +1113,6 @@ public static final class EventDomainValues { private EventDomainValues() {} } - public static final class CloudProviderValues { - /** Alibaba Cloud. */ - public static final String ALIBABA_CLOUD = "alibaba_cloud"; - /** Amazon Web Services. */ - public static final String AWS = "aws"; - /** Microsoft Azure. */ - public static final String AZURE = "azure"; - /** Google Cloud Platform. */ - public static final String GCP = "gcp"; - /** Tencent Cloud. */ - public static final String TENCENT_CLOUD = "tencent_cloud"; - - private CloudProviderValues() {} - } - - public static final class CloudPlatformValues { - /** Alibaba Cloud Elastic Compute Service. */ - public static final String ALIBABA_CLOUD_ECS = "alibaba_cloud_ecs"; - /** Alibaba Cloud Function Compute. */ - public static final String ALIBABA_CLOUD_FC = "alibaba_cloud_fc"; - /** AWS Elastic Compute Cloud. */ - public static final String AWS_EC2 = "aws_ec2"; - /** AWS Elastic Container Service. */ - public static final String AWS_ECS = "aws_ecs"; - /** AWS Elastic Kubernetes Service. */ - public static final String AWS_EKS = "aws_eks"; - /** AWS Lambda. */ - public static final String AWS_LAMBDA = "aws_lambda"; - /** AWS Elastic Beanstalk. */ - public static final String AWS_ELASTIC_BEANSTALK = "aws_elastic_beanstalk"; - /** AWS App Runner. */ - public static final String AWS_APP_RUNNER = "aws_app_runner"; - /** Azure Virtual Machines. */ - public static final String AZURE_VM = "azure_vm"; - /** Azure Container Instances. */ - public static final String AZURE_CONTAINER_INSTANCES = "azure_container_instances"; - /** Azure Kubernetes Service. */ - public static final String AZURE_AKS = "azure_aks"; - /** Azure Functions. */ - public static final String AZURE_FUNCTIONS = "azure_functions"; - /** Azure App Service. */ - public static final String AZURE_APP_SERVICE = "azure_app_service"; - /** Google Cloud Compute Engine (GCE). */ - public static final String GCP_COMPUTE_ENGINE = "gcp_compute_engine"; - /** Google Cloud Run. */ - public static final String GCP_CLOUD_RUN = "gcp_cloud_run"; - /** Google Cloud Kubernetes Engine (GKE). */ - public static final String GCP_KUBERNETES_ENGINE = "gcp_kubernetes_engine"; - /** Google Cloud Functions (GCF). */ - public static final String GCP_CLOUD_FUNCTIONS = "gcp_cloud_functions"; - /** Google Cloud App Engine (GAE). */ - public static final String GCP_APP_ENGINE = "gcp_app_engine"; - /** Tencent Cloud Cloud Virtual Machine (CVM). */ - public static final String TENCENT_CLOUD_CVM = "tencent_cloud_cvm"; - /** Tencent Cloud Elastic Kubernetes Service (EKS). */ - public static final String TENCENT_CLOUD_EKS = "tencent_cloud_eks"; - /** Tencent Cloud Serverless Cloud Function (SCF). */ - public static final String TENCENT_CLOUD_SCF = "tencent_cloud_scf"; - - private CloudPlatformValues() {} - } - public static final class AwsEcsLaunchtypeValues { /** ec2. */ public static final String EC2 = "ec2"; @@ -1741,81 +1122,6 @@ public static final class AwsEcsLaunchtypeValues { private AwsEcsLaunchtypeValues() {} } - public static final class HostArchValues { - /** AMD64. */ - public static final String AMD64 = "amd64"; - /** ARM32. */ - public static final String ARM32 = "arm32"; - /** ARM64. */ - public static final String ARM64 = "arm64"; - /** Itanium. */ - public static final String IA64 = "ia64"; - /** 32-bit PowerPC. */ - public static final String PPC32 = "ppc32"; - /** 64-bit PowerPC. */ - public static final String PPC64 = "ppc64"; - /** IBM z/Architecture. */ - public static final String S390X = "s390x"; - /** 32-bit x86. */ - public static final String X86 = "x86"; - - private HostArchValues() {} - } - - public static final class OsTypeValues { - /** Microsoft Windows. */ - public static final String WINDOWS = "windows"; - /** Linux. */ - public static final String LINUX = "linux"; - /** Apple Darwin. */ - public static final String DARWIN = "darwin"; - /** FreeBSD. */ - public static final String FREEBSD = "freebsd"; - /** NetBSD. */ - public static final String NETBSD = "netbsd"; - /** OpenBSD. */ - public static final String OPENBSD = "openbsd"; - /** DragonFly BSD. */ - public static final String DRAGONFLYBSD = "dragonflybsd"; - /** HP-UX (Hewlett Packard Unix). */ - public static final String HPUX = "hpux"; - /** AIX (Advanced Interactive eXecutive). */ - public static final String AIX = "aix"; - /** SunOS, Oracle Solaris. */ - public static final String SOLARIS = "solaris"; - /** IBM z/OS. */ - public static final String Z_OS = "z_os"; - - private OsTypeValues() {} - } - - public static final class TelemetrySdkLanguageValues { - /** cpp. */ - public static final String CPP = "cpp"; - /** dotnet. */ - public static final String DOTNET = "dotnet"; - /** erlang. */ - public static final String ERLANG = "erlang"; - /** go. */ - public static final String GO = "go"; - /** java. */ - public static final String JAVA = "java"; - /** nodejs. */ - public static final String NODEJS = "nodejs"; - /** php. */ - public static final String PHP = "php"; - /** python. */ - public static final String PYTHON = "python"; - /** ruby. */ - public static final String RUBY = "ruby"; - /** webjs. */ - public static final String WEBJS = "webjs"; - /** swift. */ - public static final String SWIFT = "swift"; - - private TelemetrySdkLanguageValues() {} - } - public static final class OpentracingRefTypeValues { /** The parent Span depends on the child Span in some capacity. */ public static final String CHILD_OF = "child_of"; From 72c1b769598331821d6268b132d53caefec0b04a Mon Sep 17 00:00:00 2001 From: john Date: Fri, 11 Nov 2022 13:40:27 -0800 Subject: [PATCH 3/3] remove more resources, include deprecated tags and attributes --- buildscripts/semantic-convention/generate.sh | 2 +- .../templates/SemanticAttributes.java.j2 | 13 +- .../trace/attributes/SemanticAttributes.java | 114 +++--------------- 3 files changed, 30 insertions(+), 99 deletions(-) diff --git a/buildscripts/semantic-convention/generate.sh b/buildscripts/semantic-convention/generate.sh index 0f722a7823c..f94645157d8 100755 --- a/buildscripts/semantic-convention/generate.sh +++ b/buildscripts/semantic-convention/generate.sh @@ -26,7 +26,7 @@ docker run --rm \ -v ${SCRIPT_DIR}/templates:/templates \ -v ${ROOT_DIR}/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/:/output \ otel/semconvgen:$GENERATOR_VERSION \ - --exclude resource/* \ + --exclude resource/** \ -f /source code \ --template /templates/SemanticAttributes.java.j2 \ --output /output/SemanticAttributes.java \ diff --git a/buildscripts/semantic-convention/templates/SemanticAttributes.java.j2 b/buildscripts/semantic-convention/templates/SemanticAttributes.java.j2 index e1d4529e5b8..d7a7c99e66e 100644 --- a/buildscripts/semantic-convention/templates/SemanticAttributes.java.j2 +++ b/buildscripts/semantic-convention/templates/SemanticAttributes.java.j2 @@ -71,12 +71,12 @@ public final class {{class}} { *

Notes:

    {{attribute.note | render_markdown(code="{{@code {0}}}", paragraph="
  • {0}
  • ", list="{0}")}}
{%- endif %} - {%- if attribute.deprecated %} + {%- if (attribute.stability | string()) == "StabilityLevel.DEPRECATED" %} * - * @deprecated {{attribute.deprecated | to_doc_brief}}. + * @deprecated {{attribute.brief | to_doc_brief}}. {%- endif %} */ - {%- if attribute.deprecated %} + {%- if (attribute.stability | string()) == "StabilityLevel.DEPRECATED" %} @Deprecated {%- endif %} public static final AttributeKey<{{upFirst(to_java_return_type(attribute.attr_type | string))}}> {{attribute.fqn | to_const_name}} = {{to_java_key_type(attribute.attr_type | string)}}("{{attribute.fqn}}"); @@ -178,6 +178,13 @@ public final class {{class}} { @Deprecated public static final AttributeKey NET_HOST_IP = stringKey("net.host.ip"); + /** + * The ordinal number of request re-sending attempt. + * @deprecated This item has been removed as of 1.15.0 of the semantic conventions. Use {@link SemanticAttributes#HTTP_RESEND_COUNT} instead. + */ + @Deprecated + public static final AttributeKey HTTP_RETRY_COUNT = longKey("http.retry_count"); + {% endif %} private {{class}}() {} diff --git a/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/SemanticAttributes.java b/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/SemanticAttributes.java index bfcdad31992..c74f98bd9fa 100644 --- a/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/SemanticAttributes.java +++ b/semconv/src/main/java/io/opentelemetry/semconv/trace/attributes/SemanticAttributes.java @@ -53,101 +53,26 @@ public final class SemanticAttributes { */ public static final AttributeKey EVENT_DOMAIN = stringKey("event.domain"); - /** - * The Amazon Resource Name (ARN) of an ECS - * container instance. - */ - public static final AttributeKey AWS_ECS_CONTAINER_ARN = - stringKey("aws.ecs.container.arn"); - - /** - * The ARN of an ECS - * cluster. - */ - public static final AttributeKey AWS_ECS_CLUSTER_ARN = stringKey("aws.ecs.cluster.arn"); - - /** - * The launch - * type for an ECS task. - */ - public static final AttributeKey AWS_ECS_LAUNCHTYPE = stringKey("aws.ecs.launchtype"); - - /** - * The ARN of an ECS - * task definition. - */ - public static final AttributeKey AWS_ECS_TASK_ARN = stringKey("aws.ecs.task.arn"); - - /** The task definition family this task definition is a member of. */ - public static final AttributeKey AWS_ECS_TASK_FAMILY = stringKey("aws.ecs.task.family"); - - /** The revision for this task definition. */ - public static final AttributeKey AWS_ECS_TASK_REVISION = - stringKey("aws.ecs.task.revision"); - - /** The ARN of an EKS cluster. */ - public static final AttributeKey AWS_EKS_CLUSTER_ARN = stringKey("aws.eks.cluster.arn"); + /** The name of the instrumentation scope - ({@code InstrumentationScope.Name} in OTLP). */ + public static final AttributeKey OTEL_SCOPE_NAME = stringKey("otel.scope.name"); - /** - * The name(s) of the AWS log group(s) an application is writing to. - * - *

Notes: - * - *

    - *
  • Multiple log groups must be supported for cases like multi-container applications, where - * a single application has sidecar containers, and each write to their own log group. - *
- */ - public static final AttributeKey> AWS_LOG_GROUP_NAMES = - stringArrayKey("aws.log.group.names"); + /** The version of the instrumentation scope - ({@code InstrumentationScope.Version} in OTLP). */ + public static final AttributeKey OTEL_SCOPE_VERSION = stringKey("otel.scope.version"); /** - * The Amazon Resource Name(s) (ARN) of the AWS log group(s). - * - *

Notes: + * Deprecated, use the {@code otel.scope.name} attribute. * - *

+ * @deprecated Deprecated, use the `otel.scope.name` attribute. */ - public static final AttributeKey> AWS_LOG_GROUP_ARNS = - stringArrayKey("aws.log.group.arns"); - - /** The name(s) of the AWS log stream(s) an application is writing to. */ - public static final AttributeKey> AWS_LOG_STREAM_NAMES = - stringArrayKey("aws.log.stream.names"); + @Deprecated + public static final AttributeKey OTEL_LIBRARY_NAME = stringKey("otel.library.name"); /** - * The ARN(s) of the AWS log stream(s). - * - *

Notes: + * Deprecated, use the {@code otel.scope.version} attribute. * - *

+ * @deprecated Deprecated, use the `otel.scope.version` attribute. */ - public static final AttributeKey> AWS_LOG_STREAM_ARNS = - stringArrayKey("aws.log.stream.arns"); - - /** The name of the instrumentation scope - ({@code InstrumentationScope.Name} in OTLP). */ - public static final AttributeKey OTEL_SCOPE_NAME = stringKey("otel.scope.name"); - - /** The version of the instrumentation scope - ({@code InstrumentationScope.Version} in OTLP). */ - public static final AttributeKey OTEL_SCOPE_VERSION = stringKey("otel.scope.version"); - - /** Deprecated, use the {@code otel.scope.name} attribute. */ - public static final AttributeKey OTEL_LIBRARY_NAME = stringKey("otel.library.name"); - - /** Deprecated, use the {@code otel.scope.version} attribute. */ + @Deprecated public static final AttributeKey OTEL_LIBRARY_VERSION = stringKey("otel.library.version"); /** @@ -1113,15 +1038,6 @@ public static final class EventDomainValues { private EventDomainValues() {} } - public static final class AwsEcsLaunchtypeValues { - /** ec2. */ - public static final String EC2 = "ec2"; - /** fargate. */ - public static final String FARGATE = "fargate"; - - private AwsEcsLaunchtypeValues() {} - } - public static final class OpentracingRefTypeValues { /** The parent Span depends on the child Span in some capacity. */ public static final String CHILD_OF = "child_of"; @@ -1609,5 +1525,13 @@ private MessageTypeValues() {} */ @Deprecated public static final AttributeKey NET_HOST_IP = stringKey("net.host.ip"); + /** + * The ordinal number of request re-sending attempt. + * + * @deprecated This item has been removed as of 1.15.0 of the semantic conventions. Use {@link + * SemanticAttributes#HTTP_RESEND_COUNT} instead. + */ + @Deprecated public static final AttributeKey HTTP_RETRY_COUNT = longKey("http.retry_count"); + private SemanticAttributes() {} }