En utilisant sar, vous pouvez surveiller les performances de divers sous-systèmes Linux (CPU, Mémoire, E/S..) en temps réel temps.
À l'aide de sar, vous pouvez également collecter toutes les données de performance de manière continue, les stocker et effectuer une analyse historique pour identifier les goulots d'étranglement.
Sar fait partie du package sysstat.
Cet article explique comment installer et configurer le package sysstat (qui contient l'utilitaire sar) et explique comment surveiller les statistiques de performances Linux suivantes à l'aide de sar.
- Utilisation collective du processeur
- Statistiques individuelles du processeur
- Mémoire utilisée et disponible
- Espace d'échange utilisé et disponible
- Activités d'E/S globales du système
- Activités d'E/S de chaque appareil
- Statistiques de changement de contexte
- Exécuter la file d'attente et charger les données moyennes
- Statistiques du réseau
- Rapport de données sar à partir d'un moment précis
C'est le seul guide dont vous aurez besoin pour l'utilitaire sar. Alors, mettez-le en signet pour votre future référence.
Je. Installer et configurer Sysstat
Installer le package Sysstat
Tout d'abord, assurez-vous que la dernière version de sar est disponible sur votre système. Installez-le en utilisant l'une des méthodes suivantes en fonction de votre distribution.
sudo apt-get install sysstat (or) yum install sysstat (or) rpm -ivh sysstat-10.0.0-1.i586.rpm
Installer Sysstat à partir de la source
Téléchargez la dernière version à partir de la page de téléchargement de sysstat.
Vous pouvez également utiliser wget pour télécharger le
wget http://pagesperso-orange.fr/sebastien.godard/sysstat-10.0.0.tar.bz2 tar xvfj sysstat-10.0.0.tar.bz2 cd sysstat-10.0.0 ./configure --enable-install-cron
Remarque : Assurez-vous de passer l'option –enable-install-cron. Cela fait automatiquement ce qui suit pour vous. Si vous ne configurez pas sysstat avec cette option, vous devez faire ce sale boulot vous-même manuellement.
- Crée /etc/rc.d/init.d/sysstat
- Crée des liens appropriés à partir des répertoires /etc/rc.d/rc*.d/ vers /etc/rc.d/init.d/sysstat pour démarrer le sysstat automatiquement pendant le processus de démarrage de Linux.
- Par exemple, /etc/rc.d/rc3.d/S01sysstat est automatiquement lié à /etc/rc.d/init.d/sysstat
Après le ./configure, installez-le comme indiqué ci-dessous.
make make install
Remarque : Cela installera sar et d'autres utilitaires systat sous /usr/local/bin
Une fois installé, vérifiez la version sar en utilisant "sar -V". La version 10 est la version stable actuelle de sysstat.
$ sar -V sysstat version 10.0.0 (C) Sebastien Godard (sysstat orange.fr)
Enfin, assurez-vous que sar fonctionne. Par exemple, ce qui suit donne les statistiques du processeur système 3 fois (avec 1 seconde d'intervalle).
$ sar 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:27:32 PM CPU %user %nice %system %iowait %steal %idle 01:27:33 PM all 0.00 0.00 0.00 0.00 0.00 100.00 01:27:34 PM all 0.25 0.00 0.25 0.00 0.00 99.50 01:27:35 PM all 0.75 0.00 0.25 0.00 0.00 99.00 Average: all 0.33 0.00 0.17 0.00 0.00 99.50
Utilitaires faisant partie de Sysstat
Voici les autres utilitaires sysstat.
- SAR collecte et affiche TOUTES les statistiques d'activité du système.
- sadc signifie "collecteur de données d'activité du système". Il s'agit de l'outil sar backend qui collecte les données.
- sa1 stocke les activités du système dans un fichier de données binaires. sa1 dépend de sadc à cette fin. sa1 s'exécute à partir de cron.
- sa2 crée un résumé quotidien des statistiques collectées. sa2 s'exécute à partir de cron.
- triste peut générer un rapport sar au format CSV, XML et divers autres formats. Utilisez-le pour intégrer les données sar à d'autres outils.
- iostat génère des statistiques CPU, E/S
- mpstat affiche les statistiques du processeur.
- pidstat rapporte des statistiques basées sur l'identifiant de processus (PID)
- nfsiostat affiche les statistiques d'E/S NFS.
- cifsiostat génère des statistiques CIFS.
Cet article se concentre sur les principes de base de sysstat et l'utilitaire sar.
Collectez les statistiques sar à l'aide de la tâche cron - sa1 et sa2
Créez un fichier sysstat sous le répertoire /etc/cron.d qui collectera les données sar historiques.
# vi /etc/cron.d/sysstat */10 * * * * root /usr/local/lib/sa/sa1 1 1 53 23 * * * root /usr/local/lib/sa/sa2 -A
Si vous avez installé sysstat à partir des sources, l'emplacement par défaut de sa1 et sa2 est /usr/local/lib/sa. Si vous avez installé en utilisant la méthode de mise à jour de votre distribution (par exemple :yum, up2date ou apt-get), il peut s'agir de /usr/lib/sa/sa1 et /usr/lib/sa/sa2.
Remarque :Pour comprendre les entrées cron, lisez Linux Crontab :15 exemples de tâches Cron impressionnants.
/usr/local/lib/sa/sa1
- Cela s'exécute toutes les 10 minutes et collecte les données sar à des fins de référence historique.
- Si vous souhaitez collecter des statistiques sar toutes les 5 minutes, remplacez */10 par */5 dans le fichier /etc/cron.d/sysstat ci-dessus.
- Ceci écrit les données dans le fichier /var/log/sa/saXX. XX est le jour du mois. Le fichier saXX est un fichier binaire. Vous ne pouvez pas afficher son contenu en l'ouvrant dans un éditeur de texte.
- Par exemple, si aujourd'hui est le 26e jour du mois, sa1 écrit les données sar dans /var/log/sa/sa26
- Vous pouvez transmettre deux paramètres à sa1 :intervalle (en secondes) et nombre.
- Dans l'exemple crontab ci-dessus :sa1 1 1 signifie que sa1 collecte les données sar 1 fois avec un intervalle de 1 seconde (toutes les 10 minutes).
/usr/local/lib/sa/sa2
- Ceci s'exécute vers minuit (à 23h53) pour créer le rapport récapitulatif quotidien des données sar.
- sa2 crée le fichier /var/log/sa/sarXX (notez qu'il est différent du fichier saXX créé par sa1). Ce fichier sarXX créé par sa2 est un fichier ascii que vous pouvez afficher dans un éditeur de texte.
- Cela supprimera également les fichiers saXX datant de plus d'une semaine. Alors, écrivez un script shell rapide qui s'exécute chaque semaine pour copier les fichiers /var/log/sa/* dans un autre répertoire pour effectuer une analyse historique des données sar.
II. 10 exemples pratiques d'utilisation de Sar
Il existe deux façons d'invoquer sar.
- sar suivi d'une option (sans spécifier de fichier de données saXX). Cela recherchera le fichier de données saXX du jour en cours et rapportera les données de performance qui ont été enregistrées jusqu'à ce point pour le jour en cours.
- sar suivi d'une option, et en spécifiant en plus un fichier de données saXX à l'aide de l'option -f. Cela rapportera les données de performance pour ce jour particulier. c'est-à-dire que XX est le jour du mois.
Dans tous les exemples ci-dessous, nous allons vous expliquer comment visualiser certaines données de performances pour la journée en cours. Pour rechercher un jour spécifique, ajoutez "-f /var/log/sa/saXX" à la fin de la commande sar.
Toute la commande sar aura ce qui suit comme 1ère ligne dans sa sortie.
$ sar -u Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU)
- Linux 2.6.18-194.el5PAE :version du noyau Linux du système.
- (dev-db) – Le nom d'hôte où les données sar ont été collectées.
- 26/03/2011 :date à laquelle les données sar ont été collectées.
- _i686_ – L'architecture du système
- (8 CPU) – Nombre de CPU disponibles sur ce système. Sur les systèmes multicœurs, cela indique le nombre total de cœurs.
1. Utilisation du processeur de TOUS les processeurs (sar -u)
Cela donne l'utilisation CPU cumulée en temps réel de tous les processeurs. "1 3" signale toutes les 1 secondes un total de 3 fois. Vous vous concentrerez probablement sur le dernier champ "% inactif" pour voir la charge du processeur.
$ sar -u 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:27:32 PM CPU %user %nice %system %iowait %steal %idle 01:27:33 PM all 0.00 0.00 0.00 0.00 0.00 100.00 01:27:34 PM all 0.25 0.00 0.25 0.00 0.00 99.50 01:27:35 PM all 0.75 0.00 0.25 0.00 0.00 99.00 Average: all 0.33 0.00 0.17 0.00 0.00 99.50
Voici quelques variantes :
- sar-u Affiche l'utilisation du processeur pour la journée en cours qui a été collectée jusqu'à ce point.
- sar -u 1 3 Affiche l'utilisation du processeur en temps réel toutes les 1 secondes pendant 3 fois.
- sar -u TOUS Identique à "sar -u" mais affiche des champs supplémentaires.
- sar -u TOUS 1 3 Identique à "sar -u 1 3" mais affiche des champs supplémentaires.
- sar -u -f /var/log/sa/sa10 Affiche l'utilisation du processeur pour le 10e jour du mois à partir du fichier sa10.
2. Utilisation du processeur d'un processeur ou d'un cœur individuel (sar -P)
Si vous avez 4 cœurs sur la machine et que vous souhaitez voir ce que font les cœurs individuels, procédez comme suit.
"-P ALL" indique qu'il doit afficher des statistiques pour TOUS les cœurs individuels.
Dans l'exemple suivant, sous "CPU", les colonnes 0, 1, 2 et 3 indiquent les numéros de cœur de processeur correspondants.
$ sar -P ALL 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:34:12 PM CPU %user %nice %system %iowait %steal %idle 01:34:13 PM all 11.69 0.00 4.71 0.69 0.00 82.90 01:34:13 PM 0 35.00 0.00 6.00 0.00 0.00 59.00 01:34:13 PM 1 22.00 0.00 5.00 0.00 0.00 73.00 01:34:13 PM 2 3.00 0.00 1.00 0.00 0.00 96.00 01:34:13 PM 3 0.00 0.00 0.00 0.00 0.00 100.00
"-P 1" indique qu'il doit afficher les statistiques uniquement pour le 2ème Core. (Notez que le numéro de base commence à partir de 0).
$ sar -P 1 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:36:25 PM CPU %user %nice %system %iowait %steal %idle 01:36:26 PM 1 8.08 0.00 2.02 1.01 0.00 88.89
Voici quelques variantes :
- sar -P ALL Affiche l'utilisation du processeur ventilée par tous les cœurs pour la journée en cours.
- sar -P ALL 1 3 Affiche l'utilisation du processeur en temps réel pour TOUS les cœurs toutes les 1 secondes pendant 3 fois (ventilée par tous les cœurs).
- sar-P 1 Affiche l'utilisation du processeur pour le cœur numéro 1 pour la journée en cours.
- sar -P 1 1 3 Affiche l'utilisation du processeur en temps réel pour le cœur numéro 1, toutes les secondes pendant 3 fois.
- sar -P ALL -f /var/log/sa/sa10 Affiche l'utilisation du processeur ventilée par tous les cœurs pour les 10 jours du mois à partir du fichier sa10.
3. Mémoire libre et utilisée (sar -r)
Cela rapporte les statistiques de la mémoire. "1 3" signale toutes les 1 secondes un total de 3 fois. Vous vous concentrerez très probablement sur "kbmemfree" et "kbmemused" pour la mémoire libre et utilisée.
$ sar -r 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 07:28:06 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact 07:28:07 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 07:28:08 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 07:28:09 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 Average: 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204
Voici quelques variantes :
- sar-r
- sar-r 1 3
- sar -r -f /var/log/sa/sa10
4. Espace d'échange utilisé (sar -S)
Cela rapporte les statistiques d'échange. "1 3" signale toutes les 1 secondes un total de 3 fois. Si "kbswpused" et "%swpused" sont à 0, alors votre système ne permute pas.
$ sar -S 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 07:31:06 AM kbswpfree kbswpused %swpused kbswpcad %swpcad 07:31:07 AM 8385920 0 0.00 0 0.00 07:31:08 AM 8385920 0 0.00 0 0.00 07:31:09 AM 8385920 0 0.00 0 0.00 Average: 8385920 0 0.00 0 0.00
Voici quelques variantes :
- sar -S
- sar -S 1 3
- sar -S -f /var/log/sa/sa10
Remarques :
- Utilisez "sar -R" pour identifier le nombre de pages mémoire libérées, utilisées et mises en cache par seconde par le système.
- Utilisez "sar -H" pour identifier les énormes pages (en Ko) qui sont utilisées et disponibles.
- Utilisez "sar -B" pour générer des statistiques de pagination. c'est-à-dire le nombre de Ko paginés (et sortants) du disque par seconde.
- Utilisez "sar -W" pour générer des statistiques d'échange de pages. c'est-à-dire l'échange de pages entrantes (et sortantes) par seconde.
5. Activités d'E/S globales (sar -b)
Cela rapporte les statistiques d'E/S. "1 3" signale toutes les 1 secondes un total de 3 fois.
Les champs suivants sont affichés dans l'exemple ci-dessous.
- tps – Transactions par seconde (ceci inclut à la fois la lecture et l'écriture)
- rtps – Lire les transactions par seconde
- wtps – Écrire des transactions par seconde
- pain/s – Octets lus par seconde
- bwrtn/s – Octets écrits par seconde
$ sar -b 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:56:28 PM tps rtps wtps bread/s bwrtn/s 01:56:29 PM 346.00 264.00 82.00 2208.00 768.00 01:56:30 PM 100.00 36.00 64.00 304.00 816.00 01:56:31 PM 282.83 32.32 250.51 258.59 2537.37 Average: 242.81 111.04 131.77 925.75 1369.90
Voici quelques variantes :
- sar-b
- sar-b 1 3
- sar -b -f /var/log/sa/sa10
Remarque : Utilisez "sar -v" pour afficher le nombre de gestionnaires d'inodes, de gestionnaires de fichiers et de pseudo-terminaux utilisés par le système.
6. Activités d'E/S de périphérique de bloc individuel (sar -d)
Pour identifier les activités par les périphériques de bloc individuels (c'est-à-dire un point de montage spécifique, ou LUN, ou partition), utilisez "sar -d"
$ sar -d 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:59:45 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 01:59:46 PM dev8-0 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM dev8-1 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM dev120-64 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM dev120-65 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM dev120-0 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM dev120-1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM dev120-96 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91 01:59:46 PM dev120-97 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91
Dans l'exemple ci-dessus, "DEV" indique le périphérique de bloc spécifique.
Par exemple :"dev53-1" signifie un périphérique bloc avec 53 comme numéro majeur et 1 comme numéro mineur.
Le nom du périphérique (colonne DEV) peut afficher le nom réel du périphérique (par exemple :sda, sda1, sdb1, etc.), si vous utilisez l'option -p (pretty print) comme indiqué ci-dessous.
$ sar -p -d 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:59:45 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 01:59:46 PM sda 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM sda1 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM sdb1 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM sdc1 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM sde1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM sdf1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM sda2 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91 01:59:46 PM sdb2 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91
Voici quelques variantes :
- sar-d
- sar -d 1 3
- sar -d -f /var/log/sa/sa10
- sar -p -d
7. Afficher le changement de contexte par seconde (sar -w)
Cela rapporte le nombre total de processus créés par seconde et le nombre total de changements de contexte par seconde. "1 3" signale toutes les 1 secondes un total de 3 fois.
$ sar -w 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 08:32:24 AM proc/s cswch/s 08:32:25 AM 3.00 53.00 08:32:26 AM 4.00 61.39 08:32:27 AM 2.00 57.00
Voici quelques variantes :
- sar-w
- sar -w 1 3
- sar -w -f /var/log/sa/sa10
8. Indique la file d'attente d'exécution et la charge moyenne (sar -q)
Cela rapporte la taille de la file d'attente d'exécution et la charge moyenne des dernières 1 minute, 5 minutes et 15 minutes. "1 3" signale toutes les 1 secondes un total de 3 fois.
$ sar -q 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 06:28:53 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 06:28:54 AM 0 230 2.00 3.00 5.00 0 06:28:55 AM 2 210 2.01 3.15 5.15 0 06:28:56 AM 2 230 2.12 3.12 5.12 0 Average: 3 230 3.12 3.12 5.12 0
Remarque : La colonne « bloquée » affiche le nombre de tâches actuellement bloquées et en attente de la fin de l'opération d'E/S.
Voici quelques variantes :
- sar-q
- sar -q 1 3
- sar -q -f /var/log/sa/sa10
9. Signaler les statistiques du réseau (sar -n)
Cela rapporte diverses statistiques du réseau. Par exemple :nombre de paquets reçus (transmis) via la carte réseau, statistiques d'échec de paquets, etc. "1 3" signale toutes les 1 secondes un total de 3 fois.
sar -n KEYWORD
KEYWORD peut être l'un des suivants :
- DEV :affiche les statistiques vitales des périphériques réseau pour eth0, eth1, etc.,
- EDEV – Afficher les statistiques de panne des périphériques réseau
- NFS – Affiche les activités du client NFS
- NFSD :affiche les activités du serveur NFS
- SOCK – Affiche les sockets utilisés pour IPv4
- IP :affiche le trafic réseau IPv4
- EIP – Affiche les erreurs de réseau IPv4
- ICMP :affiche le trafic réseau ICMPv4
- EICMP – Affiche les erreurs réseau ICMPv4
- TCP :affiche le trafic réseau TCPv4
- ETCP – Affiche les erreurs de réseau TCPv4
- UDP :affiche le trafic réseau UDPv4
- SOCK6, IP6, EIP6, ICMP6, UDP6 sont pour IPv6
- ALL – Ceci affiche toutes les informations ci-dessus. La sortie sera très longue.
$ sar -n DEV 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:11:13 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 01:11:14 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 01:11:14 PM eth0 342.57 342.57 93923.76 141773.27 0.00 0.00 0.00 01:11:14 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10. Rapporter les données Sar à l'aide de l'heure de début (sar -s)
Lorsque vous affichez les données sar historiques du fichier /var/log/sa/saXX à l'aide de l'option "sar -f", il affiche toutes les données sar pour ce jour spécifique à partir de 12h00 pour ce jour.
En utilisant l'option "-s hh:mi:ss", vous pouvez spécifier l'heure de début. Par exemple, si vous spécifiez "sar -s 10:00:00", il affichera les données sar à partir de 10 h (au lieu de commencer à minuit) comme indiqué ci-dessous.
Vous pouvez combiner l'option -s avec une autre option sar.
Par exemple, pour signaler la charge moyenne le 26 de ce mois à partir de 10 h du matin, combinez les options -q et -s comme indiqué ci-dessous.
$ sar -q -f /var/log/sa/sa23 -s 10:00:01 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 10:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 10:10:01 AM 0 127 2.00 3.00 5.00 0 10:20:01 AM 0 127 2.00 3.00 5.00 0 ... 11:20:01 AM 0 127 5.00 3.00 3.00 0 12:00:01 PM 0 127 4.00 2.00 1.00 0
Il n'y a pas d'option pour limiter l'heure de fin. Il vous suffit de faire preuve de créativité et d'utiliser la commande head comme indiqué ci-dessous.
Par exemple, à partir de 10h, si vous voulez voir 7 entrées, vous devez rediriger la sortie ci-dessus vers "head -n 10".
$ sar -q -f /var/log/sa/sa23 -s 10:00:01 | head -n 10 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 10:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 10:10:01 AM 0 127 2.00 3.00 5.00 0 10:20:01 AM 0 127 2.00 3.00 5.00 0 10:30:01 AM 0 127 3.00 5.00 2.00 0 10:40:01 AM 0 127 4.00 2.00 1.00 2 10:50:01 AM 0 127 3.00 5.00 5.00 0 11:00:01 AM 0 127 2.00 1.00 6.00 0 11:10:01 AM 0 127 1.00 3.00 7.00 2
Il y a beaucoup plus à couvrir dans la surveillance et le réglage des performances Linux. Nous ne faisons que commencer. Plus d'articles à venir dans la série de performances.
Articles précédents de la série sur la surveillance et le réglage des performances Linux :
- Introduction à la surveillance et à l'optimisation des performances de Linux
- 15 exemples pratiques de commandes principales Linux