Les bases de données sont au cœur des applications, et leurs défaillances peuvent avoir de graves conséquences. Les outils de surveillance traditionnels passent souvent inaperçus face aux problèmes internes des SGBD. Prometheus est un système qui collecte et analyse les indicateurs en temps réel, aidant ainsi les ingénieurs SRE à prévenir et diagnostiquer les problèmes. Ce guide vous explique comment configurer la surveillance. PostgreSQL et MySQL avec Prométhée.
Prometheus : un outil de résolution de problèmes dans le monde des bases de données
Pas seulement une surveillance, mais un détective en temps réel :
Prometheus est un système open source conçu pour diagnostiquer les systèmes distribués complexes. Sa philosophie : « Chaque indicateur est un indice. Chaque graphique raconte l'histoire d'un problème. »
Comment fonctionne le détective :
- Modèle de traction :
- Prometheus collecte activement les métriques des systèmes surveillés.
- Multidimensionnalité :
- Chaque métrique possède des étiquettes (base de données, table, utilisateur).
- PromQL :
- Un langage de requête permettant d'étudier les relations entre les événements.
- Stockage de séries chronologiques :
- Toutes les données sont stockées pour une analyse post-mortem.
- Analogie avec le monde réel :
- Si Zabbix est un radar de police (suivant la vitesse), Prometheus est un système de surveillance par satellite, montrant *pourquoi* le conducteur a accéléré, où il se dirige et quels risques l'attendent.
Pourquoi Prométhée ? Les dures vérités
Avantages :
- Diagnostics de niveau expert :
- Il voit à l’intérieur du SGBD comme un chirurgien voit les organes.
- Enquête sur les causes profondes :
- Relie les échecs de la base de données aux actions de l'application.
- Tranquillité d'esprit :
- Alertes automatiques pour les problèmes *avant* qu'ils ne deviennent catastrophiques.
- Écosystème Open Source :
- Grafana pour la visualisation, Alertmanager pour les notifications.
Inconvénients :
- Courbe d'apprentissage:
- Nécessite une compréhension approfondie des composants internes du SGBD.
- L'utilisation des ressources:
- Le stockage métrique grandit comme une boule de neige.
- Pas de stockage à long terme :
- Par défaut, conserve les données pendant 15 jours seulement.
Fait concret :
- 68 % des entreprises utilisant Prometheus pour la surveillance de leurs bases de données ont découvert des problèmes cachés dont elles n'avaient pas conscience depuis des années.
Caractéristiques uniques : pourquoi cela change la donne
1. Indicateurs clés :
- Temps d'exécution des transactions avec répartitions des 95e et 99e percentiles.
- Efficacité du cache tampon, non pas en pourcentage, mais en tant que prédiction du temps jusqu'à l'effondrement.
2. Enquête sur les relations :
// Find users whose queries cause locks
pg_blocked_processes
* on (instance) group_left (usename)
pg_stat_activity{state="active"}
3. Analyse prédictive:
// Predict when tablespace will run out
predict_linear(pg_tablespace_size[24h], 86400 * 30)
Déploiement de Prometheus : pas une bataille, juste 5 minutes de travail
Étape 1 - Installation via Helm (Kubernetes):
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack
Étape 2 - Configuration des serveurs physiques (docker-compose) :
version: '3'
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
Étape 3 - Configurer `prometheus.yml` (fragment) :
scrape_configs:
- job_name: 'postgres'
static_configs:
- targets: ['postgres-host:9187']
- job_name: 'mysql'
static_configs:
- targets: ['mysql-host:9104']
Configuration de la collecte de mesures : outils pour des analyses approfondies
Pour PostgreSQL:
Installer postgres_exporter :
docker run -d --name postgres_exporter \
-e DATA_SOURCE_NAME="postgresql://user:pass@host:5432/?sslmode=disable" \
quay.io/prometheuscommunity/postgres-exporter
Indicateurs clés dans PromQL :
// Deadlocks
pg_deadlocks_total
// Cache efficiency
pg_stat_database_blks_hit / (pg_stat_database_blks_read + pg_stat_database_blks_hit)
Pour MySQL:
Déployer mysqld_exporter :
docker run -d --name mysql_exporter \
-e DATA_SOURCE_NAME="user:pass@(host:3306)/" \
prom/mysqld-exporter
Mesures approfondies :
// Replication queue
mysql_slave_status_seconds_behind_master
// Temporary table issues
mysql_global_status_created_tmp_tables
Indicateurs pour SRE : pas seulement des chiffres, mais des signaux de détresse
PostgreSQL: Ce qui rend les administrateurs fous
Tueur silencieux: pg_stat_activité_en_attente
Ce que cela veut dire: Nombre de requêtes « bloquées ».
Seuil d'alerte: > 5 pendant plus de 2 minutes.
Bombe à retardement: blocages de la base de données pg_stat
Comment analyser :
rate(pg_stat_database_deadlocks[5m]) > 0.1Effondrement imminent:pg_buffercache_usage_ratio
Valeur critique: 0.95 (nécessite une intervention immédiate) RAM expansion).
MySQL: Signes d'une crise cardiaque liée à une base de données
Symptôme mortel: mysql_slave_lag_seconds
Pourquoi c'est effrayant:
- Décalage de réplication > 30 secondes = risque de perte de données.
Menace cachée: mysql_innodb_row_lock_time_avg
Diagnostic:
mysql_innodb_row_lock_time_avg > 500- Précurseur d'échec : mysql_threads_running
Mesures d’urgence :
- Si > 100, arrêtez immédiatement les requêtes de longue durée.
Tueurs de performances universels :
// Transaction cannibals
rate(pg_stat_database_xact_commit[1m]) / rate(pg_stat_database_xact_rollback[1m]) < 10 // Disk apocalypse rate(node_disk_io_time_seconds_total[1m]) > 0.8
La vie après la mise en œuvre : comment votre réalité change
Avant Prométhée :
- « La base de données est à nouveau lente. Redémarrons et prions. »
Après Prométhée :
- La requête de l'utilisateur `id=1347` sur la table `orders` bloque 5 transactions.
Cause : Jointure de boucle imbriquée sans index. Solution : Optimiser la requête ou ajouter un index.
Statistiques du monde réel :
Équipes utilisant Prometheus pour la surveillance des SGBD :
- Temps de diagnostic réduit de 83 %.
- Diminution des incidents P1/P0 de 40 %.
- Charge de travail DBA réduite de 65 %.
Prometheus ne se contente pas de présenter des indicateurs. Il fait de vous un visionnaire qui :
- Voit l'invisible :
- Comment la longue requête d'un seul utilisateur peut faire planter le système de milliers de personnes.
- Prédit l'avenir :
- Quand l'espace disque sera épuisé dans trois semaines.
- Comprend le passé :
- Pourquoi les performances ont chuté hier à 14h23.