Semantic conventions for Kubernetes metrics

Status: Development

K8s metrics

This document describes instruments and attributes for common K8s level metrics in OpenTelemetry. These metrics are collected from technology-specific, well-defined APIs (e.g. Kubelet’s API).

Metrics in k8s. instruments SHOULD be attached to a K8s Resource and therefore inherit its attributes, like k8s.pod.name and k8s.pod.uid.

Pod metrics

Description: Pod level metrics captured under the namespace k8s.pod.

Metric: k8s.pod.uptime

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.pod.uptimeGaugesThe time the Pod has been running [1]Developmentk8s.pod

[1]: Instrumentations SHOULD use a gauge with type double and measure uptime in seconds as a floating point number with the highest precision available. The actual accuracy would depend on the instrumentation and operating system.

Metric: k8s.pod.cpu.time

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.pod.cpu.timeCountersTotal CPU time consumed [1]Developmentk8s.pod

[1]: Total CPU time consumed by the specific Pod on all available CPU cores

Metric: k8s.pod.cpu.usage

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.pod.cpu.usageGauge{cpu}Pod’s CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs [1]Development

[1]: CPU usage of the specific Pod on all available CPU cores, averaged over the sample window

Metric: k8s.pod.memory.usage

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.pod.memory.usageGaugeByMemory usage of the Pod [1]Developmentk8s.pod

[1]: Total memory usage of the Pod

Metric: k8s.pod.network.io

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.pod.network.ioCounterByNetwork bytes for the PodDevelopmentk8s.pod
AttributeTypeDescriptionExamplesRequirement LevelStability
network.interface.namestringThe network interface name.lo; eth0RecommendedDevelopment
network.io.directionstringThe network IO operation direction.transmitRecommendedDevelopment

network.io.direction 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.

ValueDescriptionStability
receivereceiveDevelopment
transmittransmitDevelopment

Metric: k8s.pod.network.errors

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.pod.network.errorsCounter{error}Pod network errorsDevelopmentk8s.pod
AttributeTypeDescriptionExamplesRequirement LevelStability
network.interface.namestringThe network interface name.lo; eth0RecommendedDevelopment
network.io.directionstringThe network IO operation direction.transmitRecommendedDevelopment

network.io.direction 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.

ValueDescriptionStability
receivereceiveDevelopment
transmittransmitDevelopment

Container metrics

Description: Container level metrics captured under the namespace k8s.container.

Metric: k8s.container.status.state

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.container.status.stateUpDownCounter{container}Describes the number of K8s containers that are currently in a given state [1]Developmentk8s.container

[1]: All possible container states will be reported at each time interval to avoid missing metrics. Only the value corresponding to the current state will be non-zero.

AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.container.status.statestringThe state of the container. K8s ContainerStateterminated; running; waitingRequiredDevelopment

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.

ValueDescriptionStability
runningThe container is running.Development
terminatedThe container has terminated.Development
waitingThe container is waiting.Development

Metric: k8s.container.status.reason

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.container.status.reasonUpDownCounter{container}Describes the number of K8s containers that are currently in a state for a given reason [1]Developmentk8s.container

[1]: All possible container state reasons will be reported at each time interval to avoid missing metrics. Only the value corresponding to the current state reason will be non-zero.

AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.container.status.reasonstringThe reason for the container state. Corresponds to the reason field of the: K8s ContainerStateWaiting or K8s ContainerStateTerminatedContainerCreating; CrashLoopBackOff; CreateContainerConfigError; ErrImagePull; ImagePullBackOff; OOMKilled; Completed; Error; ContainerCannotRunRequiredDevelopment

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.

ValueDescriptionStability
CompletedThe container has completed execution.Development
ContainerCannotRunThe container cannot run.Development
ContainerCreatingThe container is being created.Development
CrashLoopBackOffThe container is in a crash loop back off state.Development
CreateContainerConfigErrorThere was an error creating the container configuration.Development
ErrImagePullThere was an error pulling the container image.Development
ErrorThere was an error with the container.Development
ImagePullBackOffThe container image pull is in back off state.Development
OOMKilledThe container was killed due to out of memory.Development

Node metrics

Description: Node level metrics captured under the namespace k8s.node.

Metric: k8s.node.uptime

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.node.uptimeGaugesThe time the Node has been running [1]Developmentk8s.node

[1]: Instrumentations SHOULD use a gauge with type double and measure uptime in seconds as a floating point number with the highest precision available. The actual accuracy would depend on the instrumentation and operating system.

Metric: k8s.node.allocatable.cpu

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.node.allocatable.cpuUpDownCounter{cpu}Amount of cpu allocatable on the nodeDevelopmentk8s.node

Metric: k8s.node.allocatable.memory

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.node.allocatable.memoryUpDownCounterByAmount of memory allocatable on the nodeDevelopmentk8s.node

Metric: k8s.node.allocatable.ephemeral_storage

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.node.allocatable.ephemeral_storageUpDownCounterByAmount of ephemeral-storage allocatable on the nodeDevelopmentk8s.node

Metric: k8s.node.allocatable.pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.node.allocatable.podsUpDownCounter{pod}Amount of pods allocatable on the nodeDevelopmentk8s.node

Metric: k8s.node.condition.status

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.node.condition.statusUpDownCounter{node}Describes the condition of a particular Node. [1]Developmentk8s.node

[1]: All possible node condition pairs (type and status) will be reported at each time interval to avoid missing metrics. Condition pairs corresponding to the current conditions’ statuses will be non-zero.

AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.node.condition.statusstringThe status of the condition, one of True, False, Unknown. [1]true; false; unknownRequiredDevelopment
k8s.node.condition.typestringThe condition type of a K8s Node. [2]Ready; DiskPressureRequiredDevelopment

[1] k8s.node.condition.status: This attribute aligns with the status field of the NodeCondition

[2] 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.


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.

ValueDescriptionStability
falsecondition_falseDevelopment
truecondition_trueDevelopment
unknowncondition_unknownDevelopment

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.

ValueDescriptionStability
DiskPressurePressure exists on the disk size—that is, if the disk capacity is lowDevelopment
MemoryPressurePressure exists on the node memory—that is, if the node memory is lowDevelopment
NetworkUnavailableThe network for the node is not correctly configuredDevelopment
PIDPressurePressure exists on the processes—that is, if there are too many processes on the nodeDevelopment
ReadyThe node is healthy and ready to accept podsDevelopment

Metric: k8s.node.cpu.time

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.node.cpu.timeCountersTotal CPU time consumed [1]Developmentk8s.node

[1]: Total CPU time consumed by the specific Node on all available CPU cores

Metric: k8s.node.cpu.usage

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.node.cpu.usageGauge{cpu}Node’s CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs [1]Developmentk8s.node

[1]: CPU usage of the specific Node on all available CPU cores, averaged over the sample window

Metric: k8s.node.memory.usage

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.node.memory.usageGaugeByMemory usage of the Node [1]Developmentk8s.node

[1]: Total memory usage of the Node

Metric: k8s.node.network.io

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.node.network.ioCounterByNetwork bytes for the NodeDevelopmentk8s.node
AttributeTypeDescriptionExamplesRequirement LevelStability
network.interface.namestringThe network interface name.lo; eth0RecommendedDevelopment
network.io.directionstringThe network IO operation direction.transmitRecommendedDevelopment

network.io.direction 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.

ValueDescriptionStability
receivereceiveDevelopment
transmittransmitDevelopment

Metric: k8s.node.network.errors

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.node.network.errorsCounter{error}Node network errorsDevelopmentk8s.node
AttributeTypeDescriptionExamplesRequirement LevelStability
network.interface.namestringThe network interface name.lo; eth0RecommendedDevelopment
network.io.directionstringThe network IO operation direction.transmitRecommendedDevelopment

network.io.direction 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.

ValueDescriptionStability
receivereceiveDevelopment
transmittransmitDevelopment

Deployment metrics

Description: Deployment level metrics captured under the namespace k8s.deployment.

Metric: k8s.deployment.desired_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.deployment.desired_podsUpDownCounter{pod}Number of desired replica pods in this deployment [1]Developmentk8s.deployment

[1]: This metric aligns with the replicas field of the K8s DeploymentSpec.

Metric: k8s.deployment.available_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.deployment.available_podsUpDownCounter{pod}Total number of available replica pods (ready for at least minReadySeconds) targeted by this deployment [1]Developmentk8s.deployment

[1]: This metric aligns with the availableReplicas field of the K8s DeploymentStatus.

ReplicaSet metrics

Description: ReplicaSet level metrics captured under the namespace k8s.replicaset.

Metric: k8s.replicaset.desired_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.replicaset.desired_podsUpDownCounter{pod}Number of desired replica pods in this replicaset [1]Developmentk8s.replicaset

[1]: This metric aligns with the replicas field of the K8s ReplicaSetSpec.

Metric: k8s.replicaset.available_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.replicaset.available_podsUpDownCounter{pod}Total number of available replica pods (ready for at least minReadySeconds) targeted by this replicaset [1]Developmentk8s.replicaset

[1]: This metric aligns with the availableReplicas field of the K8s ReplicaSetStatus.

ReplicationController metrics

Description: ReplicationController level metrics captured under the namespace k8s.replicationcontroller.

Metric: k8s.replicationcontroller.desired_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.replicationcontroller.desired_podsUpDownCounter{pod}Number of desired replica pods in this replication controller [1]Developmentk8s.replicationcontroller

[1]: This metric aligns with the replicas field of the K8s ReplicationControllerSpec

Metric: k8s.replicationcontroller.available_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.replicationcontroller.available_podsUpDownCounter{pod}Total number of available replica pods (ready for at least minReadySeconds) targeted by this replication controller [1]Developmentk8s.replicationcontroller

[1]: This metric aligns with the availableReplicas field of the K8s ReplicationControllerStatus

StatefulSet metrics

Description: StatefulSet level metrics captured under the namespace k8s.statefulset.

Metric: k8s.statefulset.desired_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.statefulset.desired_podsUpDownCounter{pod}Number of desired replica pods in this statefulset [1]Developmentk8s.statefulset

[1]: This metric aligns with the replicas field of the K8s StatefulSetSpec.

Metric: k8s.statefulset.ready_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.statefulset.ready_podsUpDownCounter{pod}The number of replica pods created for this statefulset with a Ready Condition [1]Developmentk8s.statefulset

[1]: This metric aligns with the readyReplicas field of the K8s StatefulSetStatus.

Metric: k8s.statefulset.current_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.statefulset.current_podsUpDownCounter{pod}The number of replica pods created by the statefulset controller from the statefulset version indicated by currentRevision [1]Developmentk8s.statefulset

[1]: This metric aligns with the currentReplicas field of the K8s StatefulSetStatus.

Metric: k8s.statefulset.updated_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.statefulset.updated_podsUpDownCounter{pod}Number of replica pods created by the statefulset controller from the statefulset version indicated by updateRevision [1]Developmentk8s.statefulset

[1]: This metric aligns with the updatedReplicas field of the K8s StatefulSetStatus.

HorizontalPodAutoscaler metrics

Description: HorizontalPodAutoscaler level metrics captured under the namespace k8s.hpa.

Metric: k8s.hpa.desired_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.hpa.desired_podsUpDownCounter{pod}Desired number of replica pods managed by this horizontal pod autoscaler, as last calculated by the autoscaler [1]Developmentk8s.hpa

[1]: This metric aligns with the desiredReplicas field of the K8s HorizontalPodAutoscalerStatus

Metric: k8s.hpa.current_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.hpa.current_podsUpDownCounter{pod}Current number of replica pods managed by this horizontal pod autoscaler, as last seen by the autoscaler [1]Developmentk8s.hpa

[1]: This metric aligns with the currentReplicas field of the K8s HorizontalPodAutoscalerStatus

Metric: k8s.hpa.max_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.hpa.max_podsUpDownCounter{pod}The upper limit for the number of replica pods to which the autoscaler can scale up [1]Developmentk8s.hpa

[1]: This metric aligns with the maxReplicas field of the K8s HorizontalPodAutoscalerSpec

Metric: k8s.hpa.min_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.hpa.min_podsUpDownCounter{pod}The lower limit for the number of replica pods to which the autoscaler can scale down [1]Developmentk8s.hpa

[1]: This metric aligns with the minReplicas field of the K8s HorizontalPodAutoscalerSpec

Metric: k8s.hpa.metric.target.cpu.value

This metric is opt-in.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.hpa.metric.target.cpu.valueGauge{cpu}Target value for CPU resource in HPA config. [1]Developmentk8s.hpa; k8s.namespace

[1]: This metric aligns with the value field of the K8s HPA MetricTarget. If the type of the metric is ContainerResource, the k8s.container.name attribute MUST be set to identify the specific container within the pod to which the metric applies.

AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.container.namestringThe name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (container.name).redisConditionally Required [1]Development
k8s.hpa.metric.typestringThe type of metric source for the horizontal pod autoscaler. [2]Resource; ContainerResourceRecommendedDevelopment

[1] k8s.container.name: if and only if k8s.hpa.metric.type is ContainerResource

[2] k8s.hpa.metric.type: This attribute reflects the type field of spec.metrics[] in the HPA.

Metric: k8s.hpa.metric.target.cpu.average_value

This metric is opt-in.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.hpa.metric.target.cpu.average_valueGauge{cpu}Target average value for CPU resource in HPA config. [1]Developmentk8s.hpa; k8s.namespace

[1]: This metric aligns with the averageValue field of the K8s HPA MetricTarget. If the type of the metric is ContainerResource, the k8s.container.name attribute MUST be set to identify the specific container within the pod to which the metric applies.

AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.container.namestringThe name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (container.name).redisConditionally Required [1]Development
k8s.hpa.metric.typestringThe type of metric source for the horizontal pod autoscaler. [2]Resource; ContainerResourceRecommendedDevelopment

[1] k8s.container.name: if and only if k8s.hpa.metric.type is ContainerResource

[2] k8s.hpa.metric.type: This attribute reflects the type field of spec.metrics[] in the HPA.

Metric: k8s.hpa.metric.target.cpu.average_utilization

This metric is opt-in.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.hpa.metric.target.cpu.average_utilizationGauge1Target average utilization, in percentage, for CPU resource in HPA config. [1]Developmentk8s.hpa; k8s.namespace

[1]: This metric aligns with the averageUtilization field of the K8s HPA MetricTarget. If the type of the metric is ContainerResource, the k8s.container.name attribute MUST be set to identify the specific container within the pod to which the metric applies.

AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.container.namestringThe name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (container.name).redisConditionally Required [1]Development
k8s.hpa.metric.typestringThe type of metric source for the horizontal pod autoscaler. [2]Resource; ContainerResourceRecommendedDevelopment

[1] k8s.container.name: if and only if k8s.hpa.metric.type is ContainerResource.

[2] k8s.hpa.metric.type: This attribute reflects the type field of spec.metrics[] in the HPA.

DaemonSet metrics

Description: DaemonSet level metrics captured under the namespace k8s.daemonset.

Metric: k8s.daemonset.current_scheduled_nodes

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.daemonset.current_scheduled_nodesUpDownCounter{node}Number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod [1]Developmentk8s.daemonset

[1]: This metric aligns with the currentNumberScheduled field of the K8s DaemonSetStatus.

Metric: k8s.daemonset.desired_scheduled_nodes

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.daemonset.desired_scheduled_nodesUpDownCounter{node}Number of nodes that should be running the daemon pod (including nodes currently running the daemon pod) [1]Developmentk8s.daemonset

[1]: This metric aligns with the desiredNumberScheduled field of the K8s DaemonSetStatus.

Metric: k8s.daemonset.misscheduled_nodes

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.daemonset.misscheduled_nodesUpDownCounter{node}Number of nodes that are running the daemon pod, but are not supposed to run the daemon pod [1]Developmentk8s.daemonset

[1]: This metric aligns with the numberMisscheduled field of the K8s DaemonSetStatus.

Metric: k8s.daemonset.ready_nodes

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.daemonset.ready_nodesUpDownCounter{node}Number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready [1]Developmentk8s.daemonset

[1]: This metric aligns with the numberReady field of the K8s DaemonSetStatus.

Job metrics

Description: Job level metrics captured under the namespace k8s.job.

Metric: k8s.job.active_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.job.active_podsUpDownCounter{pod}The number of pending and actively running pods for a job [1]Developmentk8s.job

[1]: This metric aligns with the active field of the K8s JobStatus.

Metric: k8s.job.failed_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.job.failed_podsUpDownCounter{pod}The number of pods which reached phase Failed for a job [1]Developmentk8s.job

[1]: This metric aligns with the failed field of the K8s JobStatus.

Metric: k8s.job.successful_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.job.successful_podsUpDownCounter{pod}The number of pods which reached phase Succeeded for a job [1]Developmentk8s.job

[1]: This metric aligns with the succeeded field of the K8s JobStatus.

Metric: k8s.job.desired_successful_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.job.desired_successful_podsUpDownCounter{pod}The desired number of successfully finished pods the job should be run with [1]Developmentk8s.job

[1]: This metric aligns with the completions field of the K8s JobSpec..

Metric: k8s.job.max_parallel_pods

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.job.max_parallel_podsUpDownCounter{pod}The max desired number of pods the job should run at any given time [1]Developmentk8s.job

[1]: This metric aligns with the parallelism field of the K8s JobSpec.

CronJob metrics

Description: CronJob level metrics captured under the namespace k8s.cronjob.

Metric: k8s.cronjob.active_jobs

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.cronjob.active_jobsUpDownCounter{job}The number of actively running jobs for a cronjob [1]Developmentk8s.cronjob

[1]: This metric aligns with the active field of the K8s CronJobStatus.

Namespace metrics

Description: Namespace level metrics captured under the namespace k8s.namespace.

Metric: k8s.namespace.phase

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.namespace.phaseUpDownCounter{namespace}Describes number of K8s namespaces that are currently in a given phase.Developmentk8s.namespace
AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.namespace.phasestringThe phase of the K8s namespace. [1]active; terminatingRequiredDevelopment

[1] k8s.namespace.phase: This attribute aligns with the phase field of the K8s NamespaceStatus


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.

ValueDescriptionStability
activeActive namespace phase as described by K8s APIDevelopment
terminatingTerminating namespace phase as described by K8s APIDevelopment

K8s Container metrics

Description: K8s Container level metrics captured under the namespace k8s.container.

Metric: k8s.container.cpu.limit

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.container.cpu.limitUpDownCounter{cpu}Maximum CPU resource limit set for the container [1]Developmentk8s.container

[1]: See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.

Metric: k8s.container.cpu.request

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.container.cpu.requestUpDownCounter{cpu}CPU resource requested for the container [1]Developmentk8s.container

[1]: See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.

Metric: k8s.container.memory.limit

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.container.memory.limitUpDownCounterByMaximum memory resource limit set for the container [1]Developmentk8s.container

[1]: See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.

Metric: k8s.container.memory.request

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.container.memory.requestUpDownCounterByMemory resource requested for the container [1]Developmentk8s.container

[1]: See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.

Metric: k8s.container.storage.limit

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.container.storage.limitUpDownCounterByMaximum storage resource limit set for the container [1]Developmentk8s.container

[1]: See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.

Metric: k8s.container.storage.request

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.container.storage.requestUpDownCounterByStorage resource requested for the container [1]Developmentk8s.container

[1]: See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.

Metric: k8s.container.ephemeral_storage.limit

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.container.ephemeral_storage.limitUpDownCounterByMaximum ephemeral storage resource limit set for the container [1]Developmentk8s.container

[1]: See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.

Metric: k8s.container.ephemeral_storage.request

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.container.ephemeral_storage.requestUpDownCounterByEphemeral storage resource requested for the container [1]Developmentk8s.container

[1]: See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.

Metric: k8s.container.restart.count

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.container.restart.countUpDownCounter{restart}Describes how many times the container has restarted (since the last counter reset) [1]Developmentk8s.container

[1]: This value is pulled directly from the K8s API and the value can go indefinitely high and be reset to 0 at any time depending on how your kubelet is configured to prune dead containers. It is best to not depend too much on the exact value but rather look at it as either == 0, in which case you can conclude there were no restarts in the recent past, or > 0, in which case you can conclude there were restarts in the recent past, and not try and analyze the value beyond that.

Metric: k8s.container.ready

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.container.readyUpDownCounter{container}Indicates whether the container is currently marked as ready to accept traffic, based on its readiness probe (1 = ready, 0 = not ready) [1]Developmentk8s.container

[1]: This metric SHOULD reflect the value of the ready field in the K8s ContainerStatus.

Resource Quota metrics

Description: Resource Quota level metrics captured under the namespace k8s.resourcequota.

Metric: k8s.resourcequota.cpu.limit.hard

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.cpu.limit.hardUpDownCounter{cpu}The CPU limits in a specific namespace.
The value represents the configured quota limit of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the hard field of the K8s ResourceQuotaStatus.

Metric: k8s.resourcequota.cpu.limit.used

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.cpu.limit.usedUpDownCounter{cpu}The CPU limits in a specific namespace.
The value represents the current observed total usage of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the used field of the K8s ResourceQuotaStatus.

Metric: k8s.resourcequota.cpu.request.hard

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.cpu.request.hardUpDownCounter{cpu}The CPU requests in a specific namespace.
The value represents the configured quota limit of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the hard field of the K8s ResourceQuotaStatus.

Metric: k8s.resourcequota.cpu.request.used

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.cpu.request.usedUpDownCounter{cpu}The CPU requests in a specific namespace.
The value represents the current observed total usage of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the used field of the K8s ResourceQuotaStatus.

Metric: k8s.resourcequota.memory.limit.hard

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.memory.limit.hardUpDownCounterByThe memory limits in a specific namespace.
The value represents the configured quota limit of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the hard field of the K8s ResourceQuotaStatus.

Metric: k8s.resourcequota.memory.limit.used

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.memory.limit.usedUpDownCounterByThe memory limits in a specific namespace.
The value represents the current observed total usage of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the used field of the K8s ResourceQuotaStatus.

Metric: k8s.resourcequota.memory.request.hard

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.memory.request.hardUpDownCounterByThe memory requests in a specific namespace.
The value represents the configured quota limit of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the hard field of the K8s ResourceQuotaStatus.

Metric: k8s.resourcequota.memory.request.used

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.memory.request.usedUpDownCounterByThe memory requests in a specific namespace.
The value represents the current observed total usage of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the used field of the K8s ResourceQuotaStatus.

Metric: k8s.resourcequota.hugepage_count.request.hard

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.hugepage_count.request.hardUpDownCounter{hugepage}The huge page requests in a specific namespace.
The value represents the configured quota limit of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the hard field of the K8s ResourceQuotaStatus.

AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.hugepage.sizestringThe size (identifier) of the K8s huge page.2MiRequiredDevelopment

Metric: k8s.resourcequota.hugepage_count.request.used

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.hugepage_count.request.usedUpDownCounter{hugepage}The huge page requests in a specific namespace.
The value represents the current observed total usage of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the used field of the K8s ResourceQuotaStatus.

AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.hugepage.sizestringThe size (identifier) of the K8s huge page.2MiRequiredDevelopment

Metric: k8s.resourcequota.storage.request.hard

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.storage.request.hardUpDownCounterByThe storage requests in a specific namespace.
The value represents the configured quota limit of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the hard field of the K8s ResourceQuotaStatus.

The k8s.storageclass.name should be required when a resource quota is defined for a specific storage class.

AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.storageclass.namestringThe name of K8s StorageClass object.gold.storageclass.storage.k8s.ioConditionally Required [1]Development

[1] k8s.storageclass.name: The k8s.storageclass.name should be required when a resource quota is defined for a specific storage class.

Metric: k8s.resourcequota.storage.request.used

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.storage.request.usedUpDownCounterByThe storage requests in a specific namespace.
The value represents the current observed total usage of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the used field of the K8s ResourceQuotaStatus.

The k8s.storageclass.name should be required when a resource quota is defined for a specific storage class.

AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.storageclass.namestringThe name of K8s StorageClass object.gold.storageclass.storage.k8s.ioConditionally Required [1]Development

[1] k8s.storageclass.name: The k8s.storageclass.name should be required when a resource quota is defined for a specific storage class.

Metric: k8s.resourcequota.persistentvolumeclaim_count.hard

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.persistentvolumeclaim_count.hardUpDownCounter{persistentvolumeclaim}The total number of PersistentVolumeClaims that can exist in the namespace.
The value represents the configured quota limit of the resource in the namespace. [1]Development

[1]: This metric is retrieved from the hard field of the K8s ResourceQuotaStatus.

The k8s.storageclass.name should be required when a resource quota is defined for a specific storage class.

AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.storageclass.namestringThe name of K8s StorageClass object.gold.storageclass.storage.k8s.ioConditionally Required [1]Development

[1] k8s.storageclass.name: The k8s.storageclass.name should be required when a resource quota is defined for a specific storage class.

Metric: k8s.resourcequota.persistentvolumeclaim_count.used

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.persistentvolumeclaim_count.usedUpDownCounter{persistentvolumeclaim}The total number of PersistentVolumeClaims that can exist in the namespace.
The value represents the current observed total usage of the resource in the namespace. [1]Development

[1]: This metric is retrieved from the used field of the K8s ResourceQuotaStatus.

The k8s.storageclass.name should be required when a resource quota is defined for a specific storage class.

AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.storageclass.namestringThe name of K8s StorageClass object.gold.storageclass.storage.k8s.ioConditionally Required [1]Development

[1] k8s.storageclass.name: The k8s.storageclass.name should be required when a resource quota is defined for a specific storage class.

Metric: k8s.resourcequota.ephemeral_storage.request.hard

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.ephemeral_storage.request.hardUpDownCounterByThe sum of local ephemeral storage requests in the namespace.
The value represents the configured quota limit of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the hard field of the K8s ResourceQuotaStatus.

Metric: k8s.resourcequota.ephemeral_storage.request.used

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.ephemeral_storage.request.usedUpDownCounterByThe sum of local ephemeral storage requests in the namespace.
The value represents the current observed total usage of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the used field of the K8s ResourceQuotaStatus.

Metric: k8s.resourcequota.ephemeral_storage.limit.hard

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.ephemeral_storage.limit.hardUpDownCounterByThe sum of local ephemeral storage limits in the namespace.
The value represents the configured quota limit of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the hard field of the K8s ResourceQuotaStatus.

Metric: k8s.resourcequota.ephemeral_storage.limit.used

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.ephemeral_storage.limit.usedUpDownCounterByThe sum of local ephemeral storage limits in the namespace.
The value represents the current observed total usage of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the used field of the K8s ResourceQuotaStatus.

Metric: k8s.resourcequota.object_count.hard

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.object_count.hardUpDownCounter{object}The object count limits in a specific namespace.
The value represents the configured quota limit of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the hard field of the K8s ResourceQuotaStatus.

AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.resourcequota.resource_namestringThe name of the K8s resource a resource quota defines. [1]count/replicationcontrollersRequiredDevelopment

[1] 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.

Metric: k8s.resourcequota.object_count.used

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
k8s.resourcequota.object_count.usedUpDownCounter{object}The object count limits in a specific namespace.
The value represents the current observed total usage of the resource in the namespace. [1]Developmentk8s.resourcequota

[1]: This metric is retrieved from the used field of the K8s ResourceQuotaStatus.

AttributeTypeDescriptionExamplesRequirement LevelStability
k8s.resourcequota.resource_namestringThe name of the K8s resource a resource quota defines. [1]count/replicationcontrollersRequiredDevelopment

[1] 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.