IOSTAT & IOTOP
0 - SURVEILLER LES PERFORMANCES D'UN SYSTÈME UNIX OU LINUX
- Surveiller les performances d'un système passe par les mesures d'activité du processeur CPU et des périphériques de stockage.
- Activité des disques : il est important de surveiller la vitesse de lecture et d'écriture, le nombre de requêtes par seconde et le temps d'attente.
- Utilisation du processeur : il est important de surveiller le pourcentage de temps passé par le processeur à attendre des opérations de disque.
Les 5 métriques du processeur
- %USER (Utilisateur) : Le temps que passe le processeur à exécuter les programmes des utilisateurs (comme un navigateur web, une base de données ou un script).
- %SYSTEM (Système) : Le temps que passe le processeur à exécuter les tâches du noyau (kernel) de l'ordinateur, comme la gestion de la mémoire ou les pilotes de périphériques.
- %IOWAIT (Attente E/S) : Le temps où le processeur est inactif car il attend qu'une opération sur le disque dur ou le réseau se termine. Un taux élevé montre souvent un goulet d'étranglement au niveau du stockage.
- %STEAL (Volé) : Le temps perdu par une machine virtuelle, parce que l'hyperviseur (le serveur physique hôte) utilise les ressources pour faire tourner d'autres machines virtuelles.
- %IDLE (Inactif) : Le temps où le processeur ne fait rien du tout, car aucune tâche n'a besoin d'être traitée.
1 - IOSTAT
Les statistiques de lecture et d'écriture du CPU et des disques
2 - IOTOP
Un top des valeurs de lecture et d'écriture du CPU et des disques
3 - IOSTAT & MRTG
Script MRTG IOwait
- Script permettant la récupération de la valeur IOwait issue de la commande iostat
#!/usr/bin/env bash
# Affiche le %iowait CPU courant (intervalle d'1 seconde), pas la moyenne depuis le boot.
set -euo pipefail
if ! command -v iostat >/dev/null 2>&1; then
echo "iostat introuvable. Installez le paquet sysstat." >&2
exit 1
fi
# LC_ALL=C : séparateur décimal point, colonnes stables.
# -c : statistiques CPU uniquement
# 1 2 : 1 s d'intervalle, 2 rapports (le 1er = depuis boot, le 2e = valeur courante)
iowait="$(
LC_ALL=C iostat -c 1 2 | awk '
/avg-cpu/ { getline; v = $4 }
END { if (v == "") exit 1; print v }
'
)"
printf '%s\n' "$iowait" "0"
- Instructions MRTG pour générer le graphique IOWAIT.
#--------------IOWAIT----------------
Target[iowait]: `/home/users/admin/mrtg/iostat-iowait.sh`
Options[iowait]: nopercent,growright,gauge,noinfo,nobanner
Title[iowait]: Iowait
MaxBytes[iowait]: 10
YLegend[iowait]: Iowait
ShortLegend[iowait]: iowait
LegendO[iowait]: Iowait1
Legend2[iowait]: Iowait2
PageTop[iowait]: Iowait via Iostat
WithPeak[iowait]:wmy
Legend4[iowait]: Iowait
#------------End number of processes------------------
Script MRTG Steal
- Script permettant la récupération de la valeur Steal issue de la commande iostat.
#!/usr/bin/env bash
# Affiche le %steal CPU courant (échantillon iostat, pas la moyenne depuis le boot).
set -euo pipefail
INTERVAL="${1:-1}"
if ! command -v iostat >/dev/null 2>&1; then
echo "iostat introuvable (paquet sysstat)." >&2
exit 1
fi
if ! [[ "$INTERVAL" =~ ^[0-9]+([.][0-9]+)?$ ]] || [[ "$INTERVAL" == "0" || "$INTERVAL" == "0.0" ]]; then
echo "Usage: $0 [intervalle_secondes]" >&2
echo " intervalle_secondes : durée de l'échantillon (défaut : 1)" >&2
exit 1
fi
# Premier rapport = moyenne depuis le boot ; le second = intervalle demandé.
# LC_ALL=C : séparateur décimal point, colonnes stables.
steal="$(
LC_ALL=C iostat -c "$INTERVAL" 2 \
| awk '/^avg-cpu/ { getline; steal = $5 } END { print steal }'
)"
if [[ -z "$steal" ]]; then
echo "Impossible de lire %steal dans la sortie iostat." >&2
exit 1
fi
printf '%s\n' "$steal" "0"
- Instructions MRTG pour générer le graphique STEAL.
#--------------STEAL----------------
Target[steal]: `/home/users/admin/mrtg/iostat-steal.sh`
Options[steal]: nopercent,growright,gauge,noinfo,nobanner
Title[steal]: Steal
MaxBytes[steal]: 50
YLegend[steal]: Steal
ShortLegend[steal]: steal
LegendO[steal]: Steal1
Legend2[steal]: Steal2
PageTop[steal]: Steal via Iostat
WithPeak[steal]:wmy
Legend4[steal]: Steal
#------------End number of processes------------------
|