# Semantic Conventions for Kubernetes Metrics **Status**: [Experimental][DocumentStatus] ## 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](/docs/resource/k8s.md) and therefore inherit its attributes, like `k8s.pod.name` and `k8s.pod.uid`. - [Pod Metrics](#pod-metrics) - [Metric: `k8s.pod.uptime`](#metric-k8spoduptime) - [Metric: `k8s.pod.cpu.time`](#metric-k8spodcputime) - [Metric: `k8s.pod.cpu.usage`](#metric-k8spodcpuusage) - [Metric: `k8s.pod.memory.usage`](#metric-k8spodmemoryusage) - [Metric: `k8s.pod.network.io`](#metric-k8spodnetworkio) - [Metric: `k8s.pod.network.errors`](#metric-k8spodnetworkerrors) - [Node Metrics](#node-metrics) - [Metric: `k8s.node.uptime`](#metric-k8snodeuptime) - [Metric: `k8s.node.cpu.time`](#metric-k8snodecputime) - [Metric: `k8s.node.cpu.usage`](#metric-k8snodecpuusage) - [Metric: `k8s.node.memory.usage`](#metric-k8snodememoryusage) - [Metric: `k8s.node.network.io`](#metric-k8snodenetworkio) - [Metric: `k8s.node.network.errors`](#metric-k8snodenetworkerrors) - [Deployment Metrics](#deployment-metrics) - [Metric: `k8s.deployment.desired_pods`](#metric-k8sdeploymentdesired_pods) - [Metric: `k8s.deployment.available_pods`](#metric-k8sdeploymentavailable_pods) - [ReplicaSet Metrics](#replicaset-metrics) - [Metric: `k8s.replicaset.desired_pods`](#metric-k8sreplicasetdesired_pods) - [Metric: `k8s.replicaset.available_pods`](#metric-k8sreplicasetavailable_pods) - [ReplicationController Metrics](#replicationcontroller-metrics) - [Metric: `k8s.replication_controller.desired_pods`](#metric-k8sreplication_controllerdesired_pods) - [Metric: `k8s.replication_controller.available_pods`](#metric-k8sreplication_controlleravailable_pods) - [StatefulSet Metrics](#statefulset-metrics) - [Metric: `k8s.statefulset.desired_pods`](#metric-k8sstatefulsetdesired_pods) - [Metric: `k8s.statefulset.ready_pods`](#metric-k8sstatefulsetready_pods) - [Metric: `k8s.statefulset.current_pods`](#metric-k8sstatefulsetcurrent_pods) - [Metric: `k8s.statefulset.updated_pods`](#metric-k8sstatefulsetupdated_pods) - [HorizontalPodAutoscaler Metrics](#horizontalpodautoscaler-metrics) - [Metric: `k8s.hpa.desired_pods`](#metric-k8shpadesired_pods) - [Metric: `k8s.hpa.current_pods`](#metric-k8shpacurrent_pods) - [Metric: `k8s.hpa.max_pods`](#metric-k8shpamax_pods) - [Metric: `k8s.hpa.min_pods`](#metric-k8shpamin_pods) - [DaemonSet Metrics](#daemonset-metrics) - [Metric: `k8s.daemonset.current_scheduled_nodes`](#metric-k8sdaemonsetcurrent_scheduled_nodes) - [Metric: `k8s.daemonset.desired_scheduled_nodes`](#metric-k8sdaemonsetdesired_scheduled_nodes) - [Metric: `k8s.daemonset.misscheduled_nodes`](#metric-k8sdaemonsetmisscheduled_nodes) - [Metric: `k8s.daemonset.ready_nodes`](#metric-k8sdaemonsetready_nodes) - [Job Metrics](#job-metrics) - [Metric: `k8s.job.active_pods`](#metric-k8sjobactive_pods) - [Metric: `k8s.job.failed_pods`](#metric-k8sjobfailed_pods) - [Metric: `k8s.job.successful_pods`](#metric-k8sjobsuccessful_pods) - [Metric: `k8s.job.desired_successful_pods`](#metric-k8sjobdesired_successful_pods) - [Metric: `k8s.job.max_parallel_pods`](#metric-k8sjobmax_parallel_pods) - [CronJob Metrics](#cronjob-metrics) - [Metric: `k8s.cronjob.active_jobs`](#metric-k8scronjobactive_jobs) ## Pod Metrics **Description:** Pod level metrics captured under the namespace `k8s.pod`. ### Metric: `k8s.pod.uptime` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.pod.uptime` | Gauge | `s` | The time the Pod has been running [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[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][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.pod.cpu.time` | Counter | `s` | Total CPU time consumed [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** Total CPU time consumed by the specific Pod on all available CPU cores ### Metric: `k8s.pod.cpu.usage` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.pod.cpu.usage` | Gauge | `{cpu}` | Pod's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[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][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.pod.memory.usage` | Gauge | `By` | Memory usage of the Pod [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** Total memory usage of the Pod ### Metric: `k8s.pod.network.io` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.pod.network.io` | Counter | `By` | Network bytes for the Pod | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`network.interface.name`](/docs/attributes-registry/network.md) | string | The network interface name. | `lo`; `eth0` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`network.io.direction`](/docs/attributes-registry/network.md) | string | The network IO operation direction. | `transmit` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | --- `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. | Value | Description | Stability | |---|---|---| | `receive` | receive | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `transmit` | transmit | ![Experimental](https://img.shields.io/badge/-experimental-blue) | ### Metric: `k8s.pod.network.errors` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.pod.network.errors` | Counter | `{error}` | Pod network errors | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`network.interface.name`](/docs/attributes-registry/network.md) | string | The network interface name. | `lo`; `eth0` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`network.io.direction`](/docs/attributes-registry/network.md) | string | The network IO operation direction. | `transmit` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | --- `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. | Value | Description | Stability | |---|---|---| | `receive` | receive | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `transmit` | transmit | ![Experimental](https://img.shields.io/badge/-experimental-blue) | ## Node Metrics **Description:** Node level metrics captured under the namespace `k8s.node`. ### Metric: `k8s.node.uptime` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.node.uptime` | Gauge | `s` | The time the Node has been running [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[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.cpu.time` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.node.cpu.time` | Counter | `s` | Total CPU time consumed [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** Total CPU time consumed by the specific Node on all available CPU cores ### Metric: `k8s.node.cpu.usage` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.node.cpu.usage` | Gauge | `{cpu}` | Node's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[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][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.node.memory.usage` | Gauge | `By` | Memory usage of the Node [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** Total memory usage of the Node ### Metric: `k8s.node.network.io` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.node.network.io` | Counter | `By` | Network bytes for the Node | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`network.interface.name`](/docs/attributes-registry/network.md) | string | The network interface name. | `lo`; `eth0` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`network.io.direction`](/docs/attributes-registry/network.md) | string | The network IO operation direction. | `transmit` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | --- `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. | Value | Description | Stability | |---|---|---| | `receive` | receive | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `transmit` | transmit | ![Experimental](https://img.shields.io/badge/-experimental-blue) | ### Metric: `k8s.node.network.errors` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.node.network.errors` | Counter | `{error}` | Node network errors | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`network.interface.name`](/docs/attributes-registry/network.md) | string | The network interface name. | `lo`; `eth0` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`network.io.direction`](/docs/attributes-registry/network.md) | string | The network IO operation direction. | `transmit` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | --- `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. | Value | Description | Stability | |---|---|---| | `receive` | receive | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `transmit` | transmit | ![Experimental](https://img.shields.io/badge/-experimental-blue) | ## Deployment Metrics **Description:** Deployment level metrics captured under the namespace `k8s.deployment`. ### Metric: `k8s.deployment.desired_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.deployment.desired_pods` | UpDownCounter | `{pod}` | Number of desired replica pods in this deployment [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `replicas` field of the [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps). This metric SHOULD, at a minimum, be reported against a [`k8s.deployment`](../resource/k8s.md#deployment) resource. ### Metric: `k8s.deployment.available_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.deployment.available_pods` | UpDownCounter | `{pod}` | Total number of available replica pods (ready for at least minReadySeconds) targeted by this deployment [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `availableReplicas` field of the [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps). This metric SHOULD, at a minimum, be reported against a [`k8s.deployment`](../resource/k8s.md#deployment) resource. ## ReplicaSet Metrics **Description:** ReplicaSet level metrics captured under the namespace `k8s.replicaset`. ### Metric: `k8s.replicaset.desired_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.replicaset.desired_pods` | UpDownCounter | `{pod}` | Number of desired replica pods in this replicaset [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `replicas` field of the [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps). This metric SHOULD, at a minimum, be reported against a [`k8s.replicaset`](../resource/k8s.md#replicaset) resource. ### Metric: `k8s.replicaset.available_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.replicaset.available_pods` | UpDownCounter | `{pod}` | Total number of available replica pods (ready for at least minReadySeconds) targeted by this replicaset [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `availableReplicas` field of the [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps). This metric SHOULD, at a minimum, be reported against a [`k8s.replicaset`](../resource/k8s.md#replicaset) resource. ## ReplicationController Metrics **Description:** ReplicationController level metrics captured under the namespace `k8s.replication_controller`. ### Metric: `k8s.replication_controller.desired_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.replication_controller.desired_pods` | UpDownCounter | `{pod}` | Number of desired replica pods in this replication controller [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `replicas` field of the [K8s ReplicationControllerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerspec-v1-core) ### Metric: `k8s.replication_controller.available_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.replication_controller.available_pods` | UpDownCounter | `{pod}` | Total number of available replica pods (ready for at least minReadySeconds) targeted by this replication controller [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `availableReplicas` field of the [K8s ReplicationControllerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerstatus-v1-core) ## StatefulSet Metrics **Description:** StatefulSet level metrics captured under the namespace `k8s.statefulset`. ### Metric: `k8s.statefulset.desired_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.statefulset.desired_pods` | UpDownCounter | `{pod}` | Number of desired replica pods in this statefulset [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `replicas` field of the [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps). This metric SHOULD, at a minimum, be reported against a [`k8s.statefulset`](../resource/k8s.md#statefulset) resource. ### Metric: `k8s.statefulset.ready_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.statefulset.ready_pods` | UpDownCounter | `{pod}` | The number of replica pods created for this statefulset with a Ready Condition [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `readyReplicas` field of the [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). This metric SHOULD, at a minimum, be reported against a [`k8s.statefulset`](../resource/k8s.md#statefulset) resource. ### Metric: `k8s.statefulset.current_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.statefulset.current_pods` | UpDownCounter | `{pod}` | The number of replica pods created by the statefulset controller from the statefulset version indicated by currentRevision [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `currentReplicas` field of the [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). This metric SHOULD, at a minimum, be reported against a [`k8s.statefulset`](../resource/k8s.md#statefulset) resource. ### Metric: `k8s.statefulset.updated_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.statefulset.updated_pods` | UpDownCounter | `{pod}` | Number of replica pods created by the statefulset controller from the statefulset version indicated by updateRevision [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `updatedReplicas` field of the [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). This metric SHOULD, at a minimum, be reported against a [`k8s.statefulset`](../resource/k8s.md#statefulset) resource. ## HorizontalPodAutoscaler Metrics **Description:** HorizontalPodAutoscaler level metrics captured under the namespace `k8s.hpa`. ### Metric: `k8s.hpa.desired_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.hpa.desired_pods` | UpDownCounter | `{pod}` | Desired number of replica pods managed by this horizontal pod autoscaler, as last calculated by the autoscaler [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `desiredReplicas` field of the [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) ### Metric: `k8s.hpa.current_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.hpa.current_pods` | UpDownCounter | `{pod}` | Current number of replica pods managed by this horizontal pod autoscaler, as last seen by the autoscaler [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `currentReplicas` field of the [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) ### Metric: `k8s.hpa.max_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.hpa.max_pods` | UpDownCounter | `{pod}` | The upper limit for the number of replica pods to which the autoscaler can scale up [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `maxReplicas` field of the [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) ### Metric: `k8s.hpa.min_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.hpa.min_pods` | UpDownCounter | `{pod}` | The lower limit for the number of replica pods to which the autoscaler can scale down [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `minReplicas` field of the [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) ## DaemonSet Metrics **Description:** DaemonSet level metrics captured under the namespace `k8s.daemonset`. ### Metric: `k8s.daemonset.current_scheduled_nodes` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.daemonset.current_scheduled_nodes` | UpDownCounter | `{node}` | Number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `currentNumberScheduled` field of the [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). This metric SHOULD, at a minimum, be reported against a [`k8s.daemonset`](../resource/k8s.md#daemonset) resource. ### Metric: `k8s.daemonset.desired_scheduled_nodes` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.daemonset.desired_scheduled_nodes` | UpDownCounter | `{node}` | Number of nodes that should be running the daemon pod (including nodes currently running the daemon pod) [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `desiredNumberScheduled` field of the [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). This metric SHOULD, at a minimum, be reported against a [`k8s.daemonset`](../resource/k8s.md#daemonset) resource. ### Metric: `k8s.daemonset.misscheduled_nodes` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.daemonset.misscheduled_nodes` | UpDownCounter | `{node}` | Number of nodes that are running the daemon pod, but are not supposed to run the daemon pod [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `numberMisscheduled` field of the [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). This metric SHOULD, at a minimum, be reported against a [`k8s.daemonset`](../resource/k8s.md#daemonset) resource. ### Metric: `k8s.daemonset.ready_nodes` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.daemonset.ready_nodes` | UpDownCounter | `{node}` | Number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `numberReady` field of the [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). This metric SHOULD, at a minimum, be reported against a [`k8s.daemonset`](../resource/k8s.md#daemonset) resource. ## Job Metrics **Description:** Job level metrics captured under the namespace `k8s.job`. ### Metric: `k8s.job.active_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.job.active_pods` | UpDownCounter | `{pod}` | The number of pending and actively running pods for a job [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `active` field of the [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). This metric SHOULD, at a minimum, be reported against a [`k8s.job`](../resource/k8s.md#job) resource. ### Metric: `k8s.job.failed_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.job.failed_pods` | UpDownCounter | `{pod}` | The number of pods which reached phase Failed for a job [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `failed` field of the [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). This metric SHOULD, at a minimum, be reported against a [`k8s.job`](../resource/k8s.md#job) resource. ### Metric: `k8s.job.successful_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.job.successful_pods` | UpDownCounter | `{pod}` | The number of pods which reached phase Succeeded for a job [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `succeeded` field of the [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). This metric SHOULD, at a minimum, be reported against a [`k8s.job`](../resource/k8s.md#job) resource. ### Metric: `k8s.job.desired_successful_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.job.desired_successful_pods` | UpDownCounter | `{pod}` | The desired number of successfully finished pods the job should be run with [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `completions` field of the [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch). This metric SHOULD, at a minimum, be reported against a [`k8s.job`](../resource/k8s.md#job) resource. ### Metric: `k8s.job.max_parallel_pods` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.job.max_parallel_pods` | UpDownCounter | `{pod}` | The max desired number of pods the job should run at any given time [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `parallelism` field of the [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch. This metric SHOULD, at a minimum, be reported against a [`k8s.job`](../resource/k8s.md#job) resource. ## CronJob Metrics **Description:** CronJob level metrics captured under the namespace `k8s.cronjob`. ### Metric: `k8s.cronjob.active_jobs` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | | `k8s.cronjob.active_jobs` | UpDownCounter | `{job}` | The number of actively running jobs for a cronjob [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1]:** This metric aligns with the `active` field of the [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch). This metric SHOULD, at a minimum, be reported against a [`k8s.cronjob`](../resource/k8s.md#cronjob) resource. [DocumentStatus]: https://opentelemetry.io/docs/specs/otel/document-status [MetricRecommended]: /docs/general/metric-requirement-level.md#recommended