OpenTelemetry PHP

ResourceAttributes

Table of Contents

Constants

ANDROID_OS_API_LEVEL  = 'android.os.api_level'
Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found [here](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels).
AWS_ECS_CLUSTER_ARN  = 'aws.ecs.cluster.arn'
The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).
AWS_ECS_CONTAINER_ARN  = 'aws.ecs.container.arn'
The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).
AWS_ECS_LAUNCHTYPE  = 'aws.ecs.launchtype'
The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.
AWS_ECS_TASK_ARN  = 'aws.ecs.task.arn'
The ARN of a running [ECS task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids).
AWS_ECS_TASK_FAMILY  = 'aws.ecs.task.family'
The family name of the [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) used to create the ECS task.
AWS_ECS_TASK_ID  = 'aws.ecs.task.id'
The ID of a running ECS task. The ID MUST be extracted from `task.arn`.
AWS_ECS_TASK_REVISION  = 'aws.ecs.task.revision'
The revision for the task definition used to create the ECS task.
AWS_EKS_CLUSTER_ARN  = 'aws.eks.cluster.arn'
The ARN of an EKS cluster.
AWS_LOG_GROUP_ARNS  = 'aws.log.group.arns'
The Amazon Resource Name(s) (ARN) of the AWS log group(s).
AWS_LOG_GROUP_NAMES  = 'aws.log.group.names'
The name(s) of the AWS log group(s) an application is writing to.
AWS_LOG_STREAM_ARNS  = 'aws.log.stream.arns'
The ARN(s) of the AWS log stream(s).
AWS_LOG_STREAM_NAMES  = 'aws.log.stream.names'
The name(s) of the AWS log stream(s) an application is writing to.
BROWSER_BRANDS  = 'browser.brands'
Array of brand name and version separated by a space This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`).
BROWSER_LANGUAGE  = 'browser.language'
Preferred language of the user using the browser This value is intended to be taken from the Navigator API `navigator.language`.
BROWSER_MOBILE  = 'browser.mobile'
A boolean that is true if the browser is running on a mobile device This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute SHOULD be left unset.
BROWSER_PLATFORM  = 'browser.platform'
The platform on which the browser is running This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API SHOULD NOT be used instead and this attribute SHOULD be left unset in order for the values to be consistent.
CLOUD_ACCOUNT_ID  = 'cloud.account.id'
The cloud account ID the resource is assigned to.
CLOUD_AVAILABILITY_ZONE  = 'cloud.availability_zone'
Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.
CLOUD_PLATFORM  = 'cloud.platform'
The cloud platform in use.
CLOUD_PROVIDER  = 'cloud.provider'
Name of the cloud provider.
CLOUD_REGION  = 'cloud.region'
The geographical region the resource is running.
CLOUD_RESOURCE_ID  = 'cloud.resource_id'
Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://cloud.google.com/apis/design/resource_names#full_resource_name) on GCP)
CLOUDFOUNDRY_APP_ID  = 'cloudfoundry.app.id'
The guid of the application.
CLOUDFOUNDRY_APP_NAME  = 'cloudfoundry.app.name'
The name of the application.
CLOUDFOUNDRY_ORG_ID  = 'cloudfoundry.org.id'
The guid of the CloudFoundry org the application is running in.
CLOUDFOUNDRY_ORG_NAME  = 'cloudfoundry.org.name'
The name of the CloudFoundry organization the app is running in.
CLOUDFOUNDRY_PROCESS_ID  = 'cloudfoundry.process.id'
The UID identifying the process.
CLOUDFOUNDRY_PROCESS_TYPE  = 'cloudfoundry.process.type'
The type of process.
CLOUDFOUNDRY_SPACE_ID  = 'cloudfoundry.space.id'
The guid of the CloudFoundry space the application is running in.
CLOUDFOUNDRY_SPACE_NAME  = 'cloudfoundry.space.name'
The name of the CloudFoundry space the application is running in.
CLOUDFOUNDRY_SYSTEM_ID  = 'cloudfoundry.system.id'
A guid or another name describing the event source.
CLOUDFOUNDRY_SYSTEM_INSTANCE_ID  = 'cloudfoundry.system.instance.id'
A guid describing the concrete instance of the event source.
CONTAINER_COMMAND  = 'container.command'
The command used to run the container (i.e. the command name).
CONTAINER_COMMAND_ARGS  = 'container.command_args'
All the command arguments (including the command/executable itself) run by the container.
CONTAINER_COMMAND_LINE  = 'container.command_line'
The full command run by the container as a single string representing the full command.
CONTAINER_ID  = 'container.id'
Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/containers/run/#container-identification). The UUID might be abbreviated.
CONTAINER_IMAGE_ID  = 'container.image.id'
Runtime specific image identifier. Usually a hash algorithm followed by a UUID.
CONTAINER_IMAGE_NAME  = 'container.image.name'
Name of the image the container was built on.
CONTAINER_IMAGE_REPO_DIGESTS  = 'container.image.repo_digests'
Repo digests of the container image as provided by the container runtime.
CONTAINER_IMAGE_TAGS  = 'container.image.tags'
Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect). Should be only the `<tag>` section of the full name for example from `registry.example.com/my-org/my-image:<tag>`.
CONTAINER_LABEL  = 'container.label'
Container labels, `<key>` being the label name, the value being the label value.
CONTAINER_NAME  = 'container.name'
Container name used by container runtime.
CONTAINER_RUNTIME  = 'container.runtime'
The container runtime managing this container.
DEPLOYMENT_ENVIRONMENT_NAME  = 'deployment.environment.name'
Name of the [deployment environment](https://wikipedia.org/wiki/Deployment_environment) (aka deployment tier).
DEVICE_ID  = 'device.id'
A unique identifier representing the device
DEVICE_MANUFACTURER  = 'device.manufacturer'
The name of the device manufacturer
DEVICE_MODEL_IDENTIFIER  = 'device.model.identifier'
The model identifier for the device
DEVICE_MODEL_NAME  = 'device.model.name'
The marketing name for the device model
FAAS_INSTANCE  = 'faas.instance'
The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.
FAAS_MAX_MEMORY  = 'faas.max_memory'
The amount of memory available to the serverless function converted to Bytes.
FAAS_NAME  = 'faas.name'
The name of the single function that this runtime instance executes.
FAAS_VERSION  = 'faas.version'
The immutable version of the function being executed.
GCP_CLOUD_RUN_JOB_EXECUTION  = 'gcp.cloud_run.job.execution'
The name of the Cloud Run [execution](https://cloud.google.com/run/docs/managing/job-executions) being run for the Job, as set by the [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable.
GCP_CLOUD_RUN_JOB_TASK_INDEX  = 'gcp.cloud_run.job.task_index'
The index for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable.
GCP_GCE_INSTANCE_HOSTNAME  = 'gcp.gce.instance.hostname'
The hostname of a GCE instance. This is the full value of the default or [custom hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm).
GCP_GCE_INSTANCE_NAME  = 'gcp.gce.instance.name'
The instance name of a GCE instance. This is the value provided by `host.name`, the visible name of the instance in the Cloud Console UI, and the prefix for the default hostname of the instance as defined by the [default internal DNS name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names).
HEROKU_APP_ID  = 'heroku.app.id'
Unique identifier for the application
HEROKU_RELEASE_COMMIT  = 'heroku.release.commit'
Commit hash for the current release
HEROKU_RELEASE_CREATION_TIMESTAMP  = 'heroku.release.creation_timestamp'
Time and date the release was created
HOST_ARCH  = 'host.arch'
The CPU architecture the host system is running on.
HOST_CPU_CACHE_L2_SIZE  = 'host.cpu.cache.l2.size'
The amount of level 2 memory cache available to the processor (in Bytes).
HOST_CPU_FAMILY  = 'host.cpu.family'
Family or generation of the CPU.
HOST_CPU_MODEL_ID  = 'host.cpu.model.id'
Model identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family.
HOST_CPU_MODEL_NAME  = 'host.cpu.model.name'
Model designation of the processor.
HOST_CPU_STEPPING  = 'host.cpu.stepping'
Stepping or core revisions.
HOST_CPU_VENDOR_ID  = 'host.cpu.vendor.id'
Processor manufacturer identifier. A maximum 12-character string.
HOST_ID  = 'host.id'
Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. For non-containerized systems, this should be the `machine-id`. See the table below for the sources to use to determine the `machine-id` based on operating system.
HOST_IMAGE_ID  = 'host.image.id'
VM image ID or host OS image ID. For Cloud, this value is from the provider.
HOST_IMAGE_NAME  = 'host.image.name'
Name of the VM image or OS install the host was instantiated from.
HOST_IMAGE_VERSION  = 'host.image.version'
The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes).
HOST_IP  = 'host.ip'
Available IP addresses of the host, excluding loopback interfaces.
HOST_MAC  = 'host.mac'
Available MAC addresses of the host, excluding loopback interfaces.
HOST_NAME  = 'host.name'
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.
HOST_TYPE  = 'host.type'
Type of host. For Cloud, this must be the machine type.
K8S_CLUSTER_NAME  = 'k8s.cluster.name'
The name of the cluster.
K8S_CLUSTER_UID  = 'k8s.cluster.uid'
A pseudo-ID for the cluster, set to the UID of the `kube-system` namespace.
K8S_CONTAINER_NAME  = 'k8s.container.name'
The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (`container.name`).
K8S_CONTAINER_RESTART_COUNT  = 'k8s.container.restart_count'
Number of times the container was restarted. This attribute can be used to identify a particular container (running or stopped) within a container spec.
K8S_CONTAINER_STATUS_LAST_TERMINATED_REASON  = 'k8s.container.status.last_terminated_reason'
Last terminated reason of the Container.
K8S_CRONJOB_NAME  = 'k8s.cronjob.name'
The name of the CronJob.
K8S_CRONJOB_UID  = 'k8s.cronjob.uid'
The UID of the CronJob.
K8S_DAEMONSET_NAME  = 'k8s.daemonset.name'
The name of the DaemonSet.
K8S_DAEMONSET_UID  = 'k8s.daemonset.uid'
The UID of the DaemonSet.
K8S_DEPLOYMENT_NAME  = 'k8s.deployment.name'
The name of the Deployment.
K8S_DEPLOYMENT_UID  = 'k8s.deployment.uid'
The UID of the Deployment.
K8S_JOB_NAME  = 'k8s.job.name'
The name of the Job.
K8S_JOB_UID  = 'k8s.job.uid'
The UID of the Job.
K8S_NAMESPACE_NAME  = 'k8s.namespace.name'
The name of the namespace that the pod is running in.
K8S_NODE_NAME  = 'k8s.node.name'
The name of the Node.
K8S_NODE_UID  = 'k8s.node.uid'
The UID of the Node.
K8S_POD_ANNOTATION  = 'k8s.pod.annotation'
The annotation key-value pairs placed on the Pod, the `<key>` being the annotation name, the value being the annotation value.
K8S_POD_LABEL  = 'k8s.pod.label'
The label key-value pairs placed on the Pod, the `<key>` being the label name, the value being the label value.
K8S_POD_NAME  = 'k8s.pod.name'
The name of the Pod.
K8S_POD_UID  = 'k8s.pod.uid'
The UID of the Pod.
K8S_REPLICASET_NAME  = 'k8s.replicaset.name'
The name of the ReplicaSet.
K8S_REPLICASET_UID  = 'k8s.replicaset.uid'
The UID of the ReplicaSet.
K8S_STATEFULSET_NAME  = 'k8s.statefulset.name'
The name of the StatefulSet.
K8S_STATEFULSET_UID  = 'k8s.statefulset.uid'
The UID of the StatefulSet.
OCI_MANIFEST_DIGEST  = 'oci.manifest.digest'
The digest of the OCI image manifest. For container images specifically is the digest by which the container image is known.
OS_BUILD_ID  = 'os.build_id'
Unique identifier for a particular build or compilation of the operating system.
OS_DESCRIPTION  = 'os.description'
Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.
OS_NAME  = 'os.name'
Human readable operating system name.
OS_TYPE  = 'os.type'
The operating system type.
OS_VERSION  = 'os.version'
The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes).
OTEL_SCOPE_NAME  = 'otel.scope.name'
The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).
OTEL_SCOPE_VERSION  = 'otel.scope.version'
The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).
PROCESS_COMMAND  = 'process.command'
The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.
PROCESS_COMMAND_ARGS  = 'process.command_args'
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 `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.
PROCESS_COMMAND_LINE  = 'process.command_line'
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 `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.
PROCESS_EXECUTABLE_NAME  = 'process.executable.name'
The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.
PROCESS_EXECUTABLE_PATH  = 'process.executable.path'
The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.
PROCESS_OWNER  = 'process.owner'
The username of the user that owns the process.
PROCESS_PARENT_PID  = 'process.parent_pid'
Parent Process identifier (PPID).
PROCESS_PID  = 'process.pid'
Process identifier (PID).
PROCESS_RUNTIME_DESCRIPTION  = 'process.runtime.description'
An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.
PROCESS_RUNTIME_NAME  = 'process.runtime.name'
The name of the runtime of this process.
PROCESS_RUNTIME_VERSION  = 'process.runtime.version'
The version of the runtime of this process, as returned by the runtime without modification.
SCHEMA_URL  = 'https://opentelemetry.io/schemas/1.27.0'
The URL of the OpenTelemetry schema for these keys and values.
SERVICE_INSTANCE_ID  = 'service.instance.id'
The string ID of the service instance.
SERVICE_NAME  = 'service.name'
Logical name of the service.
SERVICE_NAMESPACE  = 'service.namespace'
A namespace for `service.name`.
SERVICE_VERSION  = 'service.version'
The version string of the service API or implementation. The format is not defined by these conventions.
TELEMETRY_DISTRO_NAME  = 'telemetry.distro.name'
The name of the auto instrumentation agent or distribution, if used.
TELEMETRY_DISTRO_VERSION  = 'telemetry.distro.version'
The version string of the auto instrumentation agent or distribution, if used.
TELEMETRY_SDK_LANGUAGE  = 'telemetry.sdk.language'
The language of the telemetry SDK.
TELEMETRY_SDK_NAME  = 'telemetry.sdk.name'
The name of the telemetry SDK as defined above.
TELEMETRY_SDK_VERSION  = 'telemetry.sdk.version'
The version string of the telemetry SDK.
USER_AGENT_ORIGINAL  = 'user_agent.original'
Full user-agent string provided by the browser 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 `navigator.userAgent` API can be used.
WEBENGINE_DESCRIPTION  = 'webengine.description'
Additional description of the web engine (e.g. detailed version and edition information).
WEBENGINE_NAME  = 'webengine.name'
The name of the web engine.
WEBENGINE_VERSION  = 'webengine.version'
The version of the web engine.

Constants

ANDROID_OS_API_LEVEL

Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found [here](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels).

public mixed ANDROID_OS_API_LEVEL = 'android.os.api_level'

AWS_ECS_CLUSTER_ARN

The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).

public mixed AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn'

AWS_ECS_CONTAINER_ARN

The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).

public mixed AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn'

AWS_ECS_LAUNCHTYPE

The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.

public mixed AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype'

AWS_ECS_TASK_ARN

The ARN of a running [ECS task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids).

public mixed AWS_ECS_TASK_ARN = 'aws.ecs.task.arn'

AWS_ECS_TASK_FAMILY

The family name of the [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) used to create the ECS task.

public mixed AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family'

AWS_ECS_TASK_ID

The ID of a running ECS task. The ID MUST be extracted from `task.arn`.

public mixed AWS_ECS_TASK_ID = 'aws.ecs.task.id'

AWS_ECS_TASK_REVISION

The revision for the task definition used to create the ECS task.

public mixed AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision'

AWS_EKS_CLUSTER_ARN

The ARN of an EKS cluster.

public mixed AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn'

AWS_LOG_GROUP_NAMES

The name(s) of the AWS log group(s) an application is writing to.

public mixed AWS_LOG_GROUP_NAMES = 'aws.log.group.names'

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.

AWS_LOG_STREAM_ARNS

The ARN(s) of the AWS log stream(s).

public mixed AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns'

See the log stream ARN format documentation. One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.

AWS_LOG_STREAM_NAMES

The name(s) of the AWS log stream(s) an application is writing to.

public mixed AWS_LOG_STREAM_NAMES = 'aws.log.stream.names'

BROWSER_BRANDS

Array of brand name and version separated by a space This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`).

public mixed BROWSER_BRANDS = 'browser.brands'

BROWSER_LANGUAGE

Preferred language of the user using the browser This value is intended to be taken from the Navigator API `navigator.language`.

public mixed BROWSER_LANGUAGE = 'browser.language'

BROWSER_MOBILE

A boolean that is true if the browser is running on a mobile device This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute SHOULD be left unset.

public mixed BROWSER_MOBILE = 'browser.mobile'

BROWSER_PLATFORM

The platform on which the browser is running This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API SHOULD NOT be used instead and this attribute SHOULD be left unset in order for the values to be consistent.

public mixed BROWSER_PLATFORM = 'browser.platform'

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 os.type and os.name attributes. However, for consistency, the values in the browser.platform attribute should capture the exact value that the user agent provides.

CLOUD_ACCOUNT_ID

The cloud account ID the resource is assigned to.

public mixed CLOUD_ACCOUNT_ID = 'cloud.account.id'

CLOUD_AVAILABILITY_ZONE

Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.

public mixed CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone'

Availability zones are called "zones" on Alibaba Cloud and Google Cloud.

CLOUD_PLATFORM

The cloud platform in use.

public mixed CLOUD_PLATFORM = 'cloud.platform'

The prefix of the service SHOULD match the one specified in cloud.provider.

CLOUD_PROVIDER

Name of the cloud provider.

public mixed CLOUD_PROVIDER = 'cloud.provider'

CLOUD_RESOURCE_ID

Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://cloud.google.com/apis/design/resource_names#full_resource_name) on GCP)

public mixed CLOUD_RESOURCE_ID = 'cloud.resource_id'

On some cloud providers, it may not be possible to determine the full ID at startup, so it may be necessary to set cloud.resource_id as a span attribute instead.

The exact value to use for cloud.resource_id depends on the cloud provider. The following well-known definitions MUST be used if you set this attribute and they apply:

  • 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 invocable 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 /subscriptions/<SUBSCRIPTION_GUID>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<FUNCAPP>/functions/<FUNC>. This means that a span attribute MUST be used, as an Azure function app can host multiple functions that would usually share a TracerProvider.

CLOUDFOUNDRY_APP_ID

The guid of the application.

public mixed CLOUDFOUNDRY_APP_ID = 'cloudfoundry.app.id'

Application instrumentation should use the value from environment variable VCAP_APPLICATION.application_id. This is the same value as reported by cf app <app-name> --guid.

CLOUDFOUNDRY_APP_NAME

The name of the application.

public mixed CLOUDFOUNDRY_APP_NAME = 'cloudfoundry.app.name'

Application instrumentation should use the value from environment variable VCAP_APPLICATION.application_name. This is the same value as reported by cf apps.

CLOUDFOUNDRY_ORG_ID

The guid of the CloudFoundry org the application is running in.

public mixed CLOUDFOUNDRY_ORG_ID = 'cloudfoundry.org.id'

Application instrumentation should use the value from environment variable VCAP_APPLICATION.org_id. This is the same value as reported by cf org <org-name> --guid.

CLOUDFOUNDRY_ORG_NAME

The name of the CloudFoundry organization the app is running in.

public mixed CLOUDFOUNDRY_ORG_NAME = 'cloudfoundry.org.name'

Application instrumentation should use the value from environment variable VCAP_APPLICATION.org_name. This is the same value as reported by cf orgs.

CLOUDFOUNDRY_PROCESS_ID

The UID identifying the process.

public mixed CLOUDFOUNDRY_PROCESS_ID = 'cloudfoundry.process.id'

Application instrumentation should use the value from environment variable VCAP_APPLICATION.process_id. It is supposed to be equal to VCAP_APPLICATION.app_id for applications deployed to the runtime. For system components, this could be the actual PID.

CLOUDFOUNDRY_PROCESS_TYPE

The type of process.

public mixed CLOUDFOUNDRY_PROCESS_TYPE = 'cloudfoundry.process.type'

CloudFoundry applications can consist of multiple jobs. Usually the main process will be of type web. There can be additional background tasks or side-cars with different process types.

CLOUDFOUNDRY_SPACE_ID

The guid of the CloudFoundry space the application is running in.

public mixed CLOUDFOUNDRY_SPACE_ID = 'cloudfoundry.space.id'

Application instrumentation should use the value from environment variable VCAP_APPLICATION.space_id. This is the same value as reported by cf space <space-name> --guid.

CLOUDFOUNDRY_SPACE_NAME

The name of the CloudFoundry space the application is running in.

public mixed CLOUDFOUNDRY_SPACE_NAME = 'cloudfoundry.space.name'

Application instrumentation should use the value from environment variable VCAP_APPLICATION.space_name. This is the same value as reported by cf spaces.

CLOUDFOUNDRY_SYSTEM_ID

A guid or another name describing the event source.

public mixed CLOUDFOUNDRY_SYSTEM_ID = 'cloudfoundry.system.id'

CloudFoundry defines the source_id in the Loggregator v2 envelope. It is used for logs and metrics emitted by CloudFoundry. It is supposed to contain the component name, e.g. "gorouter", for CloudFoundry components.

When system components are instrumented, values from the Bosh spec should be used. The system.id should be set to spec.deployment/spec.name.

CLOUDFOUNDRY_SYSTEM_INSTANCE_ID

A guid describing the concrete instance of the event source.

public mixed CLOUDFOUNDRY_SYSTEM_INSTANCE_ID = 'cloudfoundry.system.instance.id'

CloudFoundry defines the instance_id in the Loggregator v2 envelope. It is used for logs and metrics emitted by CloudFoundry. It is supposed to contain the vm id for CloudFoundry components.

When system components are instrumented, values from the Bosh spec should be used. The system.instance.id should be set to spec.id.

CONTAINER_COMMAND

The command used to run the container (i.e. the command name).

public mixed CONTAINER_COMMAND = 'container.command'

If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage.

CONTAINER_COMMAND_ARGS

All the command arguments (including the command/executable itself) run by the container.

public mixed CONTAINER_COMMAND_ARGS = 'container.command_args'

CONTAINER_COMMAND_LINE

The full command run by the container as a single string representing the full command.

public mixed CONTAINER_COMMAND_LINE = 'container.command_line'

CONTAINER_ID

Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/containers/run/#container-identification). The UUID might be abbreviated.

public mixed CONTAINER_ID = 'container.id'

CONTAINER_IMAGE_ID

Runtime specific image identifier. Usually a hash algorithm followed by a UUID.

public mixed CONTAINER_IMAGE_ID = 'container.image.id'

Docker defines a sha256 of the image id; container.image.id corresponds to the Image field from the Docker container inspect API endpoint. K8s defines a link to the container registry repository with digest "imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625". The ID is assigned by the container runtime and can vary in different environments. Consider using oci.manifest.digest if it is important to identify the same image in different environments/runtimes.

CONTAINER_IMAGE_NAME

Name of the image the container was built on.

public mixed CONTAINER_IMAGE_NAME = 'container.image.name'

CONTAINER_IMAGE_REPO_DIGESTS

Repo digests of the container image as provided by the container runtime.

public mixed CONTAINER_IMAGE_REPO_DIGESTS = 'container.image.repo_digests'

Docker and CRI report those under the RepoDigests field.

CONTAINER_IMAGE_TAGS

Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect). Should be only the `<tag>` section of the full name for example from `registry.example.com/my-org/my-image:<tag>`.

public mixed CONTAINER_IMAGE_TAGS = 'container.image.tags'

CONTAINER_LABEL

Container labels, `<key>` being the label name, the value being the label value.

public mixed CONTAINER_LABEL = 'container.label'

CONTAINER_NAME

Container name used by container runtime.

public mixed CONTAINER_NAME = 'container.name'

CONTAINER_RUNTIME

The container runtime managing this container.

public mixed CONTAINER_RUNTIME = 'container.runtime'

DEPLOYMENT_ENVIRONMENT_NAME

Name of the [deployment environment](https://wikipedia.org/wiki/Deployment_environment) (aka deployment tier).

public mixed DEPLOYMENT_ENVIRONMENT_NAME = 'deployment.environment.name'

deployment.environment.name does not affect the uniqueness constraints defined through the service.namespace, service.name and service.instance.id resource attributes. This implies that resources carrying the following attribute combinations MUST be considered to be identifying the same service:

  • service.name=frontend, deployment.environment.name=production
  • service.name=frontend, deployment.environment.name=staging.

DEVICE_ID

A unique identifier representing the device

public mixed DEVICE_ID = 'device.id'

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.

DEVICE_MANUFACTURER

The name of the device manufacturer

public mixed DEVICE_MANUFACTURER = 'device.manufacturer'

The Android OS provides this field via Build. iOS apps SHOULD hardcode the value Apple.

DEVICE_MODEL_IDENTIFIER

The model identifier for the device

public mixed DEVICE_MODEL_IDENTIFIER = 'device.model.identifier'

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.

DEVICE_MODEL_NAME

The marketing name for the device model

public mixed DEVICE_MODEL_NAME = 'device.model.name'

It's recommended this value represents a human-readable version of the device model rather than a machine-readable alternative.

FAAS_INSTANCE

The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.

public mixed FAAS_INSTANCE = 'faas.instance'
  • AWS Lambda: Use the (full) log stream name.

FAAS_MAX_MEMORY

The amount of memory available to the serverless function converted to Bytes.

public mixed FAAS_MAX_MEMORY = 'faas.max_memory'

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 AWS_LAMBDA_FUNCTION_MEMORY_SIZE provides this information (which must be multiplied by 1,048,576).

FAAS_NAME

The name of the single function that this runtime instance executes.

public mixed FAAS_NAME = 'faas.name'

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.namespace/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 <FUNCAPP>/<FUNC>, 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 cloud.resource_id attribute).

FAAS_VERSION

The immutable version of the function being executed.

public mixed FAAS_VERSION = 'faas.version'

Depending on the cloud provider and platform, use:

  • AWS Lambda: The function version (an integer represented as a decimal string).
  • Google Cloud Run (Services): The revision (i.e., the function name plus the revision suffix).
  • Google Cloud Functions: The value of the K_REVISION environment variable.
  • Azure Functions: Not applicable. Do not set this attribute.

GCP_CLOUD_RUN_JOB_EXECUTION

The name of the Cloud Run [execution](https://cloud.google.com/run/docs/managing/job-executions) being run for the Job, as set by the [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable.

public mixed GCP_CLOUD_RUN_JOB_EXECUTION = 'gcp.cloud_run.job.execution'

GCP_CLOUD_RUN_JOB_TASK_INDEX

The index for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable.

public mixed GCP_CLOUD_RUN_JOB_TASK_INDEX = 'gcp.cloud_run.job.task_index'

GCP_GCE_INSTANCE_HOSTNAME

The hostname of a GCE instance. This is the full value of the default or [custom hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm).

public mixed GCP_GCE_INSTANCE_HOSTNAME = 'gcp.gce.instance.hostname'

GCP_GCE_INSTANCE_NAME

The instance name of a GCE instance. This is the value provided by `host.name`, the visible name of the instance in the Cloud Console UI, and the prefix for the default hostname of the instance as defined by the [default internal DNS name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names).

public mixed GCP_GCE_INSTANCE_NAME = 'gcp.gce.instance.name'

HEROKU_APP_ID

Unique identifier for the application

public mixed HEROKU_APP_ID = 'heroku.app.id'

HEROKU_RELEASE_COMMIT

Commit hash for the current release

public mixed HEROKU_RELEASE_COMMIT = 'heroku.release.commit'

HEROKU_RELEASE_CREATION_TIMESTAMP

Time and date the release was created

public mixed HEROKU_RELEASE_CREATION_TIMESTAMP = 'heroku.release.creation_timestamp'

HOST_ARCH

The CPU architecture the host system is running on.

public mixed HOST_ARCH = 'host.arch'

HOST_CPU_CACHE_L2_SIZE

The amount of level 2 memory cache available to the processor (in Bytes).

public mixed HOST_CPU_CACHE_L2_SIZE = 'host.cpu.cache.l2.size'

HOST_CPU_FAMILY

Family or generation of the CPU.

public mixed HOST_CPU_FAMILY = 'host.cpu.family'

HOST_CPU_MODEL_ID

Model identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family.

public mixed HOST_CPU_MODEL_ID = 'host.cpu.model.id'

HOST_CPU_MODEL_NAME

Model designation of the processor.

public mixed HOST_CPU_MODEL_NAME = 'host.cpu.model.name'

HOST_CPU_STEPPING

Stepping or core revisions.

public mixed HOST_CPU_STEPPING = 'host.cpu.stepping'

HOST_CPU_VENDOR_ID

Processor manufacturer identifier. A maximum 12-character string.

public mixed HOST_CPU_VENDOR_ID = 'host.cpu.vendor.id'

CPUID command returns the vendor ID string in EBX, EDX and ECX registers. Writing these to memory in this order results in a 12-character string.

HOST_ID

Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. For non-containerized systems, this should be the `machine-id`. See the table below for the sources to use to determine the `machine-id` based on operating system.

public mixed HOST_ID = 'host.id'

Collecting host.id from non-containerized systems

Non-privileged Machine ID Lookup

When collecting host.id for non-containerized systems non-privileged lookups of the machine id are preferred. SDK detector implementations MUST use the sources listed below to obtain the machine id.

OS Primary Fallback
Linux contents of /etc/machine-id contents of /var/lib/dbus/machine-id
BSD contents of /etc/hostid output of kenv -q smbios.system.uuid
MacOS IOPlatformUUID line from the output of ioreg -rd1 -c "IOPlatformExpertDevice" -
Windows MachineGuid from registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography -

Privileged Machine ID Lookup

The host.id can be looked up using privileged sources. For example, Linux systems can use the output of dmidecode -t system, dmidecode -t baseboard, dmidecode -t chassis, or read the corresponding data from the filesystem (e.g. cat /sys/devices/virtual/dmi/id/product_id, cat /sys/devices/virtual/dmi/id/product_uuid, etc), however, SDK resource detector implementations MUST not collect host.id from privileged sources. If privileged lookup of host.id is required, the value should be injected via the OTEL_RESOURCE_ATTRIBUTES environment variable.

HOST_IMAGE_ID

VM image ID or host OS image ID. For Cloud, this value is from the provider.

public mixed HOST_IMAGE_ID = 'host.image.id'

HOST_IMAGE_NAME

Name of the VM image or OS install the host was instantiated from.

public mixed HOST_IMAGE_NAME = 'host.image.name'

HOST_IMAGE_VERSION

The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes).

public mixed HOST_IMAGE_VERSION = 'host.image.version'

HOST_IP

Available IP addresses of the host, excluding loopback interfaces.

public mixed HOST_IP = 'host.ip'

IPv4 Addresses MUST be specified in dotted-quad notation. IPv6 addresses MUST be specified in the RFC 5952 format.

HOST_MAC

Available MAC addresses of the host, excluding loopback interfaces.

public mixed HOST_MAC = 'host.mac'

MAC Addresses MUST be represented in IEEE RA hexadecimal form: as hyphen-separated octets in uppercase hexadecimal form from most to least significant.

HOST_NAME

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 mixed HOST_NAME = 'host.name'

HOST_TYPE

Type of host. For Cloud, this must be the machine type.

public mixed HOST_TYPE = 'host.type'

K8S_CLUSTER_NAME

The name of the cluster.

public mixed K8S_CLUSTER_NAME = 'k8s.cluster.name'

K8S_CLUSTER_UID

A pseudo-ID for the cluster, set to the UID of the `kube-system` namespace.

public mixed K8S_CLUSTER_UID = 'k8s.cluster.uid'

K8s doesn't have support for obtaining a cluster ID. If this is ever added, we will recommend collecting the k8s.cluster.uid through the official APIs. In the meantime, we are able to use the uid of the kube-system namespace as a proxy for cluster ID. Read on for the rationale.

Every object created in a K8s cluster is assigned a distinct UID. The kube-system namespace is used by Kubernetes itself and will exist for the lifetime of the cluster. Using the uid of the kube-system namespace is a reasonable proxy for the K8s ClusterID as it will only change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are UUIDs as standardized by ISO/IEC 9834-8 and ITU-T X.667. Which states:

If generated according to one of the mechanisms defined in Rec. ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be different from all other UUIDs generated before 3603 A.D., or is extremely likely to be different (depending on the mechanism chosen).

Therefore, UIDs between clusters should be extremely unlikely to conflict.

K8S_CONTAINER_NAME

The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (`container.name`).

public mixed K8S_CONTAINER_NAME = 'k8s.container.name'

K8S_CONTAINER_RESTART_COUNT

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 mixed K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart_count'

K8S_CONTAINER_STATUS_LAST_TERMINATED_REASON

Last terminated reason of the Container.

public mixed K8S_CONTAINER_STATUS_LAST_TERMINATED_REASON = 'k8s.container.status.last_terminated_reason'

K8S_CRONJOB_NAME

The name of the CronJob.

public mixed K8S_CRONJOB_NAME = 'k8s.cronjob.name'

K8S_CRONJOB_UID

The UID of the CronJob.

public mixed K8S_CRONJOB_UID = 'k8s.cronjob.uid'

K8S_DAEMONSET_NAME

The name of the DaemonSet.

public mixed K8S_DAEMONSET_NAME = 'k8s.daemonset.name'

K8S_DAEMONSET_UID

The UID of the DaemonSet.

public mixed K8S_DAEMONSET_UID = 'k8s.daemonset.uid'

K8S_DEPLOYMENT_NAME

The name of the Deployment.

public mixed K8S_DEPLOYMENT_NAME = 'k8s.deployment.name'

K8S_DEPLOYMENT_UID

The UID of the Deployment.

public mixed K8S_DEPLOYMENT_UID = 'k8s.deployment.uid'

K8S_NAMESPACE_NAME

The name of the namespace that the pod is running in.

public mixed K8S_NAMESPACE_NAME = 'k8s.namespace.name'

K8S_NODE_NAME

The name of the Node.

public mixed K8S_NODE_NAME = 'k8s.node.name'

K8S_POD_ANNOTATION

The annotation key-value pairs placed on the Pod, the `<key>` being the annotation name, the value being the annotation value.

public mixed K8S_POD_ANNOTATION = 'k8s.pod.annotation'

K8S_POD_LABEL

The label key-value pairs placed on the Pod, the `<key>` being the label name, the value being the label value.

public mixed K8S_POD_LABEL = 'k8s.pod.label'

K8S_REPLICASET_NAME

The name of the ReplicaSet.

public mixed K8S_REPLICASET_NAME = 'k8s.replicaset.name'

K8S_REPLICASET_UID

The UID of the ReplicaSet.

public mixed K8S_REPLICASET_UID = 'k8s.replicaset.uid'

K8S_STATEFULSET_NAME

The name of the StatefulSet.

public mixed K8S_STATEFULSET_NAME = 'k8s.statefulset.name'

K8S_STATEFULSET_UID

The UID of the StatefulSet.

public mixed K8S_STATEFULSET_UID = 'k8s.statefulset.uid'

OS_BUILD_ID

Unique identifier for a particular build or compilation of the operating system.

public mixed OS_BUILD_ID = 'os.build_id'

build_id values SHOULD be obtained from the following sources:

OS Primary Fallback
Windows CurrentBuildNumber from registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion -
MacOS ProductBuildVersion from /System/Library/CoreServices/SystemVersion.plist ProductBuildVersion from /System/Library/CoreServices/ServerVersion.plist
Linux BUILD_ID from /etc/os-release BUILD_ID from /usr/lib/os-release;
contents of /proc/sys/kernel/osrelease

OS_DESCRIPTION

Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.

public mixed OS_DESCRIPTION = 'os.description'

OS_VERSION

The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes).

public mixed OS_VERSION = 'os.version'

OTEL_SCOPE_NAME

The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).

public mixed OTEL_SCOPE_NAME = 'otel.scope.name'

OTEL_SCOPE_VERSION

The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).

public mixed OTEL_SCOPE_VERSION = 'otel.scope.version'

PROCESS_COMMAND

The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.

public mixed PROCESS_COMMAND = 'process.command'

PROCESS_COMMAND_ARGS

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 `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.

public mixed PROCESS_COMMAND_ARGS = 'process.command_args'

PROCESS_COMMAND_LINE

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 `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.

public mixed PROCESS_COMMAND_LINE = 'process.command_line'

PROCESS_EXECUTABLE_NAME

The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.

public mixed PROCESS_EXECUTABLE_NAME = 'process.executable.name'

PROCESS_EXECUTABLE_PATH

The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.

public mixed PROCESS_EXECUTABLE_PATH = 'process.executable.path'

PROCESS_OWNER

The username of the user that owns the process.

public mixed PROCESS_OWNER = 'process.owner'

PROCESS_PARENT_PID

Parent Process identifier (PPID).

public mixed PROCESS_PARENT_PID = 'process.parent_pid'

PROCESS_RUNTIME_DESCRIPTION

An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.

public mixed PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description'

PROCESS_RUNTIME_NAME

The name of the runtime of this process.

public mixed PROCESS_RUNTIME_NAME = 'process.runtime.name'

PROCESS_RUNTIME_VERSION

The version of the runtime of this process, as returned by the runtime without modification.

public mixed PROCESS_RUNTIME_VERSION = 'process.runtime.version'

SCHEMA_URL

The URL of the OpenTelemetry schema for these keys and values.

public mixed SCHEMA_URL = 'https://opentelemetry.io/schemas/1.27.0'

SERVICE_INSTANCE_ID

The string ID of the service instance.

public mixed SERVICE_INSTANCE_ID = 'service.instance.id'

MUST be unique for each instance of the same service.namespace,service.name pair (in other words 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).

Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 RFC 4122 UUID, but are free to use an inherent unique ID as the source of this value if stability is desirable. In that case, the ID SHOULD be used as source of a UUID Version 5 and SHOULD use the following UUID as the namespace: 4d63009a-8d0f-11ee-aad7-4c796ed8e320.

UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is needed. Similar to what can be seen in the man page for the /etc/machine-id file, the underlying data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it or not via another resource attribute.

For applications running behind an application server (like unicorn), we do not recommend using one identifier for all processes participating in the application. Instead, it's recommended each division (e.g. a worker thread in unicorn) to have its own instance.id.

It's not recommended for a Collector to set service.instance.id if it can't unambiguously determine the service instance that is generating that telemetry. For instance, creating an UUID based on pod.name will likely be wrong, as the Collector might not know from which container within that pod the telemetry originated. However, Collectors can set the service.instance.id if they can unambiguously determine the service instance for that telemetry. This is typically the case for scraping receivers, as they know the target address and port.

SERVICE_NAME

Logical name of the service.

public mixed SERVICE_NAME = 'service.name'

MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to unknown_service: concatenated with process.executable.name, e.g. unknown_service:bash. If process.executable.name is not available, the value MUST be set to unknown_service.

SERVICE_NAMESPACE

A namespace for `service.name`.

public mixed SERVICE_NAMESPACE = 'service.namespace'

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. service.name is expected to be unique within the same namespace. If service.namespace is not specified in the Resource then 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.

SERVICE_VERSION

The version string of the service API or implementation. The format is not defined by these conventions.

public mixed SERVICE_VERSION = 'service.version'

TELEMETRY_DISTRO_NAME

The name of the auto instrumentation agent or distribution, if used.

public mixed TELEMETRY_DISTRO_NAME = 'telemetry.distro.name'

Official auto instrumentation agents and distributions SHOULD set the telemetry.distro.name attribute to a string starting with opentelemetry-, e.g. opentelemetry-java-instrumentation.

TELEMETRY_DISTRO_VERSION

The version string of the auto instrumentation agent or distribution, if used.

public mixed TELEMETRY_DISTRO_VERSION = 'telemetry.distro.version'

TELEMETRY_SDK_LANGUAGE

The language of the telemetry SDK.

public mixed TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language'

TELEMETRY_SDK_NAME

The name of the telemetry SDK as defined above.

public mixed TELEMETRY_SDK_NAME = 'telemetry.sdk.name'

The OpenTelemetry SDK MUST set the telemetry.sdk.name attribute to opentelemetry. If another SDK, like a fork or a vendor-provided implementation, is used, this SDK MUST set the telemetry.sdk.name attribute to the fully-qualified class or module name of this SDK's main entry point or another suitable identifier depending on the language. The identifier opentelemetry is reserved and MUST NOT be used in this case. All custom identifiers SHOULD be stable across different versions of an implementation.

TELEMETRY_SDK_VERSION

The version string of the telemetry SDK.

public mixed TELEMETRY_SDK_VERSION = 'telemetry.sdk.version'

USER_AGENT_ORIGINAL

Full user-agent string provided by the browser 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 `navigator.userAgent` API can be used.

public mixed USER_AGENT_ORIGINAL = 'user_agent.original'

WEBENGINE_DESCRIPTION

Additional description of the web engine (e.g. detailed version and edition information).

public mixed WEBENGINE_DESCRIPTION = 'webengine.description'

WEBENGINE_NAME

The name of the web engine.

public mixed WEBENGINE_NAME = 'webengine.name'

WEBENGINE_VERSION

The version of the web engine.

public mixed WEBENGINE_VERSION = 'webengine.version'

        
On this page

Search results