web-dev-qa-db-fra.com

Comment calculer l'utilisation des processeurs des conteneurs dans les kubernetes avec Prometheus comme surveillance

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

11
Haoyuan Ge

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

 enter image description here

 enter image description here

18
Camil

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.

0
kentor