Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

Utilisation de sysstat

De AJLSM
Aller à la navigation Aller à la recherche

Documentation : Utilisation de sysstat sous Linux

[modifier | modifier le wikicode]

1. Présentation de sysstat

[modifier | modifier le wikicode]

Le paquet sysstat regroupe plusieurs utilitaires de surveillance de la performance du système Linux, tels que : - sar – collecte et affiche des statistiques système ; - iostat – surveille les statistiques d’E/S (entrée/sortie) disque ; - mpstat – affiche l’utilisation des processeurs ; - pidstat – montre les statistiques par processus ; - sa1 / sa2 – scripts utilisés par le démon sysstat pour collecter et archiver les données.



2. Démarrage et service sysstat

[modifier | modifier le wikicode]

Pour démarrer la collecte automatique des statistiques :

sudo systemctl enable sysstat
sudo systemctl start sysstat

Le service exécute périodiquement les scripts sa1 et sa2 (via cron ou systemd timer) pour enregistrer les données dans :

/var/log/sysstat/

Les fichiers collectés sont généralement nommés selon la date :

sa07, sa08, sa09, ...

3. Impact sur les ressources

[modifier | modifier le wikicode]

CPU et mémoire

[modifier | modifier le wikicode]

sysstat a un impact très faible sur les ressources : - Moins de 1 % de CPU utilisé ; - Quelques mégaoctets de RAM ; - Temps d’exécution très court à chaque collecte.

Les fichiers générés dans /var/log/sysstat/ sont compacts : - Environ 200 à 500 Ko par jour sur une machine classique ; - Il est possible de définir une rétention (par défaut 7 jours).

La configuration se trouve dans :

/etc/sysconfig/sysstat   # (Red Hat, CentOS, Fedora)
ou
/etc/default/sysstat     # (Debian, Ubuntu)

Exemple de configuration :

# Intervalle de collecte (en minutes)
SA1_OPTIONS="-S DISK"

# Durée de rétention (en jours)
HISTORY=7

4. Utilisation des commandes principales

[modifier | modifier le wikicode]

Affiche les statistiques système enregistrées :

sar -u    # Utilisation CPU
sar -r    # Mémoire
sar -b    # E/S disque
sar -n DEV  # Réseau

Pour consulter les données d’un jour particulier :

sar -u -f /var/log/sysstat/sa07

Statistiques d’E/S par périphérique :

iostat -xz 1
  • -x : détails avancés ;
  • -z : n’affiche que les périphériques actifs ;
  • 1 : met à jour chaque seconde.

Surveillance des processeurs :

mpstat -P ALL 5

Statistiques par processus :

pidstat 2

5. Rotation et nettoyage des logs

[modifier | modifier le wikicode]

Les fichiers sont gérés automatiquement, mais vous pouvez les purger manuellement :

sudo rm /var/log/sysstat/sa*

Pour modifier la fréquence de collecte (par défaut toutes les 10 minutes), éditez :

/etc/cron.d/sysstat

ou pour les systèmes avec systemd timers :

systemctl list-timers | grep sysstat

6. Exemple de workflow complet

[modifier | modifier le wikicode]
  1. Démarrer et activer le service :

    sudo systemctl enable --now sysstat
    
  2. Vérifier qu’il fonctionne :

    systemctl status sysstat
    
  3. Laisser tourner quelques heures, puis consulter les stats :

    sar -q     # charge du système
    sar -r     # mémoire
    iostat -xz 1 10  # disques
    



7. Bonnes pratiques

[modifier | modifier le wikicode]
  • Rétention courte : 7 à 14 jours suffisent généralement ;
  • Centralisation : exporter les logs vers un outil comme Grafana, Netdata, Prometheus ;
  • Automatisation : ajouter des alertes si certaines valeurs dépassent des seuils (CPU > 90 %, I/O élevé, etc.) ;
  • Sécurité : limiter les permissions sur /var/log/sysstat (les logs peuvent contenir des informations sensibles sur la charge du système).



8. Références utiles

[modifier | modifier le wikicode]

9. Problèmes courants sous Ubuntu

[modifier | modifier le wikicode]

sa1 ne produit aucune sortie

[modifier | modifier le wikicode]

Sous Ubuntu, la commande :

sudo /usr/lib/sysstat/sa1 1 1

ne produit aucun message à l’écran. C’est normal : sa1 écrit directement les données binaires dans /var/log/sysstat/ sans afficher quoi que ce soit.

Vérifier que la collecte fonctionne

[modifier | modifier le wikicode]
  1. Vérifier la présence du script :

    ls -l /usr/lib/sysstat/sa1
    
  2. Vérifier la création du fichier de logs :

    ls -lh /var/log/sysstat/
    

    → Un fichier du jour comme sa07 doit apparaître.

  3. Créer le répertoire manuellement si besoin :

    sudo mkdir -p /var/log/sysstat
    sudo chown sysstat:sysstat /var/log/sysstat
    sudo chmod 755 /var/log/sysstat
    
  4. Forcer la collecte :

    sudo /usr/lib/sysstat/sa1 1 1
    
  5. Lire les statistiques :

    sar -u -f /var/log/sysstat/sa07
    

Si toujours aucun résultat

[modifier | modifier le wikicode]

Le binaire sadc est le véritable collecteur utilisé par sa1. On peut tester directement :

sudo /usr/lib/sysstat/sadc -F -L -S DISK 1 1 /var/log/sysstat/sa07

Cela crée manuellement un fichier de statistiques, même si le service sysstat n’est pas encore activé.

Étape Commande Attendu
Vérifier config grep ENABLED /etc/default/sysstat ENABLED="true"
Forcer collecte sudo /usr/lib/sysstat/sa1 1 1 Pas de sortie, mais fichier créé
Vérifier logs ls -lh /var/log/sysstat/ Fichier saXX présent
Lire stats sar -u -f /var/log/sysstat/saXX Lignes CPU visibles
Si rien sudo /usr/lib/sysstat/sadc ... Crée les stats manuellement





10. Configuration du cron sous Debian/Ubuntu (debian-sa1)

[modifier | modifier le wikicode]

Emplacement du fichier

[modifier | modifier le wikicode]

Le fichier de planification de la collecte se trouve ici :

/etc/cron.d/sysstat

Exemple de configuration par défaut

[modifier | modifier le wikicode]
# Activity reports every 10 minutes everyday
5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1

# Additional run at 23:59 to rotate the statistics file
59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2

Explication des lignes

[modifier | modifier le wikicode]
  • 5-55/10 → lance la collecte à :05, :15, :25, :35, :45, :55 toutes les heures.
  • debian-sa1 → wrapper Debian qui exécute sa1 uniquement si ENABLED="true" dans /etc/default/sysstat.
  • 59 23 → collecte supplémentaire juste avant minuit pour fermer la journée proprement.

Modifier la fréquence à 15 minutes

[modifier | modifier le wikicode]

Option A — Simple et standard (00/15/30/45)

[modifier | modifier le wikicode]
*/15 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2

Option B — Décalée de 5 minutes (05/20/35/50)

[modifier | modifier le wikicode]
5-50/15 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2

Étapes à suivre

[modifier | modifier le wikicode]
  1. Ouvrir le fichier :

    sudo nano /etc/cron.d/sysstat
    
  2. Modifier la ligne 5-55/10 ... selon la fréquence désirée.

  3. Enregistrer et quitter (Ctrl + O, Entrée, Ctrl + X).

  4. Redémarrer cron pour appliquer les changements :

    sudo systemctl restart cron
    
  5. Vérifier que la collecte fonctionne :

    grep sa1 /var/log/syslog | tail
    ls -lh /var/log/sysstat/
    





11. Configuration complète sous Debian/Ubuntu (ENABLED, SA1_OPTIONS, HISTORY)

[modifier | modifier le wikicode]

Fichier principal /etc/default/sysstat

[modifier | modifier le wikicode]

Sous Debian et Ubuntu, ce fichier ne contient qu’une seule variable gérée par debconf :

ENABLED="true"

⚠️ Important : > Le commentaire dans le fichier indique :
> “Please do not put other values, they will be overwritten by debconf!”
> Cela signifie que tout ajout (comme SA1_OPTIONS ou HISTORY) sera supprimé lors d’une mise à jour du paquet.



Ajouter des options personnalisées (SA1_OPTIONS et HISTORY)

[modifier | modifier le wikicode]

✅ Méthode propre : créer un fichier complémentaire /etc/sysstat/sysstat.conf

[modifier | modifier le wikicode]

Ce fichier n’est pas géré par debconf et ne sera donc jamais écrasé.
Crée-le avec la commande :

sudo nano /etc/sysstat/sysstat.conf

Ajoute ensuite :

# Options pour la collecte des statistiques (via sadc)
SA1_OPTIONS="-S DISK"

# Durée de rétention des fichiers journaliers (en jours)
HISTORY=7

Puis, dans le script /usr/lib/sysstat/debian-sa1, ajoute la ligne suivante juste après :

. /etc/default/sysstat

pour charger ce fichier supplémentaire :

[ -f /etc/sysstat/sysstat.conf ] && . /etc/sysstat/sysstat.conf

Ainsi, tes paramètres seront pris en compte à chaque exécution de debian-sa1, sans risque d’être perdus.



Définir la rétention dans /etc/cron.daily/sysstat (autre option)

[modifier | modifier le wikicode]

Une autre possibilité est de définir la variable directement dans le script de rotation :

sudo nano /etc/cron.daily/sysstat

Ajoute avant l’appel à sa2 :

HISTORY=7
export HISTORY

Par défaut, Debian garde 7 jours de logs.

Tu peux étendre cette durée à 14 ou 30 jours selon tes besoins.


Exemple complet pour Ubuntu

[modifier | modifier le wikicode]

/etc/default/sysstat

[modifier | modifier le wikicode]
ENABLED="true"

/etc/sysstat/sysstat.conf

[modifier | modifier le wikicode]
SA1_OPTIONS="-S DISK"
HISTORY=14

/etc/cron.d/sysstat

[modifier | modifier le wikicode]
*/15 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2

Élément Fichier Description
Activation du service /etc/default/sysstat Active la collecte (ENABLED=true)
Options sadc (type de stats) /etc/sysstat/sysstat.conf Exemple : SA1_OPTIONS="-S DISK"
Durée de rétention /etc/sysstat/sysstat.conf ou /etc/cron.daily/sysstat Exemple : HISTORY=7
Fréquence de collecte /etc/cron.d/sysstat Exemple : */15 * * * * pour 15 min