Chapitre 11.1 - Monitoring Système
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Monitorer CPU, mémoire, disque
- Utiliser top, htop, iotop
- Comprendre les métriques système
- Utiliser vmstat et iostat
- Configurer des alertes basiques
Outils de Monitoring
top - Temps Réel
# Interface interactive
top
# Options
top -u user1 # Par utilisateur
top -p 1234 # Processus spécifique
top -d 2 # Mise à jour toutes les 2 secondes
Métriques affichées:
- Load average
- CPU usage
- Mémoire (RAM, swap)
- Processus
htop - Version Améliorée
# Interface colorée
htop
# Installer si nécessaire
sudo apt install htop
Avantages:
- Interface intuitive
- Navigation facile
- Barres de progression
- Filtrage
iotop - I/O par Processus
# Monitorer I/O disque
sudo iotop
# Options
sudo iotop -o # Seulement actifs
sudo iotop -a # Accumulé
Métriques Système
CPU
# Utilisation CPU
top
htop
# Statistiques CPU
cat /proc/stat
mpstat # sysstat
# Load average
uptime
cat /proc/loadavg
# Interprétation:
# < nombre CPUs: OK
# = nombre CPUs: Utilisation complète
# > nombre CPUs: Surcharge
Mémoire
# Vue d'ensemble
free -h
# Détails
cat /proc/meminfo
# Par processus
ps aux --sort=-%mem | head
# Statistiques
vmstat -s
Disque
# Espace disque
df -h
# Utilisation par répertoire
du -sh /home/*
# I/O statistiques
iostat -x 1
# Par processus
sudo iotop
Outils Avancés
vmstat - Statistiques Système
# Statistiques toutes les secondes
vmstat 1
# Colonnes importantes:
# r: Processus en attente CPU
# b: Processus bloqués
# swpd: Swap utilisé
# free: Mémoire libre
# si/so: Swap in/out
# us/sy/id: CPU user/system/idle
iostat - I/O Statistiques
# Installer
sudo apt install sysstat
# Statistiques I/O
iostat -x 1
# Colonnes:
# %util: Utilisation disque
# r/s, w/s: Lectures/écritures par seconde
# rkB/s, wkB/s: KB/s
sar - System Activity Reporter
# Historique CPU
sar -u
# Historique mémoire
sar -r
# Historique I/O
sar -b
# En temps réel
sar -u 1 10 # CPU, 1 seconde, 10 fois
Scripts de Monitoring
Monitoring Basique
#!/bin/bash
# Script monitoring simple
echo "=== CPU ==="
top -bn1 | grep "Cpu(s)" | awk '{print $2}'
echo "=== Mémoire ==="
free -h | grep Mem
echo "=== Disque ==="
df -h / | tail -1
echo "=== Load Average ==="
uptime
Monitoring avec Alertes
#!/bin/bash
# Monitoring avec alertes
THRESHOLD_CPU=80
THRESHOLD_MEM=80
THRESHOLD_DISK=80
# CPU
CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | sed 's/%us,//')
if (( $(echo "$CPU > $THRESHOLD_CPU" | bc -l) )); then
echo "ALERTE: CPU à ${CPU}%"
fi
# Mémoire
MEM=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')
if [ "$MEM" -gt "$THRESHOLD_MEM" ]; then
echo "ALERTE: Mémoire à ${MEM}%"
fi
# Disque
DISK=$(df -h / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK" -gt "$THRESHOLD_DISK" ]; then
echo "ALERTE: Disque à ${DISK}%"
fi
Monitoring Cron
Tâche Planifiée
# /etc/cron.d/monitoring
# Monitoring toutes les 5 minutes
*/5 * * * * root /usr/local/bin/monitor.sh >> /var/log/monitoring.log 2>&1
Script avec Logging
#!/bin/bash
# /usr/local/bin/monitor.sh
LOG="/var/log/monitoring.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
{
echo "=== $DATE ==="
echo "CPU: $(top -bn1 | grep 'Cpu(s)' | awk '{print $2}')"
echo "Mémoire: $(free -h | grep Mem | awk '{print $3"/"$2}')"
echo "Disque: $(df -h / | tail -1 | awk '{print $5}')"
echo "Load: $(uptime | awk -F'load average:' '{print $2}')"
echo "---"
} >> "$LOG"
Résumé
Dans ce chapitre, vous avez appris:
Outils: top, htop, iotop, vmstat, iostat, sar
Métriques: CPU, mémoire, disque, load average
Monitoring: Scripts automatiques, alertes
Cron: Planification monitoring régulier
Pratique: Surveillance continue, détection problèmes
Prochaines Étapes
Chapitre 11.2: Gestion des Logs
Chapitre 11.3: Monitoring Crons et Alertes
Chapitre créé le: Décembre 2024