---
title: "Monitoring système Linux"
domain: sysadmin
subdomain: linux
type: snippet
tags: [linux, monitoring, top, htop, journalctl, systemctl, performance]
difficulty: beginner
status: stable
updated: "2025-05-10"
---
## Processus et CPU

```bash
# Vue temps réel
top
htop             # plus lisible, nécessite installation

# Snapshot one-shot
ps aux           # tous les processus
ps aux --sort=-%cpu | head -20  # top CPU
ps aux --sort=-%mem | head -20  # top RAM

# Trouver un processus
pgrep nginx
pidof nginx
ps aux | grep {{SERVICE}}

# Arborescence des processus
pstree -p
```

## Mémoire

```bash
# Vue globale
free -h

# Détail par processus
cat /proc/{{PID}}/status | grep -i vm

# Cache / buffers
vmstat -s
cat /proc/meminfo

# Swap
swapon --show
```

## Disque et I/O

```bash
# Utilisation des partitions
df -h
df -Th   # avec type de filesystem

# Utilisation par répertoire
du -sh /*
du -sh /var/log/* | sort -rh | head -10

# I/O en temps réel
iostat -x 2     # toutes les 2 secondes
iotop           # processus par I/O (besoin root)

# Inodes (fichiers)
df -i

# Trouver les gros fichiers
find / -type f -size +100M 2>/dev/null | sort -rh
```

## Réseau

```bash
# Connexions actives
ss -tuln        # ports en écoute
ss -tunp        # avec PID
netstat -tulnp  # alternative (ancien)

# Trafic temps réel
iftop           # par interface
nethogs         # par processus
nload           # graphique par interface

# Bande passante
sar -n DEV 1 5  # stats réseau sur 5 secondes
```

## Journaux système

```bash
# journalctl — systemd
journalctl -xe                           # erreurs récentes
journalctl -u {{SERVICE}}               # logs d'un service
journalctl -u {{SERVICE}} -f            # suivi en temps réel
journalctl --since "1 hour ago"
journalctl --since "2025-05-01" --until "2025-05-02"
journalctl -p err                        # seulement les erreurs
journalctl --disk-usage                  # taille des logs

# Logs classiques
tail -f /var/log/syslog
tail -f /var/log/auth.log
tail -100f /var/log/nginx/error.log

# Recherche dans les logs
journalctl -u nginx | grep "error"
grep "Failed password" /var/log/auth.log | tail -20
```

## Services systemd

```bash
# État d'un service
systemctl status {{SERVICE}}
systemctl is-active {{SERVICE}}
systemctl is-enabled {{SERVICE}}

# Gérer un service
systemctl start {{SERVICE}}
systemctl stop {{SERVICE}}
systemctl restart {{SERVICE}}
systemctl reload {{SERVICE}}    # rechargement config sans arrêt

# Démarrage automatique
systemctl enable {{SERVICE}}
systemctl disable {{SERVICE}}

# Lister tous les services
systemctl list-units --type=service --state=running
systemctl list-units --type=service --state=failed

# Recharger la configuration systemd
systemctl daemon-reload
```

## Charge système

```bash
# Charge moyenne (1, 5, 15 min)
uptime
cat /proc/loadavg

# Nombre de CPUs
nproc
lscpu | grep "^CPU(s)"

# Saturation : load avg > nb_cpus = système saturé
# Exemple : 8 CPUs, load 12 = saturé à 150%

# Top consommateurs
pidstat -u 1 5  # CPU par processus
pidstat -d 1 5  # I/O par processus
```

## Températures et matériel

```bash
# Températures CPU
sensors          # lm-sensors
cat /sys/class/thermal/thermal_zone*/temp

# Disques
smartctl -a /dev/sda | grep -i temp
hddtemp /dev/sda

# DMESG (erreurs matérielles)
dmesg -T | grep -i "error\|fail\|warn" | tail -30
```

<Tip>
Pour surveiller plusieurs serveurs, privilégier `htop` avec SSH ou des outils centralisés (Grafana + node_exporter). `watch -n 2 df -h` est utile pour monitorer l'espace disque qui se remplit.
</Tip>
