Requêtes PromQL pour la supervision Kubernetes avec Prometheus

Exemples de requêtes pour Node Exporter

Taux d'utilisation du processeur (en pourcentage)

100 - (avg by (hote) (irate(cpu_temps_total{etat="inactif"}[5m])) * 100)

Mémoire effectivement consommée (en octets)

memoire_totale_octets - memoire_libre_octets - memoire_cache_octets - memoire_tampon_octets - memoire_slab_octets

Taux d'occupation mémoire (en pourcentage)

((memoire_totale_octets - memoire_libre_octets - memoire_cache_octets - memoire_tampon_octets - memoire_slab_octets) / memoire_totale_octets) * 100

Taux d'occupation mémoire pour un nœud spécifique

((memoire_totale_octets{hote="192.168.61.223:9100"} - memoire_disponible_octets{hote="192.168.61.223:9100"}) / memoire_totale_octets{hote="192.168.61.223:9100"}) * 100

Taux d'utilisation disque pour un nœud spécifique

((taille_systeme_fichiers_octets{type_fs=~"xfs|ext4",hote="192.168.61.223:9100"} - espace_libre_octets{type_fs=~"xfs|ext4",hote="192.168.61.223:9100"}) / taille_systeme_fichiers_octets{type_fs=~"xfs|ext4",hote="192.168.61.223:9100"}) * 100

Temps de fonctionnement depuis le démarrage (en secondes)

time() - heure_amorcage

Temps de fonctionnement pour un nœud spécifique

time() - heure_amorcage_secondes{hote="192.168.61.223:9100"}

Débit réseau sortant (en octets/seconde)

irate(octets_emis_reseau_total{interface!~"lo|bond[0-9]|cbr[0-9]|veth.*"}[5m]) > 0

Débit réseau sortant filtré par hôte

irate(octets_emis_reseau_total{hote="192.168.61.223:9100", interface!~"lo|bond[0-9]|cbr[0-9]|veth.*"}[5m]) > 0

Débit réseau entrant (en octets/seconde)

irate(octets_recus_reseau_total{interface!~"lo|bond[0-9]|cbr[0-9]|veth.*"}[5m]) > 0

Débit réseau entrant filtré par hôte

irate(octets_recus_reseau_total{hote="192.168.61.223:9100", interface!~"lo|bond[0-9]|cbr[0-9]|veth.*"}[5m]) > 0

Vitesse de lecture disque (en octets/seconde)

irate(octets_lus_disque_total{peripherique=~"sd.*"}[5m])

Remarque : irate convient aux compteurs évoluant rapidement, tandis que rate est préférable pour les compteurs à variation lente.

Exemples de requêtes pour cAdvisor (conteneurs)

Utilisation CPU par conteneur

sum(irate(temps_cpu_conteneur_total{image!=""}[1m])) without (processeur)

Somme totale de l'utilisation CPU de l'ensemble des conteneurs

sum(sum(rate(temps_cpu_conteneur_total{nom=~".+"}[1m])) by (nom) * 100)

Consommation mémoire d'un conteneur (en octets)

octets_memoire_conteneur{image!=""}

Somme de la mémoire résidente de tous les conteneurs

sum(memoire_rss_conteneur{nom=~".+"})

Utilisation mémoire actuelle par conteneur

octets_memoire_conteneur{nom=~".+"}

Total de l'utilisation mémoire acteulle

sum(octets_memoire_conteneur{nom=~".+"})

Taux de réception réseau des conteneurs (en octets/seconde)

sum(rate(octets_recus_reseau_conteneur_total{image!=""}[1m])) without (interface)

Taux d'émission réseau des conteneurs (en octets/seconde)

sum(rate(octets_emis_reseau_conteneur_total{image!=""}[1m])) without (interface)

Vitesse de lecture du sysstème de fichiers (en octets/seconde)

sum(rate(octets_lecture_fs_total{image!=""}[1m])) without (peripherique)

Vitesse d'écriture du système de fichiers (en octets/seconde)

sum(rate(octets_ecriture_fs_total{image!=""}[1m])) without (peripherique)

Alerte : bande passante entrante supérieure à 50 Mo

sum by (espace_nom, tache, nom_pod) (irate(octets_recus_reseau_conteneur_total{image!=""}[3m])) / 1024 / 1024 > 50

Alerte : bande passante sortante supérieure à 50 Mo

sum by (espace_nom, tache, nom_pod) (irate(octets_emis_reseau_conteneur_total{image!=""}[1m])) / 1024 / 1024 > 50

Fondamentaux du langage de requête Prometheus

Une série temporelle représente l'ensemble des valeurs d'une métrique observée à des instants successifs.

Opérateurs de sélection sur les étiquettes :

  • = : correspondance exacte
  • != : exclusion exacte
  • =~ : correspondance par expression régulière
  • !~ : exclusion par expression régulière

Unités temporelles :

  • s : secondes
  • m : minutes
  • h : heures
  • d : jours
  • w : semaines
  • y : années

La notation [1m] désigne la fenêtre temporele couvrant la dernière minute écoulée.

Modificateurs d'agrégation :

  • bool : retourne 0 ou 1 selon le résultat booléen
  • and : intersection de séries
  • or : union de séries
  • unless : complément
  • on : spécification des dimensions de jointure
  • without : exclusion de dimensions lors de l'agrégation
  • by : restriction aux dimensions spécifiées lors de l'agrégation

Étiquettes: Prometheus PromQL kubernetes Node Exporter cAdvisor

Publié le 25 septembre à 03h04