Introduction
Présentation de PromQL et son importance dans Prometheus.-
Qu'est-ce que PromQL ?
PromQL (Prometheus Query Language) est le langage de requête utilisé dans Prometheus pour interroger les données de métriques. Il permet d'extraire des informations, de créer des alertes, et de visualiser des graphiques dans des outils comme Grafana.
-
Pourquoi utiliser PromQL ?
PromQL est essentiel pour analyser les métriques collectées par Prometheus. Grâce à sa syntaxe puissante et flexible, vous pouvez :
- Surveiller les performances de vos systèmes.
- Configurer des alertes basées sur des seuils spécifiques.
- Créer des visualisations détaillées pour des tableaux de bord.
Bases de PromQL
Comprendre les concepts fondamentaux de PromQL.-
Métriques
PromQL travaille avec des métriques qui peuvent être :
- Counter : Une valeur cumulative qui ne décroît jamais.
- Gauge : Une valeur qui peut augmenter ou diminuer.
- Histogram : Une distribution de valeurs.
- Summary : Une vue résumée des métriques.
-
Expressions simples
Les expressions simples permettent de récupérer des métriques brutes :
http_requests_total
Cela retourne toutes les valeurs actuelles de la métrique
http_requests_total
.
Commandes récurrentes
Les commandes les plus utilisées avec leurs explications et exemples.-
Filtrage avec des étiquettes
Les métriques peuvent être filtrées à l'aide d'étiquettes :
http_requests_total{method="GET", status="200"}
Cela retourne uniquement les métriques où
method
estGET
etstatus
est200
. -
Agrégation
Les fonctions d'agrégation permettent de résumer les données :
sum(http_requests_total)
: Somme de toutes les requêtes.avg(http_requests_total)
: Moyenne des requêtes.max(http_requests_total)
: Valeur maximale.min(http_requests_total)
: Valeur minimale.
-
Fonctions
PromQL offre des fonctions pour manipuler les séries temporelles :
rate(metric[5m])
: Taux de changement par seconde sur une fenêtre de 5 minutes.increase(metric[1h])
: Augmentation totale sur une heure.irate(metric[1m])
: Taux instantané basé sur les points les plus récents.
-
Opérations arithmétiques
PromQL permet de faire des calculs :
(http_requests_total{method="GET"} / http_requests_total) * 100
Cela calcule le pourcentage des requêtes GET par rapport au total.
-
Joindre des métriques
Vous pouvez combiner plusieurs métriques :
sum(cpu_usage) by (instance) / sum(cpu_limit) by (instance)
Cela donne le ratio d'utilisation CPU par instance.
Visualisation des résultats
Afficher et analyser les résultats dans Prometheus et Grafana.-
Prometheus
Dans l'interface web de Prometheus, entrez une requête PromQL dans la barre de recherche pour visualiser les résultats en temps réel.
-
Grafana
Grafana offre une interface plus avancée pour créer des graphiques et des tableaux de bord basés sur les requêtes PromQL.
Exemples
Quelques exemples de requêtes :-
Utilisation du CPU
- Charge moyenne sur tous les cœurs :
Cette requête calcule le taux moyen d'utilisation du CPU (hors mode idle) sur les 5 dernières minutes.avg(rate(node_cpu_seconds_total{mode!="idle"}[5m]))
- Utilisation du CPU par instance :
sum(rate(node_cpu_seconds_total{mode!="idle"}[5m])) by (instance)
- Charge moyenne sur tous les cœurs :
-
Utilisation de la mémoire
- Pourcentage de mémoire utilisée :
100 * (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes))
- Mémoire utilisée en gigaoctets :
(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / (1024 * 1024 * 1024)
- Pourcentage de mémoire utilisée :
-
Utilisation du disque
- Pourcentage d'espace disque utilisé :
100 * (node_filesystem_size_bytes{fstype!~"tmpfs|overlay"} - node_filesystem_free_bytes{fstype!~"tmpfs|overlay"}) / node_filesystem_size_bytes{fstype!~"tmpfs|overlay"}
- Espace libre sur un disque spécifique :
node_filesystem_free_bytes{mountpoint="/"}
- Pourcentage d'espace disque utilisé :
-
Surveillance des réseaux
- Taux d'envoi de données sur une interface réseau :
rate(node_network_transmit_bytes_total[1m])
- Taux de réception de données :
rate(node_network_receive_bytes_total[1m])
- Taux d'envoi de données sur une interface réseau :
-
Uptime d'une instance
- Liste des instances en ligne :
up == 1
- Instance cadvisor :
up{instance="cadvisor:8080"}
- Liste des instances en ligne :
-
Erreurs dans les applications
- Taux d'erreurs HTTP 5xx :
rate(http_requests_total{status=~"5.."}[5m])
- Pourcentage d'erreurs 5xx par rapport au trafic total :
100 * rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m])
- Taux d'erreurs HTTP 5xx :
-
Alimentation d'une alerte
- CPU saturé (> 90 %) :
avg(rate(node_cpu_seconds_total{mode!="idle"}[5m])) by (instance) > 0.9
- Moins de 10 % d'espace disque disponible :
(node_filesystem_free_bytes / node_filesystem_size_bytes) < 0.1
- CPU saturé (> 90 %) :
Bonnes pratiques
Conseils pour écrire des requêtes PromQL efficaces.-
Simplifiez vos requêtes
Évitez de surcharger vos requêtes avec des calculs complexes. Utilisez des fonctions simples et combinez-les au besoin.
-
Utilisez des agrégations
Les agrégations comme
sum
etavg
permettent de simplifier les données et de les rendre plus lisibles. -
Filtrez les données
Utilisez des étiquettes pour réduire le volume de données retournées, ce qui améliore la performance des requêtes.
Conclusion
Résumé et prochaines étapes pour maîtriser PromQL.-
PromQL est un langage puissant pour analyser et surveiller vos métriques dans Prometheus. En maîtrisant ses fonctionnalités, vous pouvez créer des alertes précises, des visualisations détaillées, et optimiser vos systèmes. Continuez à explorer les fonctions avancées et expérimentez avec vos métriques pour en tirer le maximum.