Journaliser la charge CPU sur un système Linux
Dans la cadre d’un audit d’un serveur Linux, il faut pouvoir disposer d’outils extrêmement légers susceptibles d’estimer le plus précisément la charge instantanée du CPU. En fait, les données de la charge CPU sont cumulées dans le fichier /proc/stat et vous devez calculer cette charge par différence entre deux mesures effectuées à deux moments différents.
Le script de journalisation de charge CPU
L’objet de ce script est d’envoyer toutes les secondes – sleep 1 – une partie des données issues du fichier /proc/stat dans le fichier /home/cpu.audit.
#!/bin/bash while true do row=$(grep -P "^cpu +" /proc/stat) dj=$(date +"%d/%m/%Y %H:%M:%S") row=${row/cpu/} row=${row// / } echo $dj$row>> /home/cpu.audit sleep 1 done
L’exploitation des données collectées et le calcul de charge
Pour calculer la charge instantanée, vous devez calculer la variation entre deux mesures, entre deux lignes. La 6e colonne représente le temps d’inactivité (idle) du CPU. La formule de calcul est donc la suivante :
1 - (temps_idle_ligne_courante-temps_idle_ligne_précédente)/(somme_de_toutes_les_colonnes_ligne_courante-somme_de_toutes_les_colonnes_ligne_précédente)