La surveillance des applications est une composante clé de la gestion d’infrastructure moderne. Grâce à des outils comme Prometheus et Grafana, vous pouvez collecter, stocker, et visualiser des métriques en temps réel pour assurer une performance optimale, détecter les anomalies, et intervenir rapidement en cas de problème. Dans cet article, nous allons explorer comment utiliser Prometheus et Grafana pour surveiller vos applications, ainsi que les bonnes pratiques associées.
Qu’est-ce que Prometheus et Grafana ?
Prometheus
Prometheus est un système de surveillance open source conçu pour collecter et stocker des séries temporelles de données (métriques). Il repose sur une architecture pull, où il interroge des endpoints HTTP (appelés « exporteurs ») pour récupérer des métriques sur la santé et la performance des applications et des services.
Caractéristiques clés de Prometheus :
- Stockage de séries temporelles : Prometheus est conçu pour stocker des métriques en série temporelle, ce qui signifie qu’il enregistre les données avec un horodatage.
- Langage de requête (PromQL) : Prometheus dispose de son propre langage de requête, PromQL, permettant de récupérer et d’agréger des métriques.
- Scraping : Prometheus interroge régulièrement des endpoints HTTP pour récupérer les métriques exposées par les applications ou les services via des « exporteurs ».
Grafana
Grafana est un outil open source de visualisation et de tableau de bord pour surveiller des données. Il permet de connecter plusieurs sources de données, y compris Prometheus, pour créer des graphiques, des alertes et des rapports sur la performance des applications et des systèmes.
Caractéristiques clés de Grafana :
- Visualisation de données : Grafana permet de créer des tableaux de bord interactifs avec une large variété de types de graphiques (courbes, diagrammes, heatmaps, etc.).
- Alertes : Vous pouvez configurer des alertes pour vous notifier en cas de dépassement de seuils ou d’anomalies dans les métriques.
- Sources de données multiples : Bien que nous allons principalement utiliser Prometheus, Grafana peut se connecter à d’autres sources de données comme MySQL, InfluxDB, ou Elasticsearch.
1. Installer Prometheus et Grafana
Avant de commencer à surveiller vos applications, il faut d’abord installer et configurer Prometheus et Grafana.
a. Installation de Prometheus
Prometheus peut être installé sur une machine locale ou sur un serveur dédié. Pour une installation de base, vous pouvez suivre ces étapes :
- Télécharger Prometheus : Allez sur le site de Prometheus et téléchargez la dernière version stable pour votre système d’exploitation.
- Extraire l’archive : Après avoir téléchargé le fichier, extrayez-le.bashCopierModifier
tar -xvzf prometheus-*.tar.gz cd prometheus-* - Configurer Prometheus : Prometheus utilise un fichier de configuration YAML (
prometheus.yml). Le fichier de configuration par défaut inclut déjà des configurations de base. Si vous souhaitez personnaliser les « scrapes » (les endroits où Prometheus va chercher les métriques), vous pouvez modifier ce fichier.Exemple d’une configuration basique :yamlCopierModifierglobal: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - Démarrer Prometheus : Lancez Prometheus en exécutant la commande suivante depuis le répertoire où vous avez extrait les fichiers :bashCopierModifier
./prometheus --config.file=prometheus.ymlCela démarrera Prometheus sur le port9090(par défaut).
b. Installation de Grafana
- Télécharger Grafana : Rendez-vous sur Grafana Downloads et téléchargez la version pour votre système d’exploitation.
- Installation sur Linux (par exemple) :bashCopierModifier
sudo apt-get install -y software-properties-common sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main" sudo apt-get update sudo apt-get install grafana - Démarrer Grafana : Vous pouvez démarrer Grafana en utilisant la commande suivante sur Linux :bashCopierModifier
sudo systemctl start grafana-serverPar défaut, Grafana est accessible à l’adressehttp://localhost:3000. Le nom d’utilisateur et le mot de passe par défaut sontadmin.
2. Configurer Prometheus pour collecter des métriques
Pour surveiller vos applications, Prometheus doit récupérer des métriques depuis des endpoints HTTP. La plupart des frameworks modernes, tels que Spring Boot, Node.js, Go, etc., offrent des bibliothèques ou des exporteurs qui exposent des métriques sous forme de données lisibles par Prometheus.
a. Configurer un Exporteur
Prenons l’exemple d’un exporteur Node.js pour exposer des métriques.
- Installer
prom-client(bibliothèque Node.js pour Prometheus) :bashCopierModifiernpm install prom-client - Exposer des métriques dans votre application Node.js :Dans votre application Node.js, vous pouvez configurer un endpoint
/metricsqui exposera les métriques Prometheus.javascriptCopierModifierconst express = require('express'); const client = require('prom-client'); const app = express(); const collectDefaultMetrics = client.collectDefaultMetrics; collectDefaultMetrics(); app.get('/metrics', async (req, res) => { res.set('Content-Type', client.register.contentType); res.end(await client.register.metrics()); }); app.listen(3000, () => console.log('Server listening on port 3000')); - Configurer Prometheus pour scraper cet endpoint :Dans le fichier
prometheus.yml, vous ajoutez le job correspondant à votre application :yamlCopierModifierscrape_configs: - job_name: 'nodejs-app' static_configs: - targets: ['localhost:3000']Prometheus scrutera désormais les métriques exposées par votre application surhttp://localhost:3000/metrics.
3. Visualiser les métriques avec Grafana
Une fois que Prometheus collecte des métriques, il est temps de visualiser ces données dans Grafana.
a. Configurer Grafana pour se connecter à Prometheus
- Accédez à Grafana : Ouvrez Grafana dans votre navigateur (
http://localhost:3000). - Ajouter une source de données :
- Allez dans « Configuration » (l’icône en forme de roue dentée) et cliquez sur « Data Sources ».
- Sélectionnez « Prometheus » comme source de données.
- Dans la section URL, entrez l’URL de Prometheus (par défaut,
http://localhost:9090). - Cliquez sur « Save & Test » pour tester la connexion.
b. Créer un tableau de bord Grafana
- Créer un nouveau tableau de bord :
- Allez dans « Create » > « Dashboard » > « Add new panel ».
- Sélectionner les métriques :
- Dans le panneau de configuration, sous « Query », choisissez « Prometheus » comme source de données.
- Utilisez PromQL pour créer vos requêtes. Par exemple, pour afficher le nombre de requêtes HTTP traitées par votre application Node.js, vous pourriez utiliser une métrique comme
http_requests_total.
- Visualiser et personnaliser :
- Grafana vous permet de personnaliser les visualisations sous forme de graphiques, jauges, ou tableaux pour mieux comprendre les données collectées.
- Enregistrer le tableau de bord :
- Une fois le tableau de bord configuré, vous pouvez l’enregistrer et y accéder à tout moment pour suivre les métriques de votre application.
c. Configurer des alertes dans Grafana
Grafana permet également de configurer des alertes en fonction de seuils spécifiques pour les métriques. Par exemple, vous pouvez être averti si le nombre d’erreurs HTTP dépasse un certain seuil.
- Créer une alerte :
- Dans le panneau de votre tableau de bord, cliquez sur « Alert » > « Create Alert ».
- Définissez la condition de l’alerte (par exemple, si le taux d’erreurs HTTP dépasse un certain pourcentage).
- Configurer les notifications :
- Vous pouvez envoyer des notifications par email, Slack, ou d’autres canaux lorsque l’alerte est déclenchée.
4. Bonnes pratiques et conseils
- Scruter régulièrement des métriques : Configurez Prometheus pour scruter les métriques des applications à intervalles réguliers, généralement toutes les 15 ou 30 secondes.
- Stockage des données : Utilisez les mécanismes d’archivage de données ou les outils comme Thanos ou Cortex pour stocker de grandes quantités de données historiques.
- Optimisation des requêtes PromQL : Évitez les requêtes complexes ou trop fréquentes qui peuvent surcharger Prometheus et affecter les performances.
- Sécuriser l’accès aux métriques : Exposez les métriques uniquement aux utilisateurs ou systèmes autorisés, en utilisant des mécanismes comme l’authentification HTTP ou des réseaux privés.
Conclusion
L’utilisation de Prometheus pour collecter les métriques et de Grafana pour visualiser ces données offre une solution puissante et flexible pour surveiller la performance et la santé de vos applications. Ensemble, ces outils vous permettent de détecter rapidement des problèmes, d’analyser les tendances, et de prendre des décisions éclairées pour améliorer la disponibilité et la fiabilité de vos services.

















