Skip to content

CPU & Memoria per Pod/Container

Filtro standard namespace applicativi da applicare ovunque:

namespace!~"kube-.*|openshift-.*"

CPU usage per pod (somma di tutti i container)

Section titled “CPU usage per pod (somma di tutti i container)”
sum by (namespace, pod) (
rate(container_cpu_usage_seconds_total{
namespace!~"kube-.*|openshift-.*",
container!="", container!="POD"
}[5m])
)

CPU usage per pod, breakdown per container

Section titled “CPU usage per pod, breakdown per container”
sum by (namespace, pod, container) (
rate(container_cpu_usage_seconds_total{
namespace!~"kube-.*|openshift-.*",
container!="", container!="POD"
}[5m])
)
sum by (namespace, pod) (
rate(container_cpu_usage_seconds_total{namespace!~"kube-.*|openshift-.*"}[5m])
)
/
sum by (namespace, pod) (
container_spec_cpu_quota{namespace!~"kube-.*|openshift-.*"}
/ container_spec_cpu_period{namespace!~"kube-.*|openshift-.*"}
)

CPU throttling (evento certo, non stimato)

Section titled “CPU throttling (evento certo, non stimato)”
rate(container_cpu_cfs_throttled_seconds_total{
namespace!~"kube-.*|openshift-.*"
}[5m])

% periodi throttled sul totale periodi CFS

Section titled “% periodi throttled sul totale periodi CFS”
sum by (namespace, pod, container) (
increase(container_cpu_cfs_throttled_periods_total{container!=""}[5m])
)
/
sum by (namespace, pod, container) (
increase(container_cpu_cfs_periods_total{container!=""}[5m])
)

Memory usage per pod (working set, somma container)

Section titled “Memory usage per pod (working set, somma container)”
sum by (namespace, pod) (
container_memory_working_set_bytes{
namespace!~"kube-.*|openshift-.*",
container!="", container!="POD"
}
)
container_memory_working_set_bytes{
namespace!~"kube-.*|openshift-.*",
container!="", container!="POD"
}

Memory RSS (uso reale del processo, non cache)

Section titled “Memory RSS (uso reale del processo, non cache)”
container_memory_rss{
namespace!~"kube-.*|openshift-.*",
container!="", container!="POD"
}
container_memory_working_set_bytes{namespace!~"kube-.*|openshift-.*"}
/
container_spec_memory_limit_bytes{namespace!~"kube-.*|openshift-.*"}

Memory limit non impostato (limit=0, rischio noisy neighbour)

Section titled “Memory limit non impostato (limit=0, rischio noisy neighbour)”
container_spec_memory_limit_bytes{
namespace!~"kube-.*|openshift-.*", container!=""
} == 0

Confronto requests/limits vs consumo reale

Section titled “Confronto requests/limits vs consumo reale”
# CPU: uso reale / requests dichiarate
sum by (namespace, pod, container) (
rate(container_cpu_usage_seconds_total{container!="", container!="POD"}[5m])
)
/ on(namespace, pod, container) group_left
sum by (namespace, pod, container) (
kube_pod_container_resource_requests{resource="cpu"}
)
# Memoria: uso reale / requests dichiarate
sum by (namespace, pod, container) (
container_memory_working_set_bytes{container!="", container!="POD"}
)
/ on(namespace, pod, container) group_left
sum by (namespace, pod, container) (
kube_pod_container_resource_requests{resource="memory"}
)

Utile per capire pod oversized (requests molto più alte del consumo reale → spreco quota nodo) o sottodimensionati (rischio throttling/OOM).