Je veux calculer l'utilisation du processeur de tous les pods d'un cluster kubernetes. J'ai trouvé deux métriques dans Prometheus peuvent être utiles:
container_cpu_usage_seconds_total: Cumulative cpu time consumed per cpu in seconds.
process_cpu_seconds_total: Total user and system CPU time spent in seconds.
Cpu Usage of all pods = increment per second of sum(container_cpu_usage_seconds_total{id="/"})/increment per second of sum(process_cpu_seconds_total)
Cependant, j'ai constaté que chaque incrément de seconde de container_cpu_usage{id="/"}
était supérieur à l'incrément de sum(process_cpu_seconds_total)
. Donc, l'utilisation peut être supérieure à 1 ...
Ce que j'utilise pour obtenir l'utilisation du processeur au niveau du cluster:
sum (rate (container_cpu_usage_seconds_total{id="/"}[1m])) / sum (machine_cpu_cores) * 100
Je surveille également l'utilisation du processeur pour chaque pod.
sum (rate (container_cpu_usage_seconds_total{image!=""}[1m])) by (pod_name)
J'ai une solution complète de kubernetes-prometheus sur GitHub, peut peut-être vous aider avec plus de métriques: https://github.com/camilb/prometheus-kubernetes
J'ai créé mon propre exportateur Prometheus ( https://github.com/google-cloud-tools/kube-eagle ) principalement pour obtenir un meilleur aperçu de l'utilisation de mes ressources par noeud. Mais il offre également un moyen plus intuitif de surveiller votre processeur et vos ressources RAM. La requête pour obtenir l'utilisation du processeur à l'échelle du cluster ressemblerait à ceci:
sum(eagle_pod_container_resource_usage_cpu_cores)
Mais vous pouvez également obtenir facilement l’utilisation du processeur par espace de nom, nœud ou nodepool.