K8s
Kubernetes Attributes
Kubernetes resource attributes.
Attribute | Type | Description | Examples | Stability |
---|---|---|---|---|
k8s.cluster.name | string | The name of the cluster. | opentelemetry-cluster | |
k8s.cluster.uid | string | A pseudo-ID for the cluster, set to the UID of the kube-system namespace. [1] | 218fc5a9-a5f1-4b54-aa05-46717d0ab26d | |
k8s.container.name | string | The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (container.name ). | redis | |
k8s.container.restart_count | int | 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 | string | Last terminated reason of the Container. | Evicted ; Error | |
k8s.container.status.reason | string | The reason for the container state. Corresponds to the reason field of the: K8s ContainerStateWaiting or K8s ContainerStateTerminated | ContainerCreating ; CrashLoopBackOff ; CreateContainerConfigError ; ErrImagePull ; ImagePullBackOff ; OOMKilled ; Completed ; Error ; ContainerCannotRun | |
k8s.container.status.state | string | The state of the container. K8s ContainerState | terminated ; running ; waiting | |
k8s.cronjob.annotation.<key> | string | The cronjob annotation placed on the CronJob, the <key> being the annotation name, the value being the annotation value. [2] | 4 ; `` | |
k8s.cronjob.label.<key> | string | The label placed on the CronJob, the <key> being the label name, the value being the label value. [3] | weekly ; `` | |
k8s.cronjob.name | string | The name of the CronJob. | opentelemetry | |
k8s.cronjob.uid | string | The UID of the CronJob. | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.daemonset.annotation.<key> | string | The annotation placed on the DaemonSet, the <key> being the annotation name, the value being the annotation value, even if the value is empty. [4] | 1 ; `` | |
k8s.daemonset.label.<key> | string | The label placed on the DaemonSet, the <key> being the label name, the value being the label value, even if the value is empty. [5] | guestbook ; `` | |
k8s.daemonset.name | string | The name of the DaemonSet. | opentelemetry | |
k8s.daemonset.uid | string | The UID of the DaemonSet. | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.deployment.annotation.<key> | string | The annotation placed on the Deployment, the <key> being the annotation name, the value being the annotation value, even if the value is empty. [6] | 1 ; `` | |
k8s.deployment.label.<key> | string | The label placed on the Deployment, the <key> being the label name, the value being the label value, even if the value is empty. [7] | guestbook ; `` | |
k8s.deployment.name | string | The name of the Deployment. | opentelemetry | |
k8s.deployment.uid | string | The UID of the Deployment. | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.hpa.metric.type | string | The type of metric source for the horizontal pod autoscaler. [8] | Resource ; ContainerResource | |
k8s.hpa.name | string | The name of the horizontal pod autoscaler. | opentelemetry | |
k8s.hpa.scaletargetref.api_version | string | The API version of the target resource to scale for the HorizontalPodAutoscaler. [9] | apps/v1 ; autoscaling/v2 | |
k8s.hpa.scaletargetref.kind | string | The kind of the target resource to scale for the HorizontalPodAutoscaler. [10] | Deployment ; StatefulSet | |
k8s.hpa.scaletargetref.name | string | The name of the target resource to scale for the HorizontalPodAutoscaler. [11] | my-deployment ; my-statefulset | |
k8s.hpa.uid | string | The UID of the horizontal pod autoscaler. | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.hugepage.size | string | The size (identifier) of the K8s huge page. | 2Mi | |
k8s.job.annotation.<key> | string | The annotation placed on the Job, the <key> being the annotation name, the value being the annotation value, even if the value is empty. [12] | 1 ; `` | |
k8s.job.label.<key> | string | The label placed on the Job, the <key> being the label name, the value being the label value, even if the value is empty. [13] | ci ; `` | |
k8s.job.name | string | The name of the Job. | opentelemetry | |
k8s.job.uid | string | The UID of the Job. | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.namespace.annotation.<key> | string | The annotation placed on the Namespace, the <key> being the annotation name, the value being the annotation value, even if the value is empty. [14] | 0 ; `` | |
k8s.namespace.label.<key> | string | The label placed on the Namespace, the <key> being the label name, the value being the label value, even if the value is empty. [15] | default ; `` | |
k8s.namespace.name | string | The name of the namespace that the pod is running in. | default | |
k8s.namespace.phase | string | The phase of the K8s namespace. [16] | active ; terminating | |
k8s.node.annotation.<key> | string | The annotation placed on the Node, the <key> being the annotation name, the value being the annotation value, even if the value is empty. [17] | 0 ; `` | |
k8s.node.condition.status | string | The status of the condition, one of True, False, Unknown. [18] | true ; false ; unknown | |
k8s.node.condition.type | string | The condition type of a K8s Node. [19] | Ready ; DiskPressure | |
k8s.node.label.<key> | string | The label placed on the Node, the <key> being the label name, the value being the label value, even if the value is empty. [20] | arm64 ; `` | |
k8s.node.name | string | The name of the Node. | node-1 | |
k8s.node.uid | string | The UID of the Node. | 1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2 | |
k8s.pod.annotation.<key> | string | The annotation placed on the Pod, the <key> being the annotation name, the value being the annotation value. [21] | true ; x64 ; `` | |
k8s.pod.label.<key> | string | The label placed on the Pod, the <key> being the label name, the value being the label value. [22] | my-app ; x64 ; `` | |
k8s.pod.name | string | The name of the Pod. | opentelemetry-pod-autoconf | |
k8s.pod.uid | string | The UID of the Pod. | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.replicaset.annotation.<key> | string | The annotation placed on the ReplicaSet, the <key> being the annotation name, the value being the annotation value, even if the value is empty. [23] | 0 ; `` | |
k8s.replicaset.label.<key> | string | The label placed on the ReplicaSet, the <key> being the label name, the value being the label value, even if the value is empty. [24] | guestbook ; `` | |
k8s.replicaset.name | string | The name of the ReplicaSet. | opentelemetry | |
k8s.replicaset.uid | string | The UID of the ReplicaSet. | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.replicationcontroller.name | string | The name of the replication controller. | opentelemetry | |
k8s.replicationcontroller.uid | string | The UID of the replication controller. | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.resourcequota.name | string | The name of the resource quota. | opentelemetry | |
k8s.resourcequota.resource_name | string | The name of the K8s resource a resource quota defines. [25] | count/replicationcontrollers | |
k8s.resourcequota.uid | string | The UID of the resource quota. | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.statefulset.annotation.<key> | string | The annotation placed on the StatefulSet, the <key> being the annotation name, the value being the annotation value, even if the value is empty. [26] | 1 ; `` | |
k8s.statefulset.label.<key> | string | The label placed on the StatefulSet, the <key> being the label name, the value being the label value, even if the value is empty. [27] | guestbook ; `` | |
k8s.statefulset.name | string | The name of the StatefulSet. | opentelemetry | |
k8s.statefulset.uid | string | The UID of the StatefulSet. | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.storageclass.name | string | The name of K8s StorageClass object. | gold.storageclass.storage.k8s.io | |
k8s.volume.name | string | The name of the K8s volume. | volume0 | |
k8s.volume.type | string | The type of the K8s volume. | emptyDir ; persistentVolumeClaim |
[1] 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.
[2] k8s.cronjob.annotation.<key>
: Examples:
- An annotation
retries
with value4
SHOULD be recorded as thek8s.cronjob.annotation.retries
attribute with value"4"
. - An annotation
data
with empty string value SHOULD be recorded as thek8s.cronjob.annotation.data
attribute with value""
.
[3] k8s.cronjob.label.<key>
: Examples:
- A label
type
with valueweekly
SHOULD be recorded as thek8s.cronjob.label.type
attribute with value"weekly"
. - A label
automated
with empty string value SHOULD be recorded as thek8s.cronjob.label.automated
attribute with value""
.
[4] k8s.daemonset.annotation.<key>
: Examples:
- A label
replicas
with value1
SHOULD be recorded as thek8s.daemonset.annotation.replicas
attribute with value"1"
. - A label
data
with empty string value SHOULD be recorded as thek8s.daemonset.annotation.data
attribute with value""
.
[5] k8s.daemonset.label.<key>
: Examples:
- A label
app
with valueguestbook
SHOULD be recorded as thek8s.daemonset.label.app
attribute with value"guestbook"
. - A label
data
with empty string value SHOULD be recorded as thek8s.daemonset.label.injected
attribute with value""
.
[6] k8s.deployment.annotation.<key>
: Examples:
- A label
replicas
with value1
SHOULD be recorded as thek8s.deployment.annotation.replicas
attribute with value"1"
. - A label
data
with empty string value SHOULD be recorded as thek8s.deployment.annotation.data
attribute with value""
.
[7] k8s.deployment.label.<key>
: Examples:
- A label
replicas
with value0
SHOULD be recorded as thek8s.deployment.label.app
attribute with value"guestbook"
. - A label
injected
with empty string value SHOULD be recorded as thek8s.deployment.label.injected
attribute with value""
.
[8] k8s.hpa.metric.type
: This attribute reflects the type
field of spec.metrics[] in the HPA.
[9] k8s.hpa.scaletargetref.api_version
: This maps to the apiVersion
field in the scaleTargetRef
of the HPA spec.
[10] k8s.hpa.scaletargetref.kind
: This maps to the kind
field in the scaleTargetRef
of the HPA spec.
[11] k8s.hpa.scaletargetref.name
: This maps to the name
field in the scaleTargetRef
of the HPA spec.
[12] k8s.job.annotation.<key>
: Examples:
- A label
number
with value1
SHOULD be recorded as thek8s.job.annotation.number
attribute with value"1"
. - A label
data
with empty string value SHOULD be recorded as thek8s.job.annotation.data
attribute with value""
.
[13] k8s.job.label.<key>
: Examples:
- A label
jobtype
with valueci
SHOULD be recorded as thek8s.job.label.jobtype
attribute with value"ci"
. - A label
data
with empty string value SHOULD be recorded as thek8s.job.label.automated
attribute with value""
.
[14] k8s.namespace.annotation.<key>
: Examples:
- A label
ttl
with value0
SHOULD be recorded as thek8s.namespace.annotation.ttl
attribute with value"0"
. - A label
data
with empty string value SHOULD be recorded as thek8s.namespace.annotation.data
attribute with value""
.
[15] k8s.namespace.label.<key>
: Examples:
- A label
kubernetes.io/metadata.name
with valuedefault
SHOULD be recorded as thek8s.namespace.label.kubernetes.io/metadata.name
attribute with value"default"
. - A label
data
with empty string value SHOULD be recorded as thek8s.namespace.label.data
attribute with value""
.
[16] k8s.namespace.phase
: This attribute aligns with the phase
field of the
K8s NamespaceStatus
[17] k8s.node.annotation.<key>
: Examples:
- An annotation
node.alpha.kubernetes.io/ttl
with value0
SHOULD be recorded as thek8s.node.annotation.node.alpha.kubernetes.io/ttl
attribute with value"0"
. - An annotation
data
with empty string value SHOULD be recorded as thek8s.node.annotation.data
attribute with value""
.
[18] k8s.node.condition.status
: This attribute aligns with the status
field of the
NodeCondition
[19] k8s.node.condition.type
: K8s Node conditions as described
by K8s documentation.
This attribute aligns with the type
field of the
NodeCondition
The set of possible values is not limited to those listed here. Managed Kubernetes environments, or custom controllers MAY introduce additional node condition types. When this occurs, the exact value as reported by the Kubernetes API SHOULD be used.
[20] k8s.node.label.<key>
: Examples:
- A label
kubernetes.io/arch
with valuearm64
SHOULD be recorded as thek8s.node.label.kubernetes.io/arch
attribute with value"arm64"
. - A label
data
with empty string value SHOULD be recorded as thek8s.node.label.data
attribute with value""
.
[21] k8s.pod.annotation.<key>
: Examples:
- An annotation
kubernetes.io/enforce-mountable-secrets
with valuetrue
SHOULD be recorded as thek8s.pod.annotation.kubernetes.io/enforce-mountable-secrets
attribute with value"true"
. - An annotation
mycompany.io/arch
with valuex64
SHOULD be recorded as thek8s.pod.annotation.mycompany.io/arch
attribute with value"x64"
. - An annotation
data
with empty string value SHOULD be recorded as thek8s.pod.annotation.data
attribute with value""
.
[22] k8s.pod.label.<key>
: Examples:
- A label
app
with valuemy-app
SHOULD be recorded as thek8s.pod.label.app
attribute with value"my-app"
. - A label
mycompany.io/arch
with valuex64
SHOULD be recorded as thek8s.pod.label.mycompany.io/arch
attribute with value"x64"
. - A label
data
with empty string value SHOULD be recorded as thek8s.pod.label.data
attribute with value""
.
[23] k8s.replicaset.annotation.<key>
: Examples:
- A label
replicas
with value0
SHOULD be recorded as thek8s.replicaset.annotation.replicas
attribute with value"0"
. - A label
data
with empty string value SHOULD be recorded as thek8s.replicaset.annotation.data
attribute with value""
.
[24] k8s.replicaset.label.<key>
: Examples:
- A label
app
with valueguestbook
SHOULD be recorded as thek8s.replicaset.label.app
attribute with value"guestbook"
. - A label
injected
with empty string value SHOULD be recorded as thek8s.replicaset.label.injected
attribute with value""
.
[25] k8s.resourcequota.resource_name
: The value for this attribute can be either the full count/<resource>[.<group>]
string (e.g., count/deployments.apps, count/pods), or, for certain core Kubernetes resources, just the resource name (e.g., pods, services, configmaps). Both forms are supported by Kubernetes for object count quotas. See Kubernetes Resource Quotas documentation for more details.
[26] k8s.statefulset.annotation.<key>
: Examples:
- A label
replicas
with value1
SHOULD be recorded as thek8s.statefulset.annotation.replicas
attribute with value"1"
. - A label
data
with empty string value SHOULD be recorded as thek8s.statefulset.annotation.data
attribute with value""
.
[27] k8s.statefulset.label.<key>
: Examples:
- A label
replicas
with value0
SHOULD be recorded as thek8s.statefulset.label.app
attribute with value"guestbook"
. - A label
injected
with empty string value SHOULD be recorded as thek8s.statefulset.label.injected
attribute with value""
.
k8s.container.status.reason
has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
Value | Description | Stability |
---|---|---|
Completed | The container has completed execution. | |
ContainerCannotRun | The container cannot run. | |
ContainerCreating | The container is being created. | |
CrashLoopBackOff | The container is in a crash loop back off state. | |
CreateContainerConfigError | There was an error creating the container configuration. | |
ErrImagePull | There was an error pulling the container image. | |
Error | There was an error with the container. | |
ImagePullBackOff | The container image pull is in back off state. | |
OOMKilled | The container was killed due to out of memory. |
k8s.container.status.state
has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
Value | Description | Stability |
---|---|---|
running | The container is running. | |
terminated | The container has terminated. | |
waiting | The container is waiting. |
k8s.namespace.phase
has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
Value | Description | Stability |
---|---|---|
active | Active namespace phase as described by K8s API | |
terminating | Terminating namespace phase as described by K8s API |
k8s.node.condition.status
has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
Value | Description | Stability |
---|---|---|
false | condition_false | |
true | condition_true | |
unknown | condition_unknown |
k8s.node.condition.type
has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
Value | Description | Stability |
---|---|---|
DiskPressure | Pressure exists on the disk size—that is, if the disk capacity is low | |
MemoryPressure | Pressure exists on the node memory—that is, if the node memory is low | |
NetworkUnavailable | The network for the node is not correctly configured | |
PIDPressure | Pressure exists on the processes—that is, if there are too many processes on the node | |
Ready | The node is healthy and ready to accept pods |
k8s.volume.type
has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
Value | Description | Stability |
---|---|---|
configMap | A configMap volume | |
downwardAPI | A downwardAPI volume | |
emptyDir | An emptyDir volume | |
local | A local volume | |
persistentVolumeClaim | A persistentVolumeClaim volume | |
secret | A secret volume |
Deprecated Kubernetes Attributes
Describes deprecated k8s attributes.
Attribute | Type | Description | Examples | Stability |
---|---|---|---|---|
k8s.pod.labels.<key> | string | Deprecated, use k8s.pod.label instead. | my-app | Replaced by k8s.pod.label . |
Feedback
Was this page helpful?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!