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)

Journaliser la charge CPU sur un système Linux

 

Linux /