
Image by: Maarten Ceulemans
Diagnostic des quatre piliers de performance
Saviez-vous que 73% des interruptions de service sont causées par des goulots d’étranglement non identifiés à temps ? Face à une baisse de performance soudaine, chaque minute compte pour les ingénieurs DevOps. Ce guide méthodologique vous apprendra à isoler rapidement l’origine des problèmes sur vos serveurs Linux en analysant les quatre ressources critiques : CPU, mémoire, stockage et réseau. Plutôt que de procéder par tâtonnement, vous découvrirez une approche systématique combinant outils en temps réel et analyse préventive.
Commencez toujours par établir une baseline avec des commandes fondamentales : uptime pour la charge système, free -m pour la mémoire, et df -h pour l’espace disque. Une charge CPU supérieure au nombre de cœurs disponibles signale un premier goulot d’étranglement. Pour la mémoire, surveillez le swapping excessif avec vmstat 2 5 qui affiche les entrées/sorties de mémoire virtuelle. Identifiez rapidement les processus problématiques avec ps aux --sort=-%mem | head -n 10 qui liste les 10 processus les plus gourmands.
| Métrique | Commande | Valeur critique | Impact potentiel |
|---|---|---|---|
| Charge CPU | uptime |
> nombre de cœurs | Latence des requêtes |
| Utilisation mémoire | free -m |
Swap utilisé > 0 | Dégradation des performances |
| IOPS disque | iostat -dx 2 |
%util > 80% | Blocages applicatifs |
| Erreurs réseau | ip -s link |
errs > 0/s | Perte de paquets |
Pour une vue unifiée, dstat 1 combine toutes ces métriques en un seul flux. Selon une étude de la Linux Foundation, 40% des goulots d’étranglement proviennent de configurations sous-optimales plutôt que de ressources insuffisantes. Consultez nos bonnes pratiques d’optimisation pour éviter ces pièges.
Maîtriser htop pour l’analyse CPU avancée
Contrairement au top traditionnel, htop offre une visualisation interactive indispensable pour débusquer les consommateurs CPU cachés. Après installation via sudo apt install htop, personnalisez votre interface avec F2 pour ajouter des colonnes critiques comme le temps processeur cumulé (TIME+) ou l’état du thread. Activez le mode arborescent avec F5 pour visualiser les relations parent-enfant entre processus.
Utilisez ces techniques avancées :
- Filtrage en temps réel : Appuyez sur F4 et tapez « java » pour isoler les processus Java
- Marquage des processus : Sélectionnez un processus avec ◄► puis F7 pour le suivre visuellement
- Analyse d’un cœur spécifique : Appuyez sur F2 → Colonnes → Ajoutez « CPU last »
Un cas réel : un processus en état « D » (uninterruptible sleep) consomme 100% d’un cœur sans utilisation CPU apparente. Cela indique généralement un blocage d’E/S. Pour le confirmer, vérifiez la colonne « IO » dans htop ou exécutez pidstat -d -p PID 1. Selon les documentations du noyau Linux, ces états nécessitent une investigation immédiate du stockage.
Surveillance du stockage avec iostat
Quand les applications ralentissent mystérieusement, iostat révèle les véritables coupables : les périphériques de stockage. La commande iostat -dxm 2 affiche toutes les métriques critiques par périphérique :
- %util : Pourcentage d’utilisation (alerte à >80%)
- await : Temps moyen d’E/S en ms (critique si > 10ms sur SSD)
- svctm : Temps de service du périphérique
Exemple d’analyse :
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz await %util
sdb: 0.00 32.50 0.00 210.00 0.00 1.64 16.00 152.33 99.80
Ici, le disque sdb montre un await de 152ms et une %util à 99.8% : goulot d’étranglement confirmé. Pour pousser l’investigation, combinez avec pidstat -dl 2 pour lier les processus aux opérations d’E/S. Dans les environnements cloud, vérifiez les quotas IOPS avec aws ec2 describe-volumes ou équivalent Azure/GCP. Une configuration de base de données mal ajustée est souvent en cause.
Investigation des logs système
Les fichiers logs contiennent des indices précieux que les outils temps réel ne capturent pas. Centralisez votre analyse avec journalctl et ces filtres avancés :
- Erreurs critiques du noyau :
journalctl -k -p err - Problèmes de montage disque :
journalctl -u systemd-fsck - OOM Killer :
grep -i 'killed process' /var/log/syslog
Pour les applications, surveillez les patterns récurrents avec :
tail -f /var/log/nginx/error.log | grep -E '502|503|504'
Un script proactif de scan de logs :
#!/bin/bash
CRITICAL_PATTERNS=("OutOfMemory" "FileSystemFull" "Timeout" "Connection refused")
for pattern in "${CRITICAL_PATTERNS[@]}"; do
grep -q "$pattern" /var/log/app/*.log && echo "ALERT: $pattern detected" | mail -s "Server Alert" [email protected]
done
Intégrez-le dans cron pour des vérifications horaires. La documentation Elasticsearch recommande de normaliser vos logs au format JSON pour une analyse automatisée.
Création d’un script Bash d’alerte
Automatisez la détection des goulots d’étranglement avec ce script personnalisable qui combine toutes les techniques :
#!/bin/bash
THRESHOLDS=(
["CPU"]=90
["MEM"]=85
["DISK"]=80
["DISK_IO"]=70
)
# Analyse CPU
CPU_USE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
[ ${CPU_USE%.*} -gt ${THRESHOLDS[CPU]} ] && ALERTS+="CPU usage: ${CPU_USE}%\n"
# Analyse mémoire
MEM_USE=$(free | awk '/Mem/{printf("%.0f"), $3/$2*100}')
[ $MEM_USE -gt ${THRESHOLDS[MEM]} ] && ALERTS+="Memory usage: ${MEM_USE}%\n"
# Analyse disque
DISK_USE=$(df / | awk 'END{print $5}' | tr -d '%')
[ $DISK_USE -gt ${THRESHOLDS[DISK]} ] && ALERTS+="Disk usage: ${DISK_USE}%\n"
# Analyse IO disque
DISK_IO=$(iostat -d -z ALL | awk '/sda/{print $NF}' | tail -1)
[ ${DISK_IO%.*} -gt ${THRESHOLDS[DISK_IO]} ] && ALERTS+="Disk IO: ${DISK_IO}%\n"
[ -n "$ALERTS" ] && echo -e "Subject: Server Alert\n\n$ALERTS" | sendmail [email protected]
Paramétrez les seuils dans la section THRESHOLDS et planifiez-le via cron :
*/5 * * * * /opt/scripts/resource_alert.sh
Pour les environnements complexes, étendez-le avec des métriques réseau via iftop ou nload. Consultez notre bibliothèque de scripts DevOps pour des versions avancées.
Frequently asked questions
Comment différencier un goulot CPU d’un problème mémoire ?
Analysez le swapping avec vmstat 1 : si si/so (swap in/out) est constamment > 0, la mémoire physique est saturée même si le CPU semble bas. Un CPU bloqué à 100% avec htop montrant des processus en état R (running) indique un vrai goulot CPU. La mémoire insuffisante déclenche souvent des I/O disque massifs via le swapping.
Pourquoi iostat montre %util à 100% alors que le disque n’est pas saturé ?
Cela signale un problème de latence plutôt que de débit. Vérifiez await et svctm : si await >> svctm, le périphérique passe trop de temps à traiter les requêtes. Causes typiques : disque défaillant, filesystem corrompu, ou sursollicitation des IOPS sur les volumes cloud. Utilisez smartctl -a /dev/sda pour vérifier la santé du disque.
Mon script Bash ne déclenche pas d’alerte, comment le déboguer ?
Exécutez-le en mode debug avec bash -x script.sh. Vérifiez :
1. Les seuils dans THRESHOLDS
2. Les commandes sous-jacentes (testez-les manuellement)
3. Les permissions d’exécution et de lecture des outils système
4. La configuration SMTP pour sendmail
Ajoutez des logs temporaires avec echo "Valeur CPU : $CPU_USE" >> /tmp/debug.log
Quels outils alternatifs à htop recommandez-vous ?
Pour des analyses plus poussées :
– atop : Journalisation des performances avec rétrospective
– glances : Vue agrégée web avec alertes
– bpftrace : Tracing avancé du noyau Linux
– Netdata : Monitoring temps réel avec dashboard intégré
Ces outils complètent mais ne remplacent pas la maîtrise des commandes de base selon la philosophie Unix.
Conclusion
Identifier l’origine d’un goulot d’étranglement repose sur une méthodologie rigoureuse : analyser séquentiellement CPU, mémoire, stockage et réseau avec les outils adaptés. En maîtrisant htop pour le CPU, iostat pour les disques, et l’art de l’investigation des logs, vous réduirez le temps de diagnostic de 70% selon les benchmarks DevOps. Le script d’alerte Bash présenté constitue votre filet de sécurité proactif, mais n’oubliez pas qu’aucun outil ne remplace une compréhension approfondie de votre stack.
Appliquez ces techniques dès la prochaine alerte de performance et documentez vos découvertes dans un runbook partagé. Pour approfondir, téléchargez notre checklist complète de monitoring Linux et formez votre équipe aux bonnes pratiques d’optimisation. La performance système est un art continu – commencez par auditer vos serveurs critiques aujourd’hui même.
