semantic-conventions/docs/system/k8s-metrics.md

32 KiB

Semantic Conventions for Kubernetes Metrics

Status: Experimental

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.

Name Instrument Type Unit (UCUM) Description Stability
k8s.pod.uptime Gauge s The time the Pod has been running [1] Experimental

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

Name Instrument Type Unit (UCUM) Description Stability
k8s.pod.cpu.time Counter s Total CPU time consumed [1] Experimental

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

Metric: k8s.pod.cpu.usage

This metric is recommended.

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

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

Name Instrument Type Unit (UCUM) Description Stability
k8s.pod.memory.usage Gauge By Memory usage of the Pod [1] Experimental

[1]: Total memory usage of the Pod

Metric: k8s.pod.network.io

This metric is recommended.

Name Instrument Type Unit (UCUM) Description Stability
k8s.pod.network.io Counter By Network bytes for the Pod Experimental
Attribute Type Description Examples Requirement Level Stability
network.interface.name string The network interface name. lo; eth0 Recommended Experimental
network.io.direction string The network IO operation direction. transmit Recommended Experimental

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
transmit transmit Experimental

Metric: k8s.pod.network.errors

This metric is recommended.

Name Instrument Type Unit (UCUM) Description Stability
k8s.pod.network.errors Counter {error} Pod network errors Experimental
Attribute Type Description Examples Requirement Level Stability
network.interface.name string The network interface name. lo; eth0 Recommended Experimental
network.io.direction string The network IO operation direction. transmit Recommended Experimental

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
transmit transmit Experimental

Node Metrics

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

Metric: k8s.node.uptime

This metric is recommended.

Name Instrument Type Unit (UCUM) Description Stability
k8s.node.uptime Gauge s The time the Node has been running [1] Experimental

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

Name Instrument Type Unit (UCUM) Description Stability
k8s.node.cpu.time Counter s Total CPU time consumed [1] Experimental

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

Metric: k8s.node.cpu.usage

This metric is recommended.

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

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

Name Instrument Type Unit (UCUM) Description Stability
k8s.node.memory.usage Gauge By Memory usage of the Node [1] Experimental

[1]: Total memory usage of the Node

Metric: k8s.node.network.io

This metric is recommended.

Name Instrument Type Unit (UCUM) Description Stability
k8s.node.network.io Counter By Network bytes for the Node Experimental
Attribute Type Description Examples Requirement Level Stability
network.interface.name string The network interface name. lo; eth0 Recommended Experimental
network.io.direction string The network IO operation direction. transmit Recommended Experimental

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
transmit transmit Experimental

Metric: k8s.node.network.errors

This metric is recommended.

Name Instrument Type Unit (UCUM) Description Stability
k8s.node.network.errors Counter {error} Node network errors Experimental
Attribute Type Description Examples Requirement Level Stability
network.interface.name string The network interface name. lo; eth0 Recommended Experimental
network.io.direction string The network IO operation direction. transmit Recommended Experimental

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
transmit transmit Experimental

Deployment Metrics

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

Metric: k8s.deployment.desired_pods

This metric is recommended.

Name Instrument Type Unit (UCUM) Description Stability
k8s.deployment.desired_pods UpDownCounter {pod} Number of desired replica pods in this deployment [1] Experimental

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

This metric SHOULD, at a minimum, be reported against a k8s.deployment resource.

Metric: k8s.deployment.available_pods

This metric is recommended.

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

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

This metric SHOULD, at a minimum, be reported against a k8s.deployment resource.

ReplicaSet Metrics

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

Metric: k8s.replicaset.desired_pods

This metric is recommended.

Name Instrument Type Unit (UCUM) Description Stability
k8s.replicaset.desired_pods UpDownCounter {pod} Number of desired replica pods in this replicaset [1] Experimental

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

This metric SHOULD, at a minimum, be reported against a k8s.replicaset resource.

Metric: k8s.replicaset.available_pods

This metric is recommended.

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

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

This metric SHOULD, at a minimum, be reported against a k8s.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.

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

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

Metric: k8s.replication_controller.available_pods

This metric is recommended.

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

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

Name Instrument Type Unit (UCUM) Description Stability
k8s.statefulset.desired_pods UpDownCounter {pod} Number of desired replica pods in this statefulset [1] Experimental

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

This metric SHOULD, at a minimum, be reported against a k8s.statefulset resource.

Metric: k8s.statefulset.ready_pods

This metric is recommended.

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

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

This metric SHOULD, at a minimum, be reported against a k8s.statefulset resource.

Metric: k8s.statefulset.current_pods

This metric is recommended.

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

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

This metric SHOULD, at a minimum, be reported against a k8s.statefulset resource.

Metric: k8s.statefulset.updated_pods

This metric is recommended.

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

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

This metric SHOULD, at a minimum, be reported against a k8s.statefulset resource.

HorizontalPodAutoscaler Metrics

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

Metric: k8s.hpa.desired_pods

This metric is recommended.

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

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

Metric: k8s.hpa.current_pods

This metric is recommended.

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

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

Metric: k8s.hpa.max_pods

This metric is recommended.

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

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

Metric: k8s.hpa.min_pods

This metric is recommended.

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

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