Prometheus est un système open-source de surveillance et d’alertes principalement conçu pour la collecte, le stockage et l’analyse de séries temporelles de données. Il est couramment utilisé pour surveiller les applications et l'infrastructure, en particulier dans les environnements de microservices, les conteneurs, et les environnements cloud natifs. Prometheus est particulièrement adapté pour surveiller les systèmes distribués grâce à sa capacité à collecter des métriques sur des périodes définies.
Créé initialement par SoundCloud en 2012, Prometheus fait maintenant partie de la Cloud Native Computing Foundation (CNCF), aux côtés de Kubernetes et d’autres technologies. Il est largement utilisé dans les environnements DevOps et pour le monitoring des infrastructures modernes.
L'architecture de Prometheus repose sur plusieurs composants interconnectés qui lui permettent de collecter, stocker et analyser les données de manière efficace.
Les métriques dans Prometheus sont stockées sous forme de séries temporelles. Chaque série temporelle est définie par :
Prometheus fonctionne principalement avec un modèle pull. Cela signifie qu'il interroge les cibles à intervalles réguliers pour récupérer leurs métriques. Cela contraste avec le modèle push, où les applications envoient activement des métriques vers un serveur de monitoring.
Dans Prometheus, les cibles de scrape sont définies dans un fichier de configuration prometheus.yml. Ce fichier spécifie les différentes cibles que Prometheus doit interroger.
Exemple d'une configuration de scrape :
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
Dans cet exemple, Prometheus interroge le Node Exporter sur le port 9100 pour collecter les métriques système.
PromQL est un langage puissant qui permet de créer des requêtes pour extraire, filtrer, et agréger les métriques stockées dans Prometheus.
Une requête PromQL est composée de :
http_requests_total
pour le nombre total de requêtes HTTP.http_requests_total{method="GET"}
pour sélectionner les requêtes GET
.sum(http_requests_total)
pour calculer le total des requêtes.sum(http_requests_total{method="GET"})
avg(node_cpu_seconds_total{mode="idle"})
Prometheus prend en charge plusieurs fonctions d’agrégation comme :
Les alertes dans Prometheus sont définies dans le fichier de configuration prometheus.yml
sous la section alerting
. Une alerte peut être déclenchée lorsque certaines conditions sur les métriques sont remplies.
Exemple d’une règle d’alerte pour l’utilisation du CPU :
groups:
- name: example
rules:
- alert: HighCPUUsage
expr: avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) < 0.2
for: 2m
labels:
severity: critical
annotations:
summary: "CPU usage is above 80% on {{ $labels.instance }}"
Cette alerte est déclenchée si l’utilisation du CPU dépasse 80 % pendant plus de 2 minutes.
Alertmanager est un composant complémentaire à Prometheus qui gère les alertes. Il permet de :
Grafana est un outil de visualisation open-source qui se connecte facilement à Prometheus pour afficher des graphiques interactifs et des tableaux de bord. Les utilisateurs peuvent créer des tableaux de bord personnalisés pour suivre l’évolution des métriques en temps réel.
Prometheus est un outil de surveillance robuste, évolutif et flexible, adapté aux environnements modernes, en particulier ceux basés sur des microservices, des conteneurs et des infrastructures cloud. Avec sa capacité à collecter des métriques en temps réel, sa base de données optimisée pour les séries temporelles, et son langage de requête puissant (PromQL), Prometheus est une solution incontournable pour le monitoring d’infrastructures complexes.