Status: Development
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
- DaemonSet Metrics
- Job Metrics
- CronJob Metrics
- Namespace Metrics
Description: Pod level metrics captured under the namespace k8s.pod
.
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.
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
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
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
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 |
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 |
Description: Node level metrics captured under the namespace k8s.node
.
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.
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
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
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
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 |
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 |
Description: Deployment level metrics captured under the namespace k8s.deployment
.
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.
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.
Description: ReplicaSet level metrics captured under the namespace k8s.replicaset
.
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.
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.
Description: ReplicationController level metrics captured under the namespace k8s.replicationcontroller
.
This metric is recommended.
Name | Instrument Type | Unit (UCUM) | Description | Stability |
---|---|---|---|---|
k8s.replicationcontroller.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
This metric SHOULD, at a minimum, be reported against a
k8s.replicationcontroller
resource.
This metric is recommended.
[1]: This metric aligns with the availableReplicas
field of the
K8s ReplicationControllerStatus
This metric SHOULD, at a minimum, be reported against a
k8s.replicationcontroller
resource.
Description: StatefulSet level metrics captured under the namespace k8s.statefulset
.
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.
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.
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.
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.
Description: HorizontalPodAutoscaler level metrics captured under the namespace k8s.hpa
.
This metric is recommended.
[1]: This metric aligns with the desiredReplicas
field of the
K8s HorizontalPodAutoscalerStatus
This metric SHOULD, at a minimum, be reported against a
k8s.hpa
resource.
This metric is recommended.
[1]: This metric aligns with the currentReplicas
field of the
K8s HorizontalPodAutoscalerStatus
This metric SHOULD, at a minimum, be reported against a
k8s.hpa
resource.
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
This metric SHOULD, at a minimum, be reported against a
k8s.hpa
resource.
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
This metric SHOULD, at a minimum, be reported against a
k8s.hpa
resource.
Description: DaemonSet level metrics captured under the namespace k8s.daemonset
.
This metric is recommended.
[1]: This metric aligns with the currentNumberScheduled
field of the
K8s DaemonSetStatus.
This metric SHOULD, at a minimum, be reported against a
k8s.daemonset
resource.
This metric is recommended.
[1]: This metric aligns with the desiredNumberScheduled
field of the
K8s DaemonSetStatus.
This metric SHOULD, at a minimum, be reported against a
k8s.daemonset
resource.
This metric is recommended.
[1]: This metric aligns with the numberMisscheduled
field of the
K8s DaemonSetStatus.
This metric SHOULD, at a minimum, be reported against a
k8s.daemonset
resource.
This metric is recommended.
[1]: This metric aligns with the numberReady
field of the
K8s DaemonSetStatus.
This metric SHOULD, at a minimum, be reported against a
k8s.daemonset
resource.
Description: Job level metrics captured under the namespace k8s.job
.
This metric is recommended.
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] |
[1]: This metric aligns with the active
field of the
K8s JobStatus.
This metric SHOULD, at a minimum, be reported against a
k8s.job
resource.
This metric is recommended.
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] |
[1]: This metric aligns with the failed
field of the
K8s JobStatus.
This metric SHOULD, at a minimum, be reported against a
k8s.job
resource.
This metric is recommended.
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] |
[1]: This metric aligns with the succeeded
field of the
K8s JobStatus.
This metric SHOULD, at a minimum, be reported against a
k8s.job
resource.
This metric is recommended.
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] |
[1]: This metric aligns with the completions
field of the
K8s JobSpec.
This metric SHOULD, at a minimum, be reported against a
k8s.job
resource.
This metric is recommended.
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] |
[1]: This metric aligns with the parallelism
field of the
K8s JobSpec.
This metric SHOULD, at a minimum, be reported against a
k8s.job
resource.
Description: CronJob level metrics captured under the namespace k8s.cronjob
.
This metric is recommended.
Name | Instrument Type | Unit (UCUM) | Description | Stability |
---|---|---|---|---|
k8s.cronjob.active_jobs |
UpDownCounter | {job} |
The number of actively running jobs for a cronjob [1] |
[1]: This metric aligns with the active
field of the
K8s CronJobStatus.
This metric SHOULD, at a minimum, be reported against a
k8s.cronjob
resource.
Description: Namespace level metrics captured under the namespace k8s.namespace
.
This metric is recommended.
Name | Instrument Type | Unit (UCUM) | Description | Stability |
---|---|---|---|---|
k8s.namespace.phase |
UpDownCounter | {namespace} |
Describes number of K8s namespaces that are currently in a given phase. [1] |
[1]: This metric SHOULD, at a minimum, be reported against a
k8s.namespace
resource.
Attribute | Type | Description | Examples | Requirement Level | Stability |
---|---|---|---|---|---|
k8s.namespace.phase |
string | The phase of the K8s namespace. [1] | active ; terminating |
Required |
[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.
Value | Description | Stability |
---|---|---|
active |
Active namespace phase as described by K8s API | |
terminating |
Terminating namespace phase as described by K8s API |