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
- Node Metrics
- Deployment Metrics
- ReplicaSet Metrics
- ReplicationController Metrics
- StatefulSet Metrics
- HorizontalPodAutoscaler Metrics
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] |
[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] |
[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] |
[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] |
[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 |
| Attribute | Type | Description | Examples | Requirement Level | Stability |
|---|---|---|---|---|---|
network.interface.name |
string | The network interface name. | lo; eth0 |
Recommended |
|
network.io.direction |
string | The network IO operation direction. | transmit |
Recommended |
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 | |
transmit |
transmit |
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 |
| Attribute | Type | Description | Examples | Requirement Level | Stability |
|---|---|---|---|---|---|
network.interface.name |
string | The network interface name. | lo; eth0 |
Recommended |
|
network.io.direction |
string | The network IO operation direction. | transmit |
Recommended |
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 | |
transmit |
transmit |
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] |
[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] |
[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] |
[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] |
[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 |
| Attribute | Type | Description | Examples | Requirement Level | Stability |
|---|---|---|---|---|---|
network.interface.name |
string | The network interface name. | lo; eth0 |
Recommended |
|
network.io.direction |
string | The network IO operation direction. | transmit |
Recommended |
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 | |
transmit |
transmit |
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 |
| Attribute | Type | Description | Examples | Requirement Level | Stability |
|---|---|---|---|---|---|
network.interface.name |
string | The network interface name. | lo; eth0 |
Recommended |
|
network.io.direction |
string | The network IO operation direction. | transmit |
Recommended |
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 | |
transmit |
transmit |
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] |
[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.
[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] |
[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.
[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] |
[1]: This metric aligns with the replicas field of the
K8s ReplicationControllerSpec
Metric: k8s.replication_controller.available_pods
This metric is recommended.
[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] |
[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] |
[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.
[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.
[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.
[1]: This metric aligns with the desiredReplicas field of the
K8s HorizontalPodAutoscalerStatus
Metric: k8s.hpa.current_pods
This metric is recommended.
[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] |
[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] |
[1]: This metric aligns with the minReplicas field of the
K8s HorizontalPodAutoscalerSpec